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 16 #ifndef CLONE_SOURCE_H 17 #define CLONE_SOURCE_H 18 19 #include <string> 20 21 #include "result_set_utils.h" 22 #include "rdb_helper.h" 23 #include "backup_const_column.h" 24 25 namespace OHOS { 26 namespace Media { 27 enum class InsertType { 28 PHOTOS = 0, 29 PHOTO_ALBUM, 30 PHOTO_MAP, 31 ANALYSIS_ALBUM, 32 FACE_TAG_TBL, 33 IMG_FACE_TBL, 34 ANALYSIS_PHOTO_MAP, 35 AUDIOS, 36 }; 37 38 const std::string CREATE_FACE_TAG_TBL_FOR_ONCREATE = "CREATE TABLE IF NOT EXISTS " + VISION_FACE_TAG_TABLE + " (" + 39 FACE_TAG_COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 40 FACE_TAG_COL_TAG_ID + " TEXT, " + 41 FACE_TAG_COL_TAG_NAME + " TEXT, " + 42 FACE_TAG_COL_USER_OPERATION + " INT, " + 43 FACE_TAG_COL_GROUP_TAG + " TEXT, " + 44 FACE_TAG_COL_RENAME_OPERATION + " INT, " + 45 FACE_TAG_COL_CENTER_FEATURES + " BLOB, " + 46 FACE_TAG_COL_TAG_VERSION + " TEXT, " + 47 FACE_TAG_COL_USER_DISPLAY_LEVEL + " INT, " + 48 FACE_TAG_COL_TAG_ORDER + " INT, " + 49 FACE_TAG_COL_IS_ME + " INT, " + 50 FACE_TAG_COL_COVER_URI + " TEXT, " + 51 FACE_TAG_COL_COUNT + " INT, " + 52 FACE_TAG_COL_DATE_MODIFY + " BIGINT, " + 53 FACE_TAG_COL_ALBUM_TYPE + " INT, " + 54 FACE_TAG_COL_IS_REMOVED + " INT, " + 55 FACE_TAG_COL_ANALYSIS_VERSION + " TEXT)"; 56 const std::string CREATE_IMG_FACE_TBL_FOR_ONCREATE = "CREATE TABLE IF NOT EXISTS " + VISION_IMAGE_FACE_TABLE + " (" + 57 IMAGE_FACE_COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 58 IMAGE_FACE_COL_FILE_ID + " INT, " + 59 IMAGE_FACE_COL_FACE_ID + " TEXT, " + 60 IMAGE_FACE_COL_TAG_ID + " TEXT, " + 61 IMAGE_FACE_COL_SCALE_X + " REAL, " + 62 IMAGE_FACE_COL_SCALE_Y + " REAL, " + 63 IMAGE_FACE_COL_SCALE_WIDTH + " REAL, " + 64 IMAGE_FACE_COL_SCALE_HEIGHT + " REAL, " + 65 IMAGE_FACE_COL_LANDMARKS + " BLOB, " + 66 IMAGE_FACE_COL_PITCH + " REAL, " + 67 IMAGE_FACE_COL_YAW + " REAL, " + 68 IMAGE_FACE_COL_ROLL + " REAL, " + 69 IMAGE_FACE_COL_PROB + " REAL, " + 70 IMAGE_FACE_COL_TOTAL_FACES + " INT, " + 71 IMAGE_FACE_COL_FACE_VERSION + " TEXT, " + 72 IMAGE_FACE_COL_FEATURES_VERSION + " TEXT, " + 73 IMAGE_FACE_COL_FEATURES + " BLOB, " + 74 IMAGE_FACE_COL_FACE_OCCLUSION + " INT, " + 75 IMAGE_FACE_COL_ANALYSIS_VERSION + " TEXT, " + 76 IMAGE_FACE_COL_BEAUTY_BOUNDER_X + " REAL, " + 77 IMAGE_FACE_COL_BEAUTY_BOUNDER_Y + " REAL, " + 78 IMAGE_FACE_COL_BEAUTY_BOUNDER_WIDTH + " REAL, " + 79 IMAGE_FACE_COL_BEAUTY_BOUNDER_HEIGHT + " REAL, " + 80 IMAGE_FACE_COL_AESTHETICS_SCORE + " REAL, " + 81 IMAGE_FACE_COL_BEAUTY_BOUNDER_VERSION + " TEXT, " + 82 IMAGE_FACE_COL_IS_EXCLUDED + " INT)"; 83 84 class CloneOpenCall; 85 86 class CloneSource { 87 public: 88 void Init(const std::string &path, const std::vector<std::string> &tableList); 89 void Insert(const std::vector<std::string> &tableList); 90 void InsertByType(InsertType insertType); 91 void InsertPhoto(); 92 void InsertPhotoAlbum(); 93 void InsertPhotoMap(); 94 void InsertAnalysisAlbum(); 95 void InsertAnalysisPhotoMap(); 96 void InsertAudio(); 97 void InsertFaceTag(); 98 void InsertImgFaceTbl(); 99 std::shared_ptr<NativeRdb::RdbStore> cloneStorePtr_; 100 }; 101 102 class CloneOpenCall : public NativeRdb::RdbOpenCallback { 103 public: 104 int32_t OnCreate(NativeRdb::RdbStore &rdbStore) override; 105 int32_t OnUpgrade(NativeRdb::RdbStore &rdbStore, int oldVersion, int newVersion) override; 106 void Init(const std::vector<std::string> &tableList); 107 std::vector<std::string> createSqls_; 108 }; 109 } // namespace Media 110 } // namespace OHOS 111 #endif // CLONE_SOURCE_H