Remove invalid storage when storage updating 11/320711/5 accepted/tizen/unified/20250311.054108 accepted/tizen/unified/x/20250311.211318
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 6 Mar 2025 09:43:41 +0000 (18:43 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Mon, 10 Mar 2025 00:20:10 +0000 (09:20 +0900)
Change-Id: I7e5fdc5bb7b8c78f3d3135fa426946ea2142166e
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
packaging/libmedia-service.spec
src/media-svc-storage.c
src/media-svc.c

index aaeec6237236db6e49428d65e92cf1b091f92875..501d5a7b40aec275f937f5670bd6c8638c53167d 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmedia-service
 Summary:    Media information service library for multimedia applications
-Version:    0.7.4
+Version:    0.7.5
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 65d97329bd7d45423a76c3203dcbb739e6174004..42ea83b841ccb4dbb6a5235fed6e99b2e78fecbe 100644 (file)
@@ -69,20 +69,26 @@ int _media_svc_update_storage_path(sqlite3 *handle, const char *storage_id, cons
        ret = _media_svc_check_storage(handle, storage_id, &old_storage_path, &validity);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
+       /* Remove first */
+       q = sqlite3_mprintf("DELETE FROM %q WHERE media_path LIKE '%q/%%';DELETE FROM %q WHERE folder_path LIKE '%q/%%';DELETE FROM %q WHERE storage_path=%Q;", DB_TABLE_MEDIA, path, DB_TABLE_FOLDER, path, DB_TABLE_STORAGE, path);
+       ret = _media_svc_sql_query_direct(q, uid);
+       sqlite3_free(q);
+       media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+
        /*Storage table update*/
-       q = sqlite3_mprintf("UPDATE %q SET storage_path=%Q WHERE storage_id=%Q", DB_TABLE_STORAGE, path, storage_id);
+       q = sqlite3_mprintf("UPDATE %q SET storage_path=%Q, validity=1 WHERE storage_id=%Q", DB_TABLE_STORAGE, path, storage_id);
        ret = _media_svc_sql_query_direct(q, uid);
        sqlite3_free(q);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
        /*Folder table update*/
-       q = sqlite3_mprintf("UPDATE %q SET folder_path=REPLACE(folder_path, %Q, %Q) WHERE storage_uuid=%Q", DB_TABLE_FOLDER, old_storage_path, path, storage_id);
+       q = sqlite3_mprintf("UPDATE %q SET folder_path=REPLACE(folder_path, %Q, %Q), validity=1 WHERE storage_uuid=%Q", DB_TABLE_FOLDER, old_storage_path, path, storage_id);
        ret = _media_svc_sql_query_direct(q, uid);
        sqlite3_free(q);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
        /*Media table update*/
-       q = sqlite3_mprintf("UPDATE %q SET media_path=REPLACE(media_path, %Q, %Q) WHERE storage_uuid=%Q", DB_TABLE_MEDIA, old_storage_path, path, storage_id);
+       q = sqlite3_mprintf("UPDATE %q SET media_path=REPLACE(media_path, %Q, %Q), validity=1 WHERE storage_uuid=%Q", DB_TABLE_MEDIA, old_storage_path, path, storage_id);
        ret = _media_svc_sql_query_direct(q, uid);
        sqlite3_free(q);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
index 13a462e7609e9dfe5727199068648f1bc8115dbe..465bb921372ee25563dffae7f6c085526e37a2b3 100644 (file)
@@ -449,7 +449,20 @@ int media_svc_check_storage(sqlite3 *handle, const char *storage_id, char **stor
 
 int media_svc_update_storage(sqlite3 *handle, const char *storage_id, const char *storage_path, uid_t uid)
 {
-       return _media_svc_update_storage_path(handle, storage_id, storage_path, uid);
+       int ret = MS_MEDIA_ERR_NONE;
+
+       media_svc_retvm_if(handle == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "Handle is NULL");
+       media_svc_retvm_if(storage_id == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
+       media_svc_retvm_if(storage_path == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "storage_path is NULL");
+
+       ret = _media_svc_update_storage_path(handle, storage_id, storage_path, uid);
+       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "update storage failed : %d", ret);
+
+       /* Remove external storage that validity is 0 */
+       ret = _media_svc_delete_invalid_storage(handle, uid);
+       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Delete invalid storage failed : %d", ret);
+
+       return MS_MEDIA_ERR_NONE;
 }
 
 int media_svc_insert_storage(sqlite3 *handle, const char *storage_id, const char *storage_path, uid_t uid)
@@ -467,7 +480,7 @@ int media_svc_insert_storage(sqlite3 *handle, const char *storage_id, const char
        ret = _media_svc_delete_invalid_storage(handle, uid);
        media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Delete invalid storage failed : %d", ret);
 
-       return ret;
+       return MS_MEDIA_ERR_NONE;
 }
 
 int media_svc_insert_folder(sqlite3 *handle, const char *storage_id, const char *path, uid_t uid)