diff --git a/middleware/FilesManager/include/IFilesManager.h b/middleware/FilesManager/include/IFilesManager.h index 9317edd..3e9e656 100644 --- a/middleware/FilesManager/include/IFilesManager.h +++ b/middleware/FilesManager/include/IFilesManager.h @@ -41,6 +41,7 @@ enum class FileStatus }; constexpr unsigned long UNDEFINE_SERIAL_NUMBER = -1; constexpr unsigned long UNDEFINE_FILE_SIZE = 0; +constexpr unsigned long UNDEFINE_FILE_DURATION = 0; constexpr time_t UNDEFINE_CREATE_TIME = -1; typedef struct sync_file_info { diff --git a/middleware/FilesManager/src/sqlite3/SqliteHandle.cpp b/middleware/FilesManager/src/sqlite3/SqliteHandle.cpp index 5946d00..05012c7 100644 --- a/middleware/FilesManager/src/sqlite3/SqliteHandle.cpp +++ b/middleware/FilesManager/src/sqlite3/SqliteHandle.cpp @@ -120,24 +120,61 @@ bool SqliteHandle::SyncFile(const SyncFileInfo &info) LogError("Serial number is undefine.\n"); return false; } - if (UpdateCreateTime(mDb, info.mSerialNumber, info.mCreateTime_s) == false) { - return false; - } - if (UpdateFileName(mDb, info.mSerialNumber, info.mFileName) == false) { - return false; - } - if (UpdateFileSize(mDb, info.mSerialNumber, info.mFileSize) == false) { - return false; - } - if (UpdateFileStatus(mDb, info.mSerialNumber, info.mStatus) == false) { - return false; - } - if (UpdateFileType(mDb, info.mSerialNumber, info.mType) == false) { - return false; - } - if (UpdateFileDuration(mDb, info.mSerialNumber, info.mFileDuration) == false) { + std::stringstream sqlStream; + std::string comma = " "; + sqlStream << "UPDATE " FILES_TABLE " SET "; + if (UNDEFINE_CREATE_TIME != info.mCreateTime_s) { + sqlStream << comma << CREATE_TIME " = '" << info.mCreateTime_s << "'"; + comma = ", "; + } + if (info.mFileName.empty() == false) { + sqlStream << comma << FILE_PATH " = '" << info.mFileName << "'"; + comma = ", "; + } + if (UNDEFINE_FILE_SIZE != info.mFileSize) { + sqlStream << comma << FILE_SIZE " = '" << info.mFileSize << "'"; + comma = ", "; + } + if (FileStatus::END != info.mStatus) { + sqlStream << comma << FILE_STATUS " = '" << ConvertFileStatusToString(info.mStatus) << "'"; + comma = ", "; + } + if (FileCreateType::END != info.mType) { + sqlStream << comma << FILE_TYPE " = '" << ConvertFileTypeToString(info.mType) << "'"; + comma = ", "; + } + if (UNDEFINE_FILE_DURATION != info.mFileDuration) { + sqlStream << comma << FILE_DURATION " = '" << info.mFileDuration << "'"; + comma = ", "; + } + sqlStream << " WHERE " TABLE_KEY " = " << info.mSerialNumber << ";"; + LogInfo("Sql: %s\n", sqlStream.str().c_str()); + char *errMsg = nullptr; + int rc = SQLITE_UNDEFINE; + rc = sqlite3_exec(mDb, sqlStream.str().c_str(), nullptr, nullptr, &errMsg); + if (SQLITE_OK != rc) { + LogError("SQL error: %s\n", errMsg); + sqlite3_free(errMsg); return false; } + // if (UpdateCreateTime(mDb, info.mSerialNumber, info.mCreateTime_s) == false) { + // return false; + // } + // if (UpdateFileName(mDb, info.mSerialNumber, info.mFileName) == false) { + // return false; + // } + // if (UpdateFileSize(mDb, info.mSerialNumber, info.mFileSize) == false) { + // return false; + // } + // if (UpdateFileStatus(mDb, info.mSerialNumber, info.mStatus) == false) { + // return false; + // } + // if (UpdateFileType(mDb, info.mSerialNumber, info.mType) == false) { + // return false; + // } + // if (UpdateFileDuration(mDb, info.mSerialNumber, info.mFileDuration) == false) { + // return false; + // } return true; } bool SqliteHandle::SearchFiles(const std::vector &types, std::vector &info)