• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-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 #include "file_column.h"
17 
18 namespace OHOS {
19 namespace FileManagement {
20 namespace CloudDisk {
21 const std::string FileColumn::CLOUD_ID = "cloud_id";
22 const std::string FileColumn::IS_DIRECTORY = "isDirectory";
23 const std::string FileColumn::FILE_NAME = "file_name";
24 const std::string FileColumn::PARENT_CLOUD_ID = "parent_cloud_id";
25 const std::string FileColumn::FILE_SIZE = "file_size";
26 const std::string FileColumn::FILE_SHA256 = "sha256";
27 const std::string FileColumn::FILE_TIME_ADDED = "time_added";
28 const std::string FileColumn::FILE_TIME_EDITED = "time_edited";
29 const std::string FileColumn::FILE_TIME_RECYCLED = "time_recycled";
30 const std::string FileColumn::META_TIME_EDITED = "meta_time_edited";
31 const std::string FileColumn::FILE_TIME_VISIT = "time_visit";
32 const std::string FileColumn::DIRECTLY_RECYCLED = "directly_recycled";
33 const std::string FileColumn::VERSION = "version";
34 const std::string FileColumn::OPERATE_TYPE = "operateType";
35 const std::string FileColumn::SYNC_STATUS = "sync_status";
36 const std::string FileColumn::POSITION = "position";
37 const std::string FileColumn::THM_FLAG = "thm_flag";
38 const std::string FileColumn::LCD_FLAG = "lcd_flag";
39 const std::string FileColumn::NO_NEED_UPLOAD = "no_need_upload";
40 const std::string FileColumn::DIRTY_TYPE = "dirty_type";
41 const std::string FileColumn::MIME_TYPE = "mimetype";
42 const std::string FileColumn::FILE_TYPE = "file_type";
43 const std::string FileColumn::FILE_CATEGORY = "file_category";
44 const std::string FileColumn::IS_FAVORITE = "isFavorite";
45 const std::string FileColumn::FILE_STATUS = "file_status";
46 const std::string FileColumn::ROW_ID = "rowid";
47 const std::string FileColumn::CHECK_FLAG = "check_flag";
48 const std::string FileColumn::ROOT_DIRECTORY = "root_directory";
49 const std::string FileColumn::ATTRIBUTE = "attribute";
50 const std::string FileColumn::FILES_TABLE = "CloudDisk";
51 const std::string FileColumn::PARENT_CLOUD_ID_INDEX = "parentCloudId_index";
52 const std::string FileColumn::SRC_CLOUD_ID = "src_cloud_id";
53 const std::string FileColumn::THM_SIZE = "thm_size";
54 const std::string FileColumn::LCD_SIZE = "lcd_size";
55 const std::string FileColumn::SOURCE_CLOUD_ID = "source_cloud_id";
56 const std::string FileColumn::LOCAL_FLAG = "local_flag";
57 
58 //  description for LOCAL_FLAG shift
59 const uint64_t FileColumn::LOCAL_FLAG_MASK_ISCONFLICT = (1 << 0);
60 
61 const std::string FileColumn::CREATE_FILE_TABLE = "CREATE TABLE IF NOT EXISTS " +
62     FILES_TABLE + " (" +
63     CLOUD_ID + " TEXT PRIMARY KEY NOT NULL, " +
64     IS_DIRECTORY + " INT, " +
65     FILE_NAME + " TEXT NOT NULL, " +
66     PARENT_CLOUD_ID + " TEXT NOT NULL, " +
67     FILE_SIZE + " BIGINT, " +
68     FILE_SHA256 + " TEXT, " +
69     FILE_TIME_ADDED + " BIGINT, " +
70     FILE_TIME_EDITED + " BIGINT, " +
71     FILE_TIME_RECYCLED + " BIGINT DEFAULT 0, " +
72     META_TIME_EDITED + " BIGINT, " +
73     FILE_TIME_VISIT + " BIGINT DEFAULT 0, " +
74     DIRECTLY_RECYCLED + " INT DEFAULT 0, " +
75     VERSION + " BIGINT DEFAULT 0, " +
76     OPERATE_TYPE + " BIGINT DEFAULT 0, " +
77     SYNC_STATUS + " INT DEFAULT 0, " +
78     POSITION + " INT DEFAULT 1, " +
79     DIRTY_TYPE + " INT DEFAULT 1, " +
80     MIME_TYPE + " TEXT, " +
81     FILE_TYPE + " INT, " +
82     FILE_CATEGORY + " TEXT, " +
83     IS_FAVORITE + " INT DEFAULT 0, " +
84     FILE_STATUS + " INT DEFAULT 4, " +
85     CHECK_FLAG + " INT DEFAULT 0, " +
86     ROOT_DIRECTORY + " TEXT, " +
87     ATTRIBUTE + " TEXT, " +
88     THM_FLAG + " INT DEFAULT 0, " +
89     LCD_FLAG + " INT DEFAULT 0, " +
90     NO_NEED_UPLOAD + " INT DEFAULT 0, " +
91     SRC_CLOUD_ID + " TEXT, " +
92     THM_SIZE + " INT DEFAULT 0, " +
93     LCD_SIZE + " INT DEFAULT 0, " +
94     SOURCE_CLOUD_ID + " TEXT, " +
95     LOCAL_FLAG + " BIGINT DEFAULT 0)";
96 
97 const std::string FileColumn::CREATE_PARENT_CLOUD_ID_INDEX = "CREATE INDEX IF NOT EXISTS " +
98     PARENT_CLOUD_ID_INDEX + " ON " + FILES_TABLE +
99     " (" + PARENT_CLOUD_ID + ")";
100 
101 const std::string FileColumn::ADD_LOCAL_FLAG = "ALTER Table " + FILES_TABLE +
102     " ADD COLUMN " + LOCAL_FLAG + " BIGINT DEFAULT 0";
103 
104 const std::string FileColumn::ADD_IS_FAVORITE = "ALTER Table " + FILES_TABLE +
105     " ADD COLUMN " + IS_FAVORITE + " INT DEFAULT 0";
106 
107 const std::string FileColumn::ADD_FILE_STATUS = "ALTER Table " + FILES_TABLE +
108     " ADD COLUMN " + FILE_STATUS + " INT";
109 
110 const std::string FileColumn::SET_FILE_STATUS_DEFAULT = "UPDATE " + FILES_TABLE +
111     " SET " + FILE_STATUS + " = 4 WHERE " + FILE_STATUS + " IS NULL";
112 
113 const std::string FileColumn::ADD_CHECK_FLAG = "ALTER Table " + FILES_TABLE +
114     " ADD COLUMN " + CHECK_FLAG + " INT DEFAULT 0";
115 
116 const std::string FileColumn::ADD_ATTRIBUTE = "ALTER Table " + FILES_TABLE +
117     " ADD COLUMN " + ATTRIBUTE + " TEXT";
118 
119 const std::string FileColumn::ADD_THM_FLAG = "ALTER Table " + FILES_TABLE +
120     " ADD COLUMN " + THM_FLAG + " INT DEFAULT 0";
121 
122 const std::string FileColumn::ADD_LCD_FLAG = "ALTER Table " + FILES_TABLE +
123     " ADD COLUMN " + LCD_FLAG + " INT DEFAULT 0";
124 
125 const std::string FileColumn::ADD_UPLOAD_FLAG = "ALTER Table " + FILES_TABLE +
126     " ADD COLUMN " + NO_NEED_UPLOAD + " INT DEFAULT 0";
127 
128 const std::string FileColumn::ADD_SRC_CLOUD_ID = "ALTER Table " + FILES_TABLE +
129     " ADD COLUMN " + SRC_CLOUD_ID + " TEXT";
130 
131 const std::string FileColumn::ADD_THM_SIZE = "ALTER Table " + FILES_TABLE +
132     " ADD COLUMN " + THM_SIZE + " INT DEFAULT 0";
133 
134 const std::string FileColumn::ADD_LCD_SIZE = "ALTER Table " + FILES_TABLE +
135     " ADD COLUMN " + LCD_SIZE + " INT DEFAULT 0";
136 
137 const std::string FileColumn::ADD_SOURCE_CLOUD_ID = "ALTER Table " + FILES_TABLE +
138     " ADD COLUMN " + SOURCE_CLOUD_ID + " TEXT";
139 
140 const std::vector<std::string> FileColumn::FILE_SYSTEM_QUERY_COLUMNS = {
141     FILE_NAME,
142     CLOUD_ID,
143     PARENT_CLOUD_ID,
144     POSITION,
145     FILE_SIZE,
146     META_TIME_EDITED,
147     FILE_TIME_ADDED,
148     FILE_TIME_EDITED,
149     IS_DIRECTORY,
150     ROW_ID
151 };
152 
153 const std::vector<std::string> FileColumn::DISK_CLOUD_SYNC_COLUMNS = {
154     CLOUD_ID,
155     IS_DIRECTORY,
156     FILE_NAME,
157     PARENT_CLOUD_ID,
158     FILE_SIZE,
159     FILE_SHA256,
160     FILE_TIME_ADDED,
161     FILE_TIME_EDITED,
162     FILE_TIME_RECYCLED,
163     META_TIME_EDITED,
164     DIRECTLY_RECYCLED,
165     VERSION,
166     OPERATE_TYPE,
167     ROOT_DIRECTORY,
168     ATTRIBUTE,
169     THM_FLAG,
170     LCD_FLAG,
171     ROW_ID,
172     THM_SIZE,
173     LCD_SIZE,
174     LOCAL_FLAG
175 };
176 
177 //File copy requires all fields in the database, and one is added here when adding a new column ...
178 const std::vector<std::string> FileColumn::DISK_CLOUD_FOR_COPY = {
179     CLOUD_ID,
180     IS_DIRECTORY,
181     FILE_NAME,
182     PARENT_CLOUD_ID,
183     FILE_SIZE,
184     FILE_SHA256,
185     FILE_TIME_ADDED,
186     FILE_TIME_EDITED,
187     FILE_TIME_RECYCLED,
188     META_TIME_EDITED,
189     FILE_TIME_VISIT,
190     DIRECTLY_RECYCLED,
191     VERSION,
192     OPERATE_TYPE,
193     SYNC_STATUS,
194     POSITION,
195     DIRTY_TYPE,
196     MIME_TYPE,
197     FILE_TYPE,
198     FILE_CATEGORY,
199     IS_FAVORITE,
200     FILE_STATUS,
201     CHECK_FLAG,
202     ROOT_DIRECTORY,
203     ATTRIBUTE,
204     THM_FLAG,
205     LCD_FLAG,
206     NO_NEED_UPLOAD,
207     SRC_CLOUD_ID,
208 };
209 
210 const std::vector<std::string> FileColumn::LOCAL_COLUMNS = {
211     FILE_TIME_VISIT, SYNC_STATUS, POSITION, DIRTY_TYPE,
212     MIME_TYPE, IS_DIRECTORY, FILE_TYPE, FILE_CATEGORY,
213 };
214 
215 const std::vector<std::string> FileColumn::PULL_QUERY_COLUMNS = {
216     CLOUD_ID, FILE_TIME_RECYCLED, VERSION, DIRTY_TYPE, POSITION,
217     FILE_TIME_EDITED, FILE_SHA256, FILE_SIZE, FILE_NAME, PARENT_CLOUD_ID, ROW_ID,
218     IS_DIRECTORY, FILE_TIME_ADDED, FILE_TYPE, ROOT_DIRECTORY, DIRECTLY_RECYCLED,
219     THM_FLAG, LCD_FLAG,
220 };
221 
222 const std::vector<std::string> FileColumn::DISK_ON_UPLOAD_COLUMNS = {
223     CLOUD_ID,
224     PARENT_CLOUD_ID,
225     FILE_NAME,
226     FILE_TIME_EDITED,
227     META_TIME_EDITED,
228     FILE_TIME_RECYCLED,
229     ROW_ID,
230     THM_FLAG,
231     LCD_FLAG,
232     DIRTY_TYPE,
233 };
234 
235 const std::vector<std::string> FileColumn::DISK_CLOUD_FOR_THM_INSERT = {
236     THM_SIZE,
237     LCD_SIZE,
238     THM_FLAG,
239     LCD_FLAG,
240     CLOUD_ID,
241     FILE_TIME_RECYCLED,
242     FILE_NAME,
243     ROW_ID,
244 };
245 
246 const std::vector<std::string> FileColumn::EXT_ATTR_QUERY_COLUMNS = {
247     ATTRIBUTE,
248     POSITION,
249     DIRTY_TYPE,
250 };
251 } // namespace CloudDisk
252 } // namespace FileManagement
253 } // namespace OHOS
254