This is a code to recover the media table when the db is corrupted due to frequent insertion/deletion of external storage.
Change-Id: Ie700fc700da8299df756626ed5c2133dd39442b5
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
Name: media-server
Summary: A server for media content management
Version: 0.6.12
-Release: 0
+Release: 1
Group: Multimedia/Service
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
struct stat st = { 0, };
sqlite3_stmt *sql_stmt = NULL;
char *sql = NULL;
+#ifdef _USE_TVPD_MODE
+ g_autofree gchar *folder_path = NULL;
+#endif
*modified = true;
MS_DBG_RETVM_IF(!MS_STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
- sql = sqlite3_mprintf("SELECT media_modified_time, media_size FROM media WHERE media_path='%q'", path);
+#ifdef _USE_TVPD_MODE
+ folder_path = g_path_get_dirname(path);
+ sql = sqlite3_mprintf("SELECT media_modified_time, media_size FROM media WHERE media_path=%Q AND folder_id=(SELECT folder_id FROM folder WHERE folder_path=%Q)", path, folder_path);
+#else
+ sql = sqlite3_mprintf("SELECT media_modified_time, media_size FROM media WHERE media_path=%Q", path);
+#endif
ret = media_db_get_result(handle, sql, &sql_stmt);
sqlite3_free(sql);
if (ms_set_storage_scan_status(storage_id, MEDIA_SCAN_PREPARE, uid) != MS_MEDIA_ERR_NONE)
MS_DBG_ERR("ms_set_storage_scan_status failed");
+ ms_validity_change_all_items(handle, storage_id, false, uid);
+ ms_set_folder_validity(handle, mount_path, MS_INVALID, true, uid);
+
media_db_update_send(getpid(), MS_MEDIA_ITEM_STORAGE, MS_MEDIA_ITEM_UPDATE, mount_path, storage_id, 0, PROD_CUSTOM_MIME_ADDED);
} else {
/* there is no information of this storage in Media DB */