1 /* 2 * Copyright (C) 2021-2023 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 INTERFACES_INNERKITS_NATIVE_INCLUDE_MEDIA_DATA_ABILITY_CONST_H_ 17 #define INTERFACES_INNERKITS_NATIVE_INCLUDE_MEDIA_DATA_ABILITY_CONST_H_ 18 19 #include "medialibrary_type_const.h" 20 #include "media_column.h" 21 #include "userfilemgr_uri.h" 22 23 namespace OHOS { 24 namespace Media { 25 const int32_t MEDIA_RDB_VERSION = 15; 26 enum { 27 VERSION_ADD_CLOUD = 2, 28 VERSION_ADD_META_MODIFED = 3, 29 VERSION_MODIFY_SYNC_STATUS = 4, 30 VERSION_ADD_API10_TABLE = 5, 31 VERSION_MODIFY_DELETE_TRIGGER = 6, 32 VERSION_ADD_CLOUD_VERSION = 7, 33 VERSION_UPDATE_CLOUD_PATH = 8, 34 VERSION_UPDATE_API10_TABLE = 9, 35 VERSION_ADD_TABLE_TYPE = 10, 36 VERSION_ADD_PACKAGE_NAME = 11, 37 VERSION_ADD_CLOUD_ALBUM = 12, 38 VERSION_ADD_CAMERA_SHOT_KEY = 13, 39 /** 40 * Remove album count triggers for batch operation performance, 41 * update PhotoAlbum.count by a query and an update(in a single transaction of course) 42 * if number of assets in an album changes. 43 */ 44 VERSION_REMOVE_ALBUM_COUNT_TRIGGER = 14, 45 VERSION_ADD_ALL_EXIF = 15, 46 }; 47 48 enum { 49 MEDIA_API_VERSION_DEFAULT = 8, 50 MEDIA_API_VERSION_V9, 51 MEDIA_API_VERSION_V10, 52 }; 53 54 const std::string MEDIA_LIBRARY_VERSION = "1.0"; 55 56 const int32_t DEVICE_SYNCSTATUSING = 0; 57 const int32_t DEVICE_SYNCSTATUS_COMPLETE = 1; 58 59 const std::string MEDIA_DATA_DEVICE_PATH = "local"; 60 const std::string MEDIALIBRARY_TABLE = "Files"; 61 const std::string SMARTALBUM_TABLE = "SmartAlbum"; 62 const std::string SMARTALBUM_MAP_TABLE = "SmartMap"; 63 const std::string CATEGORY_SMARTALBUM_MAP_TABLE = "CategorySmartAlbumMap"; 64 const std::string MEDIATYPE_DIRECTORY_TABLE = "MediaTypeDirectory"; 65 const std::string DEVICE_TABLE = "Device"; 66 const std::string BUNDLE_PERMISSION_TABLE = "BundlePermission"; 67 const std::string MEDIA_DATA_ABILITY_DB_NAME = "media_library.db"; 68 69 const std::string BUNDLE_NAME = "com.ohos.medialibrary.medialibrarydata"; 70 71 const std::string ML_FILE_SCHEME = "file"; 72 const std::string ML_FILE_PREFIX = "file://"; 73 const std::string ML_FILE_URI_PREFIX = "file://media"; 74 const std::string ML_URI_NETWORKID = "networkid"; 75 const std::string ML_URI_NETWORKID_EQUAL = "?networkid="; 76 const std::string ML_URI_AUTHORITY = "media"; 77 const std::string ML_DATA_SHARE_SCHEME = "datashare"; 78 const std::string MEDIALIBRARY_DATA_ABILITY_PREFIX = "datashare://"; 79 const std::string MEDIALIBRARY_DATA_URI_IDENTIFIER = "/media"; 80 const std::string MEDIALIBRARY_MEDIA_PREFIX = MEDIALIBRARY_DATA_ABILITY_PREFIX + 81 MEDIALIBRARY_DATA_URI_IDENTIFIER; 82 const std::string MEDIALIBRARY_TYPE_AUDIO_URI = "/audio"; 83 const std::string MEDIALIBRARY_TYPE_VIDEO_URI = "/video"; 84 const std::string MEDIALIBRARY_TYPE_IMAGE_URI = "/image"; 85 const std::string MEDIALIBRARY_TYPE_FILE_URI = "/file"; 86 const std::string MEDIALIBRARY_TYPE_ALBUM_URI = "/album"; 87 const std::string MEDIALIBRARY_TYPE_SMARTALBUM_CHANGE_URI = "/smartalbum"; 88 const std::string MEDIALIBRARY_TYPE_DEVICE_URI = "/device"; 89 const std::string MEDIALIBRARY_TYPE_SMART_URI = "/smart"; 90 91 const std::string AUDIO_URI_PREFIX = ML_FILE_URI_PREFIX + MEDIALIBRARY_TYPE_AUDIO_URI; 92 const std::string VIDEO_URI_PREFIX = ML_FILE_URI_PREFIX + MEDIALIBRARY_TYPE_VIDEO_URI; 93 const std::string IMAGE_URI_PREFIX = ML_FILE_URI_PREFIX + MEDIALIBRARY_TYPE_IMAGE_URI; 94 const std::string FILE_URI_PREFIX = ML_FILE_URI_PREFIX + MEDIALIBRARY_TYPE_FILE_URI; 95 const std::string ALBUM_URI_PREFIX = ML_FILE_URI_PREFIX + MEDIALIBRARY_TYPE_ALBUM_URI; 96 97 const std::string URI_TYPE_PHOTO = "Photo"; 98 const std::string URI_TYPE_AUDIO_V10 = "Audio"; 99 const std::string URI_TYPE_PHOTO_ALBUM = "PhotoAlbum"; 100 constexpr int64_t AGING_TIME = static_cast<const int64_t>(30 * 60 * 60 * 24); 101 102 const std::string MEDIALIBRARY_SMARTALBUM_URI = MEDIALIBRARY_DATA_URI + "/" + SMARTALBUM_TABLE; 103 const std::string MEDIALIBRARY_SMARTALBUM_MAP_URI = MEDIALIBRARY_DATA_URI + "/" + SMARTALBUM_MAP_TABLE; 104 const std::string MEDIALIBRARY_CATEGORY_SMARTALBUM_MAP_URI = MEDIALIBRARY_DATA_URI + "/" 105 + CATEGORY_SMARTALBUM_MAP_TABLE; 106 const std::string MEDIALIBRARY_DIRECTORY_URI = MEDIALIBRARY_DATA_URI + "/" + MEDIATYPE_DIRECTORY_TABLE; 107 const std::string MEDIALIBRARY_BUNDLEPERM_URI = MEDIALIBRARY_DATA_URI + "/" + BUNDLE_PERMISSION_INSERT; 108 109 const std::string MEDIALIBRARY_AUDIO_URI = MEDIALIBRARY_DATA_URI + '/' + "audio"; 110 const std::string MEDIALIBRARY_VIDEO_URI = MEDIALIBRARY_DATA_URI + '/' + "video"; 111 const std::string MEDIALIBRARY_IMAGE_URI = MEDIALIBRARY_DATA_URI + '/' + "image"; 112 const std::string MEDIALIBRARY_FILE_URI = MEDIALIBRARY_DATA_URI + '/' + "file"; 113 const std::string MEDIALIBRARY_ALBUM_URI = MEDIALIBRARY_DATA_URI + '/' + "album"; 114 const std::string MEDIALIBRARY_SMARTALBUM_CHANGE_URI = MEDIALIBRARY_DATA_URI + '/' + "smartalbum"; 115 const std::string MEDIALIBRARY_DEVICE_URI = MEDIALIBRARY_DATA_URI + '/' + "device"; 116 const std::string MEDIALIBRARY_SMART_URI = MEDIALIBRARY_DATA_URI + '/' + "smart"; 117 const std::string MEDIALIBRARY_REMOTEFILE_URI = MEDIALIBRARY_DATA_URI + '/' + "remotfile"; 118 119 const std::string MEDIA_DATA_DB_ID = "file_id"; 120 const std::string MEDIA_DATA_DB_URI = "uri"; 121 const std::string MEDIA_DATA_DB_FILE_PATH = "data"; 122 const std::string MEDIA_DATA_DB_SIZE = "size"; 123 const std::string MEDIA_DATA_DB_PARENT_ID = "parent"; 124 const std::string MEDIA_DATA_DB_DATE_MODIFIED = "date_modified"; 125 const std::string MEDIA_DATA_DB_DATE_ADDED = "date_added"; 126 const std::string MEDIA_DATA_DB_MIME_TYPE = "mime_type"; 127 const std::string MEDIA_DATA_DB_TITLE = "title"; 128 const std::string MEDIA_DATA_DB_DESCRIPTION = "description"; 129 const std::string MEDIA_DATA_DB_NAME = "display_name"; 130 const std::string MEDIA_DATA_DB_ORIENTATION = "orientation"; 131 const std::string MEDIA_DATA_DB_LATITUDE = "latitude"; 132 const std::string MEDIA_DATA_DB_LONGITUDE = "longitude"; 133 const std::string MEDIA_DATA_DB_DATE_TAKEN = "date_taken"; 134 const std::string MEDIA_DATA_DB_THUMBNAIL = "thumbnail"; 135 const std::string MEDIA_DATA_DB_CONTENT_CREATE_TIME = "content_create_time"; 136 const std::string MEDIA_DATA_DB_POSITION = "position"; 137 const std::string MEDIA_DATA_DB_DIRTY = "dirty"; 138 const std::string MEDIA_DATA_DB_CLOUD_ID = "cloud_id"; 139 const std::string MEDIA_DATA_DB_META_DATE_MODIFIED = "meta_date_modified"; 140 const std::string MEDIA_DATA_DB_SYNC_STATUS = "sync_status"; 141 142 const std::string MEDIA_DATA_DB_LCD = "lcd"; 143 const std::string MEDIA_DATA_DB_TIME_VISIT = "time_visit"; 144 const std::string MEDIA_DATA_DB_BUCKET_ID = "bucket_id"; 145 const std::string MEDIA_DATA_DB_BUCKET_NAME = "bucket_display_name"; 146 const std::string MEDIA_DATA_DB_DURATION = "duration"; 147 const std::string MEDIA_DATA_DB_ARTIST = "artist"; 148 149 const std::string MEDIA_DATA_DB_AUDIO_ALBUM = "audio_album"; 150 const std::string MEDIA_DATA_DB_MEDIA_TYPE = "media_type"; 151 152 const std::string MEDIA_DATA_DB_HEIGHT = "height"; 153 const std::string MEDIA_DATA_DB_WIDTH = "width"; 154 const std::string MEDIA_DATA_DB_OWNER_PACKAGE = "owner_package"; 155 const std::string MEDIA_DATA_DB_PACKAGE_NAME = "package_name"; 156 157 const std::string MEDIA_DATA_DB_IS_FAV = "is_favorite"; 158 const std::string MEDIA_DATA_DB_IS_TRASH = "is_trash"; 159 const std::string MEDIA_DATA_DB_RECYCLE_PATH = "recycle_path"; 160 const std::string MEDIA_DATA_DB_DATE_TRASHED = "date_trashed"; 161 const std::string MEDIA_DATA_DB_IS_PENDING = "is_pending"; 162 const std::string MEDIA_DATA_DB_TIME_PENDING = "time_pending"; 163 const std::string MEDIA_DATA_DB_RELATIVE_PATH = "relative_path"; 164 const std::string MEDIA_DATA_DB_VOLUME_NAME = "volume_name"; 165 const std::string MEDIA_DATA_DB_SELF_ID = "self_id"; 166 const std::string MEDIA_DATA_DB_DEVICE_NAME = "device_name"; 167 168 const std::string MEDIA_DATA_DB_ALBUM = "album"; 169 const std::string MEDIA_DATA_DB_ALBUM_ID = "album_id"; 170 const std::string MEDIA_DATA_DB_ALBUM_NAME = "album_name"; 171 const std::string MEDIA_DATA_DB_COUNT = "count"; 172 const std::string MEDIA_DATA_BUNDLENAME = "bundle_name"; 173 // ringtone uri constants 174 const std::string MEDIA_DATA_DB_RINGTONE_URI = "ringtone_uri"; 175 const std::string MEDIA_DATA_DB_ALARM_URI = "alarm_uri"; 176 const std::string MEDIA_DATA_DB_NOTIFICATION_URI = "notification_uri"; 177 const std::string MEDIA_DATA_DB_RINGTONE_TYPE = "ringtone_type"; 178 179 const std::string MEDIA_DATA_IMAGE_BITS_PER_SAMPLE = "BitsPerSample"; 180 const std::string MEDIA_DATA_IMAGE_ORIENTATION = "Orientation"; 181 const std::string MEDIA_DATA_IMAGE_IMAGE_LENGTH = "ImageLength"; 182 const std::string MEDIA_DATA_IMAGE_IMAGE_WIDTH = "ImageWidth"; 183 const std::string MEDIA_DATA_IMAGE_GPS_LATITUDE = "GPSLatitude"; 184 const std::string MEDIA_DATA_IMAGE_GPS_LONGITUDE = "GPSLongitude"; 185 const std::string MEDIA_DATA_IMAGE_GPS_LATITUDE_REF = "GPSLatitudeRef"; 186 const std::string MEDIA_DATA_IMAGE_GPS_LONGITUDE_REF = "GPSLongitudeRef"; 187 const std::string MEDIA_DATA_IMAGE_DATE_TIME_ORIGINAL = "DateTimeOriginalForMedia"; 188 const std::string MEDIA_DATA_IMAGE_EXPOSURE_TIME = "ExposureTime"; 189 const std::string MEDIA_DATA_IMAGE_F_NUMBER = "FNumber"; 190 const std::string MEDIA_DATA_IMAGE_ISO_SPEED_RATINGS = "ISOSpeedRatings"; 191 const std::string MEDIA_DATA_IMAGE_SCENE_TYPE = "SceneType"; 192 193 const std::string MEDIA_COLUMN_COUNT = "count(*)"; 194 195 const std::string PHOTO_INDEX = "photo_index"; 196 197 const std::string PERMISSION_ID = "id"; 198 const std::string PERMISSION_BUNDLE_NAME = "bundle_name"; 199 const std::string PERMISSION_FILE_ID = "file_id"; 200 const std::string PERMISSION_MODE = "mode"; 201 const std::string PERMISSION_TABLE_TYPE = "table_type"; 202 203 const std::string CREATE_MEDIA_TABLE = "CREATE TABLE IF NOT EXISTS " + MEDIALIBRARY_TABLE + " (" + 204 MEDIA_DATA_DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 205 MEDIA_DATA_DB_FILE_PATH + " TEXT, " + 206 MEDIA_DATA_DB_SIZE + " BIGINT, " + 207 MEDIA_DATA_DB_PARENT_ID + " INT DEFAULT 0, " + 208 MEDIA_DATA_DB_DATE_ADDED + " BIGINT, " + 209 MEDIA_DATA_DB_DATE_MODIFIED + " BIGINT, " + 210 MEDIA_DATA_DB_MIME_TYPE + " TEXT, " + 211 MEDIA_DATA_DB_TITLE + " TEXT, " + 212 MEDIA_DATA_DB_DESCRIPTION + " TEXT, " + 213 MEDIA_DATA_DB_NAME + " TEXT, " + 214 MEDIA_DATA_DB_ORIENTATION + " INT DEFAULT 0, " + 215 MEDIA_DATA_DB_LATITUDE + " DOUBLE DEFAULT 0, " + 216 MEDIA_DATA_DB_LONGITUDE + " DOUBLE DEFAULT 0, " + 217 MEDIA_DATA_DB_DATE_TAKEN + " BIGINT DEFAULT 0, " + 218 MEDIA_DATA_DB_THUMBNAIL + " TEXT, " + 219 MEDIA_DATA_DB_LCD + " TEXT, " + 220 MEDIA_DATA_DB_TIME_VISIT + " BIGINT DEFAULT 0, " + 221 MEDIA_DATA_DB_BUCKET_ID + " INT DEFAULT 0, " + 222 MEDIA_DATA_DB_BUCKET_NAME + " TEXT, " + 223 MEDIA_DATA_DB_DURATION + " INT, " + 224 MEDIA_DATA_DB_ARTIST + " TEXT, " + 225 MEDIA_DATA_DB_AUDIO_ALBUM + " TEXT, " + 226 MEDIA_DATA_DB_MEDIA_TYPE + " INT, " + 227 MEDIA_DATA_DB_HEIGHT + " INT, " + 228 MEDIA_DATA_DB_WIDTH + " INT, " + 229 MEDIA_DATA_DB_IS_TRASH + " INT DEFAULT 0, " + 230 MEDIA_DATA_DB_RECYCLE_PATH + " TEXT, " + 231 MEDIA_DATA_DB_IS_FAV + " BOOL DEFAULT 0, " + 232 MEDIA_DATA_DB_OWNER_PACKAGE + " TEXT, " + 233 MEDIA_DATA_DB_PACKAGE_NAME + " TEXT, " + 234 MEDIA_DATA_DB_DEVICE_NAME + " TEXT, " + 235 MEDIA_DATA_DB_IS_PENDING + " BOOL DEFAULT 0, " + 236 MEDIA_DATA_DB_TIME_PENDING + " BIGINT DEFAULT 0, " + 237 MEDIA_DATA_DB_DATE_TRASHED + " BIGINT DEFAULT 0, " + 238 MEDIA_DATA_DB_RELATIVE_PATH + " TEXT, " + 239 MEDIA_DATA_DB_VOLUME_NAME + " TEXT, " + 240 MEDIA_DATA_DB_SELF_ID + " TEXT DEFAULT '1', " + 241 MEDIA_DATA_DB_ALBUM_NAME + " TEXT, " + 242 MEDIA_DATA_DB_URI + " TEXT, " + 243 MEDIA_DATA_DB_ALBUM + " TEXT, " + 244 MEDIA_DATA_DB_CLOUD_ID + " TEXT, " + 245 MEDIA_DATA_DB_DIRTY + " INT DEFAULT 1, " + 246 MEDIA_DATA_DB_POSITION + " INT DEFAULT 1, " + 247 MEDIA_DATA_DB_META_DATE_MODIFIED + " BIGINT DEFAULT 0, " + 248 MEDIA_DATA_DB_SYNC_STATUS + " INT DEFAULT 0)"; 249 250 const std::string CREATE_BUNDLE_PREMISSION_TABLE = "CREATE TABLE IF NOT EXISTS " + 251 BUNDLE_PERMISSION_TABLE + " (" + 252 PERMISSION_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 253 PERMISSION_BUNDLE_NAME + " TEXT NOT NULL, " + 254 PERMISSION_FILE_ID + " INT NOT NULL, " + 255 PERMISSION_MODE + " TEXT NOT NULL, " + 256 PERMISSION_TABLE_TYPE + " INT )"; 257 258 const std::string CREATE_IMAGE_VIEW = "CREATE VIEW IF NOT EXISTS Image AS SELECT " + 259 MEDIA_DATA_DB_ID + ", " + 260 MEDIA_DATA_DB_FILE_PATH + ", " + 261 MEDIA_DATA_DB_SIZE + ", " + 262 MEDIA_DATA_DB_NAME + ", " + 263 MEDIA_DATA_DB_TITLE + ", " + 264 MEDIA_DATA_DB_DESCRIPTION + ", " + 265 MEDIA_DATA_DB_DATE_ADDED + ", " + 266 MEDIA_DATA_DB_DATE_MODIFIED + ", " + 267 MEDIA_DATA_DB_DATE_TAKEN + ", " + 268 MEDIA_DATA_DB_MIME_TYPE + ", " + 269 MEDIA_DATA_DB_LATITUDE + ", " + 270 MEDIA_DATA_DB_LONGITUDE + ", " + 271 MEDIA_DATA_DB_ORIENTATION + ", " + 272 MEDIA_DATA_DB_WIDTH + ", " + 273 MEDIA_DATA_DB_HEIGHT + ", " + 274 MEDIA_DATA_DB_BUCKET_ID + ", " + 275 MEDIA_DATA_DB_BUCKET_NAME + ", " + 276 MEDIA_DATA_DB_THUMBNAIL + ", " + 277 MEDIA_DATA_DB_LCD + ", " + 278 MEDIA_DATA_DB_SELF_ID + " " + 279 "FROM " + MEDIALIBRARY_TABLE + " WHERE " + 280 MEDIA_DATA_DB_MEDIA_TYPE + " = 3"; 281 282 const std::string CREATE_VIDEO_VIEW = "CREATE VIEW IF NOT EXISTS Video AS SELECT " + 283 MEDIA_DATA_DB_ID + ", " + 284 MEDIA_DATA_DB_FILE_PATH + ", " + 285 MEDIA_DATA_DB_SIZE + ", " + 286 MEDIA_DATA_DB_NAME + ", " + 287 MEDIA_DATA_DB_TITLE + ", " + 288 MEDIA_DATA_DB_DESCRIPTION + ", " + 289 MEDIA_DATA_DB_DATE_ADDED + ", " + 290 MEDIA_DATA_DB_DATE_MODIFIED + ", " + 291 MEDIA_DATA_DB_MIME_TYPE + ", " + 292 MEDIA_DATA_DB_ORIENTATION + ", " + 293 MEDIA_DATA_DB_WIDTH + ", " + 294 MEDIA_DATA_DB_HEIGHT + ", " + 295 MEDIA_DATA_DB_DURATION + ", " + 296 MEDIA_DATA_DB_BUCKET_ID + ", " + 297 MEDIA_DATA_DB_BUCKET_NAME + ", " + 298 MEDIA_DATA_DB_THUMBNAIL + ", " + 299 MEDIA_DATA_DB_SELF_ID + " " + 300 "FROM " + MEDIALIBRARY_TABLE + " WHERE " + 301 MEDIA_DATA_DB_MEDIA_TYPE + " = 4"; 302 303 const std::string CREATE_AUDIO_VIEW = "CREATE VIEW IF NOT EXISTS Audio AS SELECT " + 304 MEDIA_DATA_DB_ID + ", " + 305 MEDIA_DATA_DB_FILE_PATH + ", " + 306 MEDIA_DATA_DB_SIZE + ", " + 307 MEDIA_DATA_DB_NAME + ", " + 308 MEDIA_DATA_DB_TITLE + ", " + 309 MEDIA_DATA_DB_DESCRIPTION + ", " + 310 MEDIA_DATA_DB_DATE_ADDED + ", " + 311 MEDIA_DATA_DB_DATE_MODIFIED + ", " + 312 MEDIA_DATA_DB_MIME_TYPE + ", " + 313 MEDIA_DATA_DB_ARTIST + ", " + 314 MEDIA_DATA_DB_DURATION + ", " + 315 MEDIA_DATA_DB_BUCKET_ID + ", " + 316 MEDIA_DATA_DB_BUCKET_NAME + ", " + 317 MEDIA_DATA_DB_THUMBNAIL + ", " + 318 MEDIA_DATA_DB_SELF_ID + " " + 319 "FROM " + MEDIALIBRARY_TABLE + " WHERE " + 320 MEDIA_DATA_DB_MEDIA_TYPE + " = 5"; 321 322 const std::string REMOTE_THUMBNAIL_TABLE = "RemoteThumbnailMap"; 323 const std::string REMOTE_THUMBNAIL_DB_ID = "id"; 324 const std::string REMOTE_THUMBNAIL_DB_FILE_ID = MEDIA_DATA_DB_ID; 325 const std::string REMOTE_THUMBNAIL_DB_UDID = "udid"; 326 const std::string CREATE_REMOTE_THUMBNAIL_TABLE = "CREATE TABLE IF NOT EXISTS " + REMOTE_THUMBNAIL_TABLE + " (" + 327 REMOTE_THUMBNAIL_DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 328 REMOTE_THUMBNAIL_DB_FILE_ID + " INT, " + 329 REMOTE_THUMBNAIL_DB_UDID + " TEXT, " + 330 MEDIA_DATA_DB_THUMBNAIL + " TEXT, " + 331 MEDIA_DATA_DB_LCD + " TEXT, " + 332 MEDIA_DATA_DB_TIME_VISIT + " BIGINT DEFAULT 0) "; 333 const std::string FILE_TABLE = "file"; 334 const std::string ALBUM_TABLE = "album"; 335 const std::string ALBUM_VIEW_NAME = "Album"; 336 const std::string DISTRIBUTED_ALBUM_COLUMNS = "SELECT count( " + FILE_TABLE + "." + 337 MEDIA_DATA_DB_DATE_TRASHED + " = 0 OR NULL) AS " + 338 MEDIA_DATA_DB_COUNT + ", " + 339 ALBUM_TABLE + "." + MEDIA_DATA_DB_RELATIVE_PATH + ", " + 340 ALBUM_TABLE + "." + MEDIA_DATA_DB_ID + " AS " + 341 MEDIA_DATA_DB_BUCKET_ID + ", " + 342 ALBUM_TABLE + "." + MEDIA_DATA_DB_FILE_PATH + ", " + 343 ALBUM_TABLE + "." + MEDIA_DATA_DB_TITLE + " AS " + 344 MEDIA_DATA_DB_BUCKET_NAME + ", " + 345 ALBUM_TABLE + "." + MEDIA_DATA_DB_TITLE + ", " + 346 ALBUM_TABLE + "." + MEDIA_DATA_DB_DESCRIPTION + ", " + 347 ALBUM_TABLE + "." + MEDIA_DATA_DB_DATE_ADDED + ", " + 348 ALBUM_TABLE + "." + MEDIA_DATA_DB_DATE_MODIFIED + ", " + 349 ALBUM_TABLE + "." + MEDIA_DATA_DB_THUMBNAIL + ", " + 350 FILE_TABLE + "." + MEDIA_DATA_DB_MEDIA_TYPE + ", " + 351 ALBUM_TABLE + "." + MEDIA_DATA_DB_SELF_ID + ", " + 352 ALBUM_TABLE + "." + MEDIA_DATA_DB_IS_TRASH; 353 const std::string DISTRIBUTED_ALBUM_WHERE_AND_GROUPBY = " WHERE " + 354 FILE_TABLE + "." + MEDIA_DATA_DB_BUCKET_ID + " = " + 355 ALBUM_TABLE + "." + MEDIA_DATA_DB_ID + " AND " + 356 FILE_TABLE + "." + MEDIA_DATA_DB_MEDIA_TYPE + " <> " + 357 std::to_string(MEDIA_TYPE_ALBUM) + " AND " + 358 FILE_TABLE + "." + MEDIA_DATA_DB_MEDIA_TYPE + " <> " + 359 std::to_string(MEDIA_TYPE_FILE) + 360 " GROUP BY " + 361 FILE_TABLE + "." + MEDIA_DATA_DB_BUCKET_ID +", " + 362 FILE_TABLE + "." + MEDIA_DATA_DB_BUCKET_NAME + ", " + 363 FILE_TABLE + "." + MEDIA_DATA_DB_MEDIA_TYPE + ", " + 364 ALBUM_TABLE + "." + MEDIA_DATA_DB_SELF_ID; 365 const std::string CREATE_ALBUM_VIEW = "CREATE VIEW IF NOT EXISTS " + ALBUM_VIEW_NAME + 366 " AS " + DISTRIBUTED_ALBUM_COLUMNS + 367 " FROM " + MEDIALIBRARY_TABLE + " " + FILE_TABLE + ", " + 368 MEDIALIBRARY_TABLE + " " + ALBUM_TABLE + 369 DISTRIBUTED_ALBUM_WHERE_AND_GROUPBY; 370 const std::string SMARTALBUM_DB_ID = "album_id"; 371 const std::string SMARTALBUM_DB_ALBUM_TYPE = "album_type"; 372 const std::string SMARTALBUM_DB_NAME = "album_name"; 373 const std::string SMARTALBUM_DB_DESCRIPTION = "description"; 374 const std::string SMARTALBUM_DB_CAPACITY = "capacity"; 375 const std::string SMARTALBUM_DB_LATITUDE = "latitude"; 376 const std::string SMARTALBUM_DB_LONGITUDE = "longitude"; 377 const std::string SMARTALBUM_DB_COVER_URI = "cover_uri"; 378 const std::string SMARTALBUM_DB_EXPIRED_TIME = "expired_id"; 379 const std::string SMARTALBUM_DB_SELF_ID = "self_id"; 380 const std::string CREATE_SMARTALBUM_TABLE = "CREATE TABLE IF NOT EXISTS " + SMARTALBUM_TABLE + " (" + 381 SMARTALBUM_DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 382 SMARTALBUM_DB_NAME + " TEXT, " + 383 SMARTALBUM_DB_DESCRIPTION + " TEXT, " + 384 SMARTALBUM_DB_ALBUM_TYPE + " INT, " + 385 SMARTALBUM_DB_CAPACITY + " INT, " + 386 SMARTALBUM_DB_LATITUDE + " DOUBLE DEFAULT 0, " + 387 SMARTALBUM_DB_LONGITUDE + " DOUBLE DEFAULT 0, " + 388 SMARTALBUM_DB_COVER_URI + " TEXT, " + 389 SMARTALBUM_DB_EXPIRED_TIME + " INT DEFAULT 30, " + 390 SMARTALBUM_DB_SELF_ID + " TEXT) "; 391 392 const std::string SMARTALBUMMAP_DB_ID = "map_id"; 393 const std::string SMARTALBUMMAP_DB_ALBUM_ID = "album_id"; 394 const std::string SMARTALBUMMAP_DB_CHILD_ALBUM_ID = "child_album_id"; 395 const std::string SMARTALBUMMAP_DB_CHILD_ASSET_ID = "child_asset_id"; 396 const std::string SMARTALBUMMAP_DB_SELF_ID = "self_id"; 397 const std::string CREATE_SMARTALBUMMAP_TABLE = "CREATE TABLE IF NOT EXISTS " + SMARTALBUM_MAP_TABLE + " (" + 398 SMARTALBUMMAP_DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 399 SMARTALBUMMAP_DB_ALBUM_ID + " INT, " + 400 SMARTALBUMMAP_DB_CHILD_ALBUM_ID + " INT, " + 401 SMARTALBUMMAP_DB_CHILD_ASSET_ID + " INT, " + 402 SMARTALBUMMAP_DB_SELF_ID + " TEXT) "; 403 const std::string CATEGORY_SMARTALBUMMAP_DB_ID = "category_map_id"; 404 const std::string CATEGORY_SMARTALBUMMAP_DB_CATEGORY_ID = "category_id"; 405 const std::string CATEGORY_SMARTALBUMMAP_DB_CATEGORY_NAME = "category_name"; 406 const std::string CATEGORY_SMARTALBUMMAP_DB_ALBUM_ID = "album_id"; 407 const std::string CATEGORY_SMARTALBUMMAP_DB_SELF_ID = "self_id"; 408 const std::string CREATE_CATEGORY_SMARTALBUMMAP_TABLE = "CREATE TABLE IF NOT EXISTS " + 409 CATEGORY_SMARTALBUM_MAP_TABLE + " (" + 410 CATEGORY_SMARTALBUMMAP_DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 411 CATEGORY_SMARTALBUMMAP_DB_CATEGORY_ID + " INT, " + 412 CATEGORY_SMARTALBUMMAP_DB_CATEGORY_NAME + " TEXT, " + 413 CATEGORY_SMARTALBUMMAP_DB_ALBUM_ID + " INT, " + 414 SMARTALBUMMAP_DB_SELF_ID + " TEXT) "; 415 const std::string DIRECTORY_DB_DIRECTORY_TYPE = "directory_type"; 416 const std::string DIRECTORY_DB_MEDIA_TYPE = "media_type"; 417 const std::string DIRECTORY_DB_DIRECTORY = "directory"; 418 const std::string DIRECTORY_DB_EXTENSION = "extension"; 419 const std::string CREATE_MEDIATYPE_DIRECTORY_TABLE = "CREATE TABLE IF NOT EXISTS " + 420 MEDIATYPE_DIRECTORY_TABLE + " (" + 421 DIRECTORY_DB_DIRECTORY_TYPE + " INTEGER PRIMARY KEY, " + 422 DIRECTORY_DB_MEDIA_TYPE + " TEXT, " + 423 DIRECTORY_DB_DIRECTORY + " TEXT, " + 424 DIRECTORY_DB_EXTENSION + " TEXT) "; 425 426 const std::string DEVICE_DB_ID = "id"; 427 const std::string DEVICE_DB_UDID = "device_udid"; 428 const std::string DEVICE_DB_NETWORK_ID = "network_id"; 429 const std::string DEVICE_DB_NAME = "device_name"; 430 const std::string DEVICE_DB_IP = "device_ip"; 431 const std::string DEVICE_DB_SYNC_STATUS = "sync_status"; 432 const std::string DEVICE_DB_PHOTO_SYNC_STATUS = "photo_table_sync_status"; 433 const std::string DEVICE_DB_SELF_ID = "self_id"; 434 const std::string DEVICE_DB_TYPE = "device_type"; 435 const std::string DEVICE_DB_PREPATH = "pre_path"; 436 const std::string DEVICE_DB_DATE_ADDED = "date_added"; 437 const std::string DEVICE_DB_DATE_MODIFIED = "date_modified"; 438 const std::string CREATE_DEVICE_TABLE = "CREATE TABLE IF NOT EXISTS " + DEVICE_TABLE + " (" + 439 DEVICE_DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 440 DEVICE_DB_UDID + " TEXT, " + 441 DEVICE_DB_NETWORK_ID + " TEXT, " + 442 DEVICE_DB_NAME + " TEXT, " + 443 DEVICE_DB_IP + " TEXT DEFAULT '', " + 444 DEVICE_DB_SYNC_STATUS + " INT DEFAULT 0, " + 445 DEVICE_DB_PHOTO_SYNC_STATUS + " INT DEFAULT 0, " + 446 DEVICE_DB_SELF_ID + " TEXT, " + 447 DEVICE_DB_TYPE + " INT, " + 448 DEVICE_DB_PREPATH + " TEXT, " + 449 DEVICE_DB_DATE_ADDED + " BIGINT DEFAULT 0, " + 450 DEVICE_DB_DATE_MODIFIED + " BIGINT DEFAULT 0) "; 451 const std::string SMARTALBUM_TABLE_NAME = "smartalbum"; 452 const std::string SMARTALBUMMAP_TABLE_NAME = "smartAlbumMap"; 453 const std::string CATEGORY_SMARTALBUMMAP_TABLE_NAME = "categorySmartAlbumMap"; 454 const std::string SMARTALBUMASSETS_VIEW_NAME = "SmartAsset"; 455 const std::string SMARTALBUMASSETS_ALBUMCAPACITY = "size"; 456 const std::string SMARTABLUMASSETS_PARENTID = "parentid"; 457 const std::string CREATE_SMARTALBUMASSETS_VIEW = "CREATE VIEW IF NOT EXISTS " + SMARTALBUMASSETS_VIEW_NAME + 458 " AS SELECT COUNT(" + 459 MEDIALIBRARY_TABLE + "."+ MEDIA_DATA_DB_DATE_TRASHED + " = 0 OR (" + 460 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_ID + " = " + 461 std::to_string(TRASH_ALBUM_ID_VALUES) + " AND " + 462 MEDIALIBRARY_TABLE + "."+ MEDIA_DATA_DB_IS_TRASH + "<> 0)" + 463 " OR NULL ) AS " + SMARTALBUMASSETS_ALBUMCAPACITY + ", " + 464 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_ID + ", " + 465 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_NAME + ", " + 466 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_SELF_ID + ", " + 467 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_DESCRIPTION + ", " + 468 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_EXPIRED_TIME + ", " + 469 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_COVER_URI + ", " + 470 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_ALBUM_TYPE + ", " + 471 SMARTALBUM_MAP_TABLE + "." + SMARTALBUMMAP_DB_ID + ", " + 472 "a." + SMARTALBUMMAP_DB_ALBUM_ID + " AS " + SMARTABLUMASSETS_PARENTID + 473 " FROM " + SMARTALBUM_TABLE + " " + SMARTALBUM_TABLE_NAME + 474 " LEFT JOIN " + SMARTALBUM_MAP_TABLE + 475 " ON " + SMARTALBUM_MAP_TABLE + "." + SMARTALBUMMAP_DB_ALBUM_ID + " = " + 476 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_ID + 477 " LEFT JOIN " + MEDIALIBRARY_TABLE + 478 " ON " + SMARTALBUM_MAP_TABLE + "." + SMARTALBUMMAP_DB_CHILD_ASSET_ID + " = " + 479 MEDIALIBRARY_TABLE + "." + MEDIA_DATA_DB_ID + 480 " LEFT JOIN " + SMARTALBUM_MAP_TABLE + " a " + 481 " ON a." + SMARTALBUMMAP_DB_CHILD_ALBUM_ID + " = " + 482 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_ID + 483 " GROUP BY IFNULL( " + SMARTALBUM_MAP_TABLE + "." + SMARTALBUMMAP_DB_ALBUM_ID + ", " + 484 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_ID + " ), " + 485 SMARTALBUM_TABLE_NAME + "." + SMARTALBUM_DB_SELF_ID; 486 const std::string ASSETMAP_VIEW_NAME = "AssetMap"; 487 const std::string CREATE_ASSETMAP_VIEW = "CREATE VIEW IF NOT EXISTS " + ASSETMAP_VIEW_NAME + 488 " AS SELECT * FROM " + 489 MEDIALIBRARY_TABLE + " a " + ", " + 490 SMARTALBUM_MAP_TABLE + " b " + 491 " WHERE " + 492 "a." + MEDIA_DATA_DB_ID + " = " + 493 "b." + SMARTALBUMMAP_DB_CHILD_ASSET_ID; 494 495 const std::string QUERY_MEDIA_VOLUME = "SELECT sum(" + MEDIA_DATA_DB_SIZE + ") AS " + 496 MEDIA_DATA_DB_SIZE + "," + 497 MEDIA_DATA_DB_MEDIA_TYPE + " FROM " + 498 MEDIALIBRARY_TABLE + " WHERE " + 499 MEDIA_DATA_DB_MEDIA_TYPE + " = " + std::to_string(MEDIA_TYPE_FILE) + " OR " + 500 MEDIA_DATA_DB_MEDIA_TYPE + " = " + std::to_string(MEDIA_TYPE_IMAGE) + " OR " + 501 MEDIA_DATA_DB_MEDIA_TYPE + " = " + std::to_string(MEDIA_TYPE_VIDEO) + " OR " + 502 MEDIA_DATA_DB_MEDIA_TYPE + " = " + std::to_string(MEDIA_TYPE_ALBUM) + " OR " + 503 MEDIA_DATA_DB_MEDIA_TYPE + " = " + std::to_string(MEDIA_TYPE_AUDIO) + " GROUP BY " + 504 MEDIA_DATA_DB_MEDIA_TYPE; 505 506 const std::string CREATE_FILES_DELETE_TRIGGER = "CREATE TRIGGER delete_trigger AFTER UPDATE ON " + 507 MEDIALIBRARY_TABLE + " FOR EACH ROW WHEN new.dirty = " + 508 std::to_string(static_cast<int32_t>(DirtyType::TYPE_DELETED)) + 509 " and OLD.cloud_id is NULL AND is_caller_self_func() = 'true'" + 510 " BEGIN " + 511 " DELETE FROM " + MEDIALIBRARY_TABLE + " WHERE file_id = old.file_id;" + 512 " END;"; 513 514 const std::string CREATE_FILES_FDIRTY_TRIGGER = "CREATE TRIGGER fdirty_trigger AFTER UPDATE ON " + 515 MEDIALIBRARY_TABLE + " FOR EACH ROW WHEN OLD.cloud_id IS NOT NULL AND" + 516 " new.date_modified <> old.date_modified AND is_caller_self_func() = 'true'" + 517 " BEGIN " + 518 " UPDATE " + MEDIALIBRARY_TABLE + " SET dirty = " + 519 std::to_string(static_cast<int32_t>(DirtyType::TYPE_FDIRTY)) + 520 " WHERE file_id = old.file_id;" + 521 " SELECT cloud_sync_func(); " + 522 " END;"; 523 524 const std::string CREATE_FILES_MDIRTY_TRIGGER = "CREATE TRIGGER mdirty_trigger AFTER UPDATE ON " + 525 MEDIALIBRARY_TABLE + " FOR EACH ROW WHEN OLD.cloud_id IS NOT NULL" + 526 " AND new.time_visit = old.time_visit " + 527 " AND new.date_modified = old.date_modified AND old.dirty = " + 528 std::to_string(static_cast<int32_t>(DirtyType::TYPE_SYNCED)) + 529 " AND new.dirty = old.dirty AND is_caller_self_func() = 'true'" + 530 " BEGIN " + 531 " UPDATE " + MEDIALIBRARY_TABLE + " SET dirty = " + 532 std::to_string(static_cast<int32_t>(DirtyType::TYPE_MDIRTY)) + 533 " WHERE file_id = old.file_id;" + 534 " SELECT cloud_sync_func(); " + 535 " END;"; 536 537 const std::string CREATE_INSERT_CLOUD_SYNC_TRIGGER = 538 " CREATE TRIGGER insert_cloud_sync_trigger AFTER INSERT ON " + MEDIALIBRARY_TABLE + 539 " BEGIN SELECT cloud_sync_func(); END;"; 540 541 /* 542 * Error Table 543 */ 544 const std::string MEDIALIBRARY_ERROR_TABLE = "Error"; 545 const std::string MEDIA_DATA_ERROR = "err"; 546 const std::string CREATE_MEDIALIBRARY_ERROR_TABLE = "CREATE TABLE IF NOT EXISTS " + MEDIALIBRARY_ERROR_TABLE + " (" 547 + MEDIA_DATA_ERROR + " TEXT PRIMARY KEY)"; 548 549 /* 550 * Media Unique Number Table 551 */ 552 const std::string ASSET_UNIQUE_NUMBER_TABLE = "UniqueNumber"; 553 const std::string ASSET_MEDIA_TYPE = "media_type"; 554 const std::string UNIQUE_NUMBER = "unique_number"; 555 const std::string CREATE_ASSET_UNIQUE_NUMBER_TABLE = "CREATE TABLE IF NOT EXISTS " + ASSET_UNIQUE_NUMBER_TABLE + " (" + 556 ASSET_MEDIA_TYPE + " TEXT, " + UNIQUE_NUMBER + " INT DEFAULT 0) "; 557 558 const std::string IMAGE_ASSET_TYPE = "image"; 559 const std::string VIDEO_ASSET_TYPE = "video"; 560 const std::string AUDIO_ASSET_TYPE = "audio"; 561 562 // fetch columns from fileAsset in medialibrary.d.ts 563 static const std::vector<std::string> FILE_ASSET_COLUMNS = { 564 MEDIA_DATA_DB_ID, MEDIA_DATA_DB_FILE_PATH, MEDIA_DATA_DB_URI, MEDIA_DATA_DB_MIME_TYPE, MEDIA_DATA_DB_MEDIA_TYPE, 565 MEDIA_DATA_DB_NAME, MEDIA_DATA_DB_TITLE, MEDIA_DATA_DB_RELATIVE_PATH, MEDIA_DATA_DB_PARENT_ID, MEDIA_DATA_DB_SIZE, 566 MEDIA_DATA_DB_DATE_ADDED, MEDIA_DATA_DB_DATE_MODIFIED, MEDIA_DATA_DB_DATE_TAKEN, MEDIA_DATA_DB_ARTIST, 567 MEDIA_DATA_DB_WIDTH, MEDIA_DATA_DB_HEIGHT, MEDIA_DATA_DB_ORIENTATION, MEDIA_DATA_DB_DURATION, 568 MEDIA_DATA_DB_BUCKET_ID, MEDIA_DATA_DB_BUCKET_NAME, MEDIA_DATA_DB_IS_TRASH, MEDIA_DATA_DB_IS_FAV, 569 MEDIA_DATA_DB_DATE_TRASHED 570 }; 571 572 const std::string EMPTY_COLUMN_AS = "'' AS "; 573 const std::string DEFAULT_INT_COLUMN_AS = "0 AS "; 574 const std::string COMPAT_COLUMN_ARTIST = EMPTY_COLUMN_AS + MEDIA_DATA_DB_ARTIST; 575 const std::string COMPAT_COLUMN_AUDIO_ALBUM = EMPTY_COLUMN_AS + MEDIA_DATA_DB_AUDIO_ALBUM; 576 const std::string COMPAT_COLUMN_ORIENTATION = DEFAULT_INT_COLUMN_AS + MEDIA_DATA_DB_ORIENTATION; 577 const std::string COMPAT_COLUMN_BUCKET_ID = DEFAULT_INT_COLUMN_AS + MEDIA_DATA_DB_BUCKET_ID; 578 const std::string COMPAT_COLUMN_BUCKET_NAME = EMPTY_COLUMN_AS + MEDIA_DATA_DB_BUCKET_NAME; 579 const std::string COMPAT_COLUMN_IS_TRASH = MEDIA_DATA_DB_DATE_TRASHED + " AS " + MEDIA_DATA_DB_IS_TRASH; 580 const std::string COMPAT_COLUMN_WIDTH = DEFAULT_INT_COLUMN_AS + MEDIA_DATA_DB_WIDTH; 581 const std::string COMPAT_COLUMN_HEIGHT = DEFAULT_INT_COLUMN_AS + MEDIA_DATA_DB_HEIGHT; 582 const std::string COMPAT_COLUMN_URI = EMPTY_COLUMN_AS + MEDIA_DATA_DB_URI; 583 584 // Caution: Keep same definition as MediaColumn! Only for where clause check in API9 getAlbums and album.getFileAssets 585 const std::string COMPAT_ALBUM_SUBTYPE = "album_subtype"; 586 const std::string COMPAT_HIDDEN = "hidden"; 587 const std::string COMPAT_PHOTO_SYNC_STATUS = "sync_status"; 588 const std::string COMPAT_FILE_SUBTYPE = "subtype"; 589 const std::string COMPAT_CAMERA_SHOT_KEY = "camera_shot_key"; 590 591 // system relativePath and albumName, use for API9 compatible API10 592 const std::string CAMERA_PATH = "Camera/"; 593 const std::string SCREEN_SHOT_PATH = "Pictures/Screenshots/"; 594 const std::string SCREEN_RECORD_PATH = "Videos/ScreenRecordings/"; 595 596 const std::string CAMERA_ALBUM_NAME = "Camera"; 597 const std::string SCREEN_SHOT_ALBUM_NAME = "Screenshots"; 598 const std::string SCREEN_RECORD_ALBUM_NAME = "ScreenRecordings"; 599 600 // extension 601 const std::string ASSET_EXTENTION = "extention"; 602 603 // delete_tool 604 const std::string DELETE_TOOL_ONLY_DATABASE = "only_db"; 605 606 } // namespace Media 607 } // namespace OHOS 608 609 #endif // INTERFACES_INNERKITS_NATIVE_INCLUDE_MEDIA_DATA_ABILITY_CONST_H_ 610