diff --git a/services/clouddisk_database/include/clouddisk_db_const.h b/services/clouddisk_database/include/clouddisk_db_const.h index 6470c11eefa042ef1df0bd0ba97e9b9871c21368..9819b0d50849f107df38d3f0cd75688fb3bae931 100644 --- a/services/clouddisk_database/include/clouddisk_db_const.h +++ b/services/clouddisk_database/include/clouddisk_db_const.h @@ -25,7 +25,7 @@ namespace CloudDisk { //rdb const std::string CLOUD_DISK_DATABASE_NAME = "clouddisk.db"; //rdb version -const int32_t CLOUD_DISK_RDB_VERSION = 17; +const int32_t CLOUD_DISK_RDB_VERSION = 18; enum { VERSION_ADD_PARENT_CLOUD_ID_INDEX = 2, VERSION_FIX_FILE_TRIGGER = 3, @@ -43,6 +43,7 @@ enum { VERSION_ADD_SRC_CLOUD_ID = 15, VERSION_ADD_THM_SIZE = 16, VERSION_ADD_LOCAL_FLAG = 17, + VERSION_ADD_FILE_OPERATION = 18, }; // drive kit const std::string DK_FILE_NAME = "fileName"; diff --git a/services/clouddisk_database/include/clouddisk_type_const.h b/services/clouddisk_database/include/clouddisk_type_const.h index 7ac29e7a126cd4c084c86d8be1a06c9f1342fce7..cf6a9d6bda5d04962f4e03d81e57d4e8fd04c65a 100644 --- a/services/clouddisk_database/include/clouddisk_type_const.h +++ b/services/clouddisk_database/include/clouddisk_type_const.h @@ -51,6 +51,11 @@ enum class OperationType : int64_t { OPEN }; +enum class FileOperation : int32_t { + NONE = 0, + NEED_DELETE +}; + enum FileStatus { TO_BE_UPLOADED = 0, UPLOADING = 1, diff --git a/services/clouddisk_database/include/file_column.h b/services/clouddisk_database/include/file_column.h index dbf9bd6668e640a1d7c112ac91f89a459acfabcd..6f4ae58162e489272a21db5c5cad89ac79edf69a 100644 --- a/services/clouddisk_database/include/file_column.h +++ b/services/clouddisk_database/include/file_column.h @@ -62,6 +62,7 @@ public: static const std::string LCD_SIZE; static const std::string SOURCE_CLOUD_ID; static const std::string LOCAL_FLAG; + static const std::string FILE_OPERATION; /* description for LOCAL_FLAG shift * |-----------------------bit 63 ~ 1 -------------|---bit 0----| @@ -113,6 +114,8 @@ public: static const std::string ADD_LOCAL_FLAG; + static const std::string ADD_FILE_OPERATION; + // Query FILES_TABLE for FileSystem static const std::vector FILE_SYSTEM_QUERY_COLUMNS; diff --git a/services/clouddisk_database/src/clouddisk_rdbstore.cpp b/services/clouddisk_database/src/clouddisk_rdbstore.cpp index 78154be161a6de09c432d48936189a7c40f1388b..679651b5eefdaa472b4d14d975c66d7f322806b2 100644 --- a/services/clouddisk_database/src/clouddisk_rdbstore.cpp +++ b/services/clouddisk_database/src/clouddisk_rdbstore.cpp @@ -2050,6 +2050,15 @@ static void VersionAddSrcCloudId(RdbStore &store) } } +static void VersionAddFileOperation(RdbStore &store) +{ + const string addFileOperation = FileColumn::ADD_FILE_OPERATION; + int32_t ret = store.ExecuteSql(addFileOperation); + if (ret != NativeRdb::E_OK) { + LOGE("add file_operation fail, err %{public}d", ret); + } +} + static void VersionAddThmSize(RdbStore &store) { const string addThmSize = FileColumn::ADD_THM_SIZE; @@ -2271,7 +2280,9 @@ int32_t CloudDiskDataCallBack::OnUpgradeExtend(RdbStore &store, int32_t oldVersi if (oldVersion < VERSION_ADD_LOCAL_FLAG) { VersionAddLocalFlag(store); } - + if (oldVersion < VERSION_ADD_FILE_OPERATION) { + VersionAddFileOperation(store); + } return NativeRdb::E_OK; } diff --git a/services/clouddisk_database/src/file_column.cpp b/services/clouddisk_database/src/file_column.cpp index efb16f0c487e069e5bb4d3383f63d4226db6d75f..3221075091870c843dff1d88fba08a03c7d456bc 100644 --- a/services/clouddisk_database/src/file_column.cpp +++ b/services/clouddisk_database/src/file_column.cpp @@ -54,6 +54,7 @@ const std::string FileColumn::THM_SIZE = "thm_size"; const std::string FileColumn::LCD_SIZE = "lcd_size"; const std::string FileColumn::SOURCE_CLOUD_ID = "source_cloud_id"; const std::string FileColumn::LOCAL_FLAG = "local_flag"; +const std::string FileColumn::FILE_OPERATION = "file_operation"; // description for LOCAL_FLAG shift const int64_t FileColumn::LOCAL_FLAG_MASK_ISCONFLICT = (1 << 0); @@ -92,7 +93,8 @@ const std::string FileColumn::CREATE_FILE_TABLE = "CREATE TABLE IF NOT EXISTS " THM_SIZE + " INT DEFAULT 0, " + LCD_SIZE + " INT DEFAULT 0, " + SOURCE_CLOUD_ID + " TEXT, " + - LOCAL_FLAG + " BIGINT DEFAULT 0)"; + LOCAL_FLAG + " BIGINT DEFAULT 0)" + + FILE_OPERATION + " INT DEFAULT 0, "; const std::string FileColumn::CREATE_PARENT_CLOUD_ID_INDEX = "CREATE INDEX IF NOT EXISTS " + PARENT_CLOUD_ID_INDEX + " ON " + FILES_TABLE + @@ -134,9 +136,12 @@ const std::string FileColumn::ADD_THM_SIZE = "ALTER Table " + FILES_TABLE + const std::string FileColumn::ADD_LCD_SIZE = "ALTER Table " + FILES_TABLE + " ADD COLUMN " + LCD_SIZE + " INT DEFAULT 0"; - const std::string FileColumn::ADD_SOURCE_CLOUD_ID = "ALTER Table " + FILES_TABLE + +const std::string FileColumn::ADD_SOURCE_CLOUD_ID = "ALTER Table " + FILES_TABLE + " ADD COLUMN " + SOURCE_CLOUD_ID + " TEXT"; +const std::string FileColumn::ADD_FILE_OPERATION = "ALTER Table " + FILES_TABLE + + " ADD COLUMN " + FILE_OPERATION + " INT DEFAULT 0"; + const std::vector FileColumn::FILE_SYSTEM_QUERY_COLUMNS = { FILE_NAME, CLOUD_ID, diff --git a/test/unittests/clouddisk_database/clouddisk_rdbstore_test.cpp b/test/unittests/clouddisk_database/clouddisk_rdbstore_test.cpp index 5e3729f356df297e4facbf58e4b3c4d6ec7b2226..cb11d3795be8bf749b90ed04e4b00ec61820153c 100644 --- a/test/unittests/clouddisk_database/clouddisk_rdbstore_test.cpp +++ b/test/unittests/clouddisk_database/clouddisk_rdbstore_test.cpp @@ -4048,6 +4048,21 @@ HWTEST_F(CloudDiskRdbStoreTest, OnUpgradeTest2, TestSize.Level1) EXPECT_EQ(ret, E_OK); } +/** + * @tc.name: OnUpgrade + * @tc.desc: Verify the CloudDiskDataCallBack::OnUpgrade function + * @tc.type: FUNC + */ +HWTEST_F(CloudDiskRdbStoreTest, OnUpgradeTest3, TestSize.Level1) +{ + RdbStoreMock store; + int32_t oldVersion = 17; + int32_t newVersion = 18; + CloudDiskDataCallBack CloudDiskDataCallBack; + int32_t ret = CloudDiskDataCallBack.OnUpgrade(store, oldVersion, newVersion); + EXPECT_EQ(ret, E_OK); +} + /** * @tc.name: CreateDentryFile * @tc.desc: Verify the CloudDiskRdbStore::CreateDentryFile function