1 /*
2  * Copyright (C) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef OHOS_MEDIA_DATATRANSFER_GALLERY_DB_UPGRADE_H
16 #define OHOS_MEDIA_DATATRANSFER_GALLERY_DB_UPGRADE_H
17 
18 #include "rdb_store.h"
19 #include "db_upgrade_utils.h"
20 
21 namespace OHOS::Media {
22 namespace DataTransfer {
23 class GalleryDbUpgrade {
24 public:
25     int32_t OnUpgrade(std::shared_ptr<NativeRdb::RdbStore> galleryRdbPtr);
26 
27 private:
28     int32_t OnUpgrade(NativeRdb::RdbStore &store);
29     int32_t AddPhotoQualityOfGalleryMedia(NativeRdb::RdbStore &store);
30     int32_t AddRelativeBucketIdOfGalleryAlbum(NativeRdb::RdbStore &store);
31     int32_t GarbageAlbumUpgrade(NativeRdb::RdbStore &store);
32     int32_t GarbageAlbumCheckOrAddRelativeBucketId(NativeRdb::RdbStore &store);
33     int32_t GarbageAlbumCheckOrAddType(NativeRdb::RdbStore &store);
34     int32_t AddIndexOfGalleryAlbum(NativeRdb::RdbStore &store);
35     int32_t AddIndexOfAlbumPlugin(NativeRdb::RdbStore &store);
36 
37 private:
38     // Note: The column photo_quality's default value is 0.
39     // But we should set it to 1 for the existing data.
40     const std::string SQL_GALLERY_MEDIA_TABLE_ADD_PHOTO_QUALITY = "\
41         ALTER TABLE gallery_media ADD COLUMN photo_quality INTEGER DEFAULT 1;";
42     const std::string SQL_GALLERY_ALBUM_TABLE_ADD_RELATIVE_BUCKET_ID = "\
43         ALTER TABLE gallery_album ADD COLUMN relativeBucketId TEXT;";
44     const std::string SQL_GARBAGE_ALBUM_TABLE_ADD_RELATIVE_BUCKET_ID = "\
45         ALTER TABLE garbage_album ADD COLUMN relative_bucket_id TEXT;";
46     const std::string SQL_GARBAGE_ALBUM_TABLE_ADD_TYPE = "\
47         ALTER TABLE garbage_album ADD COLUMN type INTEGER DEFAULT 0;";
48     const std::string SQL_GALLERY_ALBUM_INDEX_RELATIVE_BUCKET_ID = "\
49         CREATE INDEX IF NOT EXISTS gallery_album_index_relativeBucketId ON gallery_album \
50         ( \
51             relativeBucketId \
52         );";
53     const std::string SQL_ALBUM_PLUGIN_INDEX_ALBUM_NAME = "\
54         CREATE INDEX IF NOT EXISTS album_plugin_index_album_name ON album_plugin \
55         ( \
56             album_name \
57         );";
58 
59 private:
60     DbUpgradeUtils dbUpgradeUtils_;
61 };
62 }  // namespace DataTransfer
63 }  // namespace OHOS::Media
64 #endif  // OHOS_MEDIA_DATATRANSFER_GALLERY_DB_UPGRADE_H