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