From 2cdfdb8272630aab78ba81b0069c1b450d24fe0e Mon Sep 17 00:00:00 2001 From: Minje Ahn Date: Mon, 24 Mar 2025 17:02:35 +0900 Subject: [PATCH] Recover media table 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 --- packaging/media-server.spec | 2 +- src/common/media-common-db-svc.c | 10 +++++++++- src/server/media-server-device-block.c | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packaging/media-server.spec b/packaging/media-server.spec index dc5a7d9d..daf099fb 100644 --- a/packaging/media-server.spec +++ b/packaging/media-server.spec @@ -1,7 +1,7 @@ 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 diff --git a/src/common/media-common-db-svc.c b/src/common/media-common-db-svc.c index dae18b1a..8f7165a2 100644 --- a/src/common/media-common-db-svc.c +++ b/src/common/media-common-db-svc.c @@ -198,10 +198,18 @@ static int __ms_check_item_exist(sqlite3 *handle, const char *path, bool *modifi 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); diff --git a/src/server/media-server-device-block.c b/src/server/media-server-device-block.c index 4ba18797..586beb90 100644 --- a/src/server/media-server-device-block.c +++ b/src/server/media-server-device-block.c @@ -174,6 +174,9 @@ void ms_device_handle_usb_added(const char *mount_path) 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 */ -- 2.34.1