Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 15 additions & 11 deletions Interfaces/ObjectStorage/ObjectStorageManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,14 +143,15 @@ quint64 ObjectStorageManager::saveFile(
try {
QVariantMap SpOutVars = _uploadFiles.callSP(APICALLBOOM_PARAM,
"spUploadedFile_Create", {
{ "iPath", _path },
{ "iOriginalFileName", _file.Name },
{ "iFullTempPath", FullTempPath },
{ "iFileSize", _file.Size },
{ "iFileType", FileType },
{ "iMimeType", MimeType },
{ "iCreatorUserID", APICALLBOOM_PARAM.getActorID() },
{ "iLockedBy", ServerCommonConfigs::InstanceID.value() },
{ "iPath", _path },
{ "iOriginalFileName", _file.Name },
{ "iFullTempPath", FullTempPath },
{ "iSetTempFileNameToMD5", 1 },
{ "iFileSize", _file.Size },
{ "iFileType", FileType },
{ "iMimeType", MimeType },
{ "iCreatorUserID", APICALLBOOM_PARAM.getActorID() },
{ "iLockedBy", ServerCommonConfigs::InstanceID.value() },
})
.spDirectOutputs();

Expand All @@ -163,6 +164,9 @@ quint64 ObjectStorageManager::saveFile(
//move from temp to persistance location
// QString FileUUID = QUuid::createUuid().toString(QUuid::Id128);
QString oStoredFileName = SpOutVars.value("oStoredFileName").toString();
QString oTempFileName = SpOutVars.value("oTempFileName").toString();


TargomanDebug(5) << "***********************" << endl
<< "oStoredFileName" << oStoredFileName << endl
<< "QFile::encodeName()" << QFile::encodeName(oStoredFileName) << endl
Expand All @@ -171,11 +175,11 @@ quint64 ObjectStorageManager::saveFile(
<< "QString::toLocal8Bit()" << oStoredFileName.toLocal8Bit() << endl
;


// QString FullFileName = QString("%1/%2").arg(FullTempPath).arg(oStoredFileName);
// QByteArray FullFileName = QFile::encodeName(QString("%1/%2").arg(FullTempPath).arg(oStoredFileName));
QByteArray FullFileName = QString("%1/%2").arg(FullTempPath).arg(oStoredFileName).toUtf8();
QByteArray FullFileName = QString("%1/%2").arg(FullTempPath).arg(oTempFileName).toUtf8();

TargomanDebug(5) << "***********************" << "moving file [" << _file.TempName << "] to [" << FullFileName << "]";
TargomanDebug(5) << "moving file [" << _file.TempName << "] to [" << FullFileName << "]";
QFile::rename(_file.TempName, FullFileName);

//read and write by all
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
/* Migration File: m20221018_130831_Interfaces_ObjectStorage_make_filename_temp.sql */
/* CAUTION: don't forget to use {{dbprefix}} for schemas */

USE `{{dbprefix}}{{Schema}}`;

DROP PROCEDURE IF EXISTS `spUploadedFile_Create`;
DELIMITER //
CREATE PROCEDURE `spUploadedFile_Create`(
IN `iPath` VARCHAR(256),
IN `iOriginalFileName` VARCHAR(256),
IN `iFullTempPath` VARCHAR(512),
IN `iSetTempFileNameToMD5` TINYINT,
IN `iFileSize` BIGINT UNSIGNED,
IN `iFileType` VARCHAR(64),
IN `iMimeType` VARCHAR(128),
IN `iCreatorUserID` BIGINT UNSIGNED,
IN `iLockedBy` VARCHAR(50),
OUT `oStoredFileName` VARCHAR(256),
OUT `oTempFileName` VARCHAR(256),
OUT `oUploadedFileID` BIGINT UNSIGNED,
OUT `oQueueRowsCount` INT UNSIGNED
)
BEGIN
DECLARE vErr VARCHAR(500);
DECLARE vUploadedFileCounter BIGINT UNSIGNED;
DECLARE vExt VARCHAR(500);

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1 vErr = MESSAGE_TEXT;

/****************/
ROLLBACK;
/****************/

INSERT INTO tblActionLogs
SET tblActionLogs.atlBy_usrID = iCreatorUserID,
tblActionLogs.atlType = 'Upload.Error',
tblActionLogs.atlDescription = JSON_OBJECT(
"err", vErr,
"iPath", iPath,
"iOriginalFileName", iOriginalFileName,
"iFileSize", iFileSize,
"iFileType", iFileType,
"iMimeType", iMimeType,
"iFullTempPath", iFullTempPath,
"iCreatorUserID", iCreatorUserID,
"iLockedBy", iLockedBy,
"UploadedFileCounter", vUploadedFileCounter,
"StoredFileName", oStoredFileName,
"oTempFileName", oTempFileName,
"FileID", oUploadedFileID,
"QueuedCount", oQueueRowsCount
)
;

RESIGNAL;
END;

/****************/
START TRANSACTION;
/****************/

SET vUploadedFileCounter = NULL;

SELECT MAX(IFNULL(uflCounter, 0))
INTO vUploadedFileCounter
FROM tblUploadFiles
WHERE IFNULL(tblUploadFiles.uflPath, '') = IFNULL(iPath, '')
AND tblUploadFiles.uflOriginalFileName = iOriginalFileName
AND tblUploadFiles.uflCreatedBy_usrID = iCreatorUserID
;

IF ISNULL(vUploadedFileCounter) THEN
SET oStoredFileName = iOriginalFileName;
ELSE
SET vUploadedFileCounter = vUploadedFileCounter + 1;
SET oStoredFileName = fnApplyCounterToFileName(iOriginalFileName, vUploadedFileCounter);
END IF;

IF iSetTempFileNameToMD5 = 1 THEN
SET oTempFileName = {{dbprefix}}Common.fnCreateRandomMD5(); -- MD5(oStoredFileName);

SELECT SUBSTRING_INDEX(oStoredFileName, '.', -1) INTO vExt;

IF (LOCATE('.', oStoredFileName) != 0) AND (LENGTH(vExt)+1 != LENGTH(oStoredFileName)) THEN
SET oTempFileName = CONCAT(oTempFileName, '.', vExt);
END IF;
ELSE
SET oTempFileName = oStoredFileName;
END IF;

INSERT INTO tblUploadFiles
SET tblUploadFiles.uflPath = iPath,
tblUploadFiles.uflOriginalFileName = iOriginalFileName,
tblUploadFiles.uflCounter = vUploadedFileCounter,
tblUploadFiles.uflStoredFileName = oStoredFileName,
tblUploadFiles.uflSize = iFileSize,
tblUploadFiles.uflFileType = iFileType,
tblUploadFiles.uflMimeType = iMimeType,
tblUploadFiles.uflLocalFullFileName = CONCAT(iFullTempPath, '/', oTempFileName),
tblUploadFiles.uflCreatedBy_usrID = iCreatorUserID
;
SET oUploadedFileID = LAST_INSERT_ID();

INSERT INTO tblUploadQueue(
uqu_uflID
, uqu_ugwID
, uquLockedAt
, uquLockedBy
, uquCreatedBy_usrID
)
SELECT oUploadedFileID
, tblUploadGateways.ugwID
, IF(iLockedBy IS NULL OR iLockedBy='', NULL, NOW())
, IF(iLockedBy IS NULL OR iLockedBy='', NULL, iLockedBy)
, iCreatorUserID
FROM tblUploadGateways
WHERE tblUploadGateways.ugwStatus = 'A'
AND (tblUploadGateways.ugwAllowedFileTypes IS NULL
OR LOWER(tblUploadGateways.ugwAllowedFileTypes) LIKE CONCAT('%', iFileType, '%')
)
AND (tblUploadGateways.ugwAllowedMimeTypes IS NULL
OR LOWER(tblUploadGateways.ugwAllowedMimeTypes) LIKE CONCAT('%', iMimeType, '%')
)
AND (tblUploadGateways.ugwAllowedMinFileSize IS NULL
OR tblUploadGateways.ugwAllowedMinFileSize <= iFileSize
)
AND (tblUploadGateways.ugwAllowedMaxFileSize IS NULL
OR tblUploadGateways.ugwAllowedMaxFileSize >= iFileSize
)
AND (tblUploadGateways.ugwMaxFilesCount IS NULL
OR tblUploadGateways.ugwMaxFilesCount < tblUploadGateways.ugwCreatedFilesCount - tblUploadGateways.ugwDeletedFilesCount
)
AND (tblUploadGateways.ugwMaxFilesSize IS NULL
OR tblUploadGateways.ugwMaxFilesSize <= tblUploadGateways.ugwCreatedFilesSize - tblUploadGateways.ugwDeletedFilesSize + iFileSize
)
;
SET oQueueRowsCount = ROW_COUNT();

/* this is for next version
IF (oQueueRowsCount > 0) THEN
UPDATE tblUploadFiles
SET tblUploadFiles.uflStatus = 'Q'
WHERE tblUploadFiles.uflID = oUploadedFileID
;
END IF;
*/

INSERT INTO tblActionLogs
SET tblActionLogs.atlBy_usrID = iCreatorUserID,
tblActionLogs.atlType = 'UploadFile.Success',
tblActionLogs.atlDescription = JSON_OBJECT(
"iPath", iPath,
"iOriginalFileName", iOriginalFileName,
"iFileSize", iFileSize,
"iFileType", iFileType,
"iMimeType", iMimeType,
"iFullTempPath", iFullTempPath,
"iCreatorUserID", iCreatorUserID,
"iLockedBy", iLockedBy,
"UploadedFileCounter", vUploadedFileCounter,
"StoredFileName", oStoredFileName,
"oTempFileName", oTempFileName,
"FileID", oUploadedFileID,
"QueuedCount", oQueueRowsCount
)
;

/****************/
COMMIT;
/****************/
END//
DELIMITER ;