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);
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)
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)