Use media-util APIs 74/311174/3
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 16 May 2024 00:07:02 +0000 (09:07 +0900)
committerMinje ahn <minje.ahn@samsung.com>
Sun, 9 Jun 2024 23:45:39 +0000 (23:45 +0000)
Change-Id: Ia9f10b9bbf5210002419dc363bac37902b853aa6
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
packaging/libmedia-service.spec
src/media-svc-db-utils.c

index e44cdbc..6c97f51 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmedia-service
 Summary:    Media information service library for multimedia applications
-Version:    0.6.6
+Version:    0.6.7
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index c3f7c14..14a99fa 100755 (executable)
@@ -576,51 +576,9 @@ int _media_svc_sql_query(const char *sql_str, uid_t uid)
        return media_db_request_update_db(sql_str, uid);
 }
 
-#define MAX_RETRY 9
-#define SLEEP_TIME 1000 * 1000
-static int __media_svc_query_direct(sqlite3 *handle, const char *query, uid_t uid)
-{
-       int ret = MS_MEDIA_ERR_NONE;
-       sql_autoptr err = NULL;
-       int retry_count = 0;
-
-EXEC_RETRY:
-       ret = sqlite3_exec(handle, query, NULL, NULL, &err);
-       if (SQLITE_OK != ret) {
-               media_svc_sec_error("Error[%s],Query[%s]", err, query);
-               if (ret == SQLITE_BUSY) {
-                       ret = MS_MEDIA_ERR_DB_BUSY_FAIL;
-               } else if (ret == SQLITE_CONSTRAINT) {
-                       ret = MS_MEDIA_ERR_DB_CONSTRAINT_FAIL;
-               } else if (ret == SQLITE_FULL) {
-                       ret = MS_MEDIA_ERR_DB_FULL_FAIL;
-               } else if (ret == SQLITE_LOCKED) {
-                       if (retry_count < MAX_RETRY) {
-                               media_svc_error("Locked retry[%d]", retry_count);
-                               retry_count++;
-                               usleep(SLEEP_TIME);
-                               goto EXEC_RETRY;
-                       }
-                       ret = MS_MEDIA_ERR_DB_INTERNAL;
-               } else {
-                       ret = MS_MEDIA_ERR_DB_INTERNAL;
-               }
-       }
-
-       return ret;
-}
-
 int _media_svc_sql_query_direct(const char *sql_str, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       sqlite3 *handle = NULL;
-
-       ret = media_db_connect(&handle, uid, true);
-       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "DB connection failed");
-       ret = __media_svc_query_direct(handle, sql_str, uid);
-       media_db_disconnect(handle);
-
-       return ret;
+       return media_db_update_db_direct(sql_str, uid);
 }
 
 int _media_svc_check_table_exist(sqlite3 *db_handle, bool *exist)
@@ -657,38 +615,17 @@ static int __media_svc_check_record(sqlite3_stmt **stmt)
        return MS_MEDIA_ERR_NONE;
 }
 
-static int __media_svc_get_result(sqlite3 *handle, const char *sql_str, sqlite3_stmt **stmt)
-{
-       int err = SQLITE_OK;
-
-       media_svc_retvm_if(!handle, MS_MEDIA_ERR_INVALID_PARAMETER, "handle is NULL");
-       media_svc_retvm_if(!STRING_VALID(sql_str), MS_MEDIA_ERR_INVALID_PARAMETER, "invalid query");
-
-       media_svc_sec_debug("Query[%s]", sql_str);
-
-       err = sqlite3_prepare_v2(handle, sql_str, -1, stmt, NULL);
-       if (err != SQLITE_OK) {
-               media_svc_error("prepare error %d[%s]", err, sqlite3_errmsg(handle));
-               if (err == SQLITE_CORRUPT)
-                       return MS_MEDIA_ERR_DB_CORRUPT;
-
-               return MS_MEDIA_ERR_DB_INTERNAL;
-       }
-
-       return MS_MEDIA_ERR_NONE;
-}
-
 int _media_svc_get_result_with_check_record(sqlite3 *handle, const char *sql_str, sqlite3_stmt **stmt)
 {
-       int ret = __media_svc_get_result(handle, sql_str, stmt);
-       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "__media_svc_get_result failed");
+       int ret = media_db_get_result(handle, sql_str, stmt);
+       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to get result");
 
        return __media_svc_check_record(stmt);
 }
 
 int _media_svc_get_result(sqlite3 *handle, const char *sql_str, sqlite3_stmt **stmt)
 {
-       return __media_svc_get_result(handle, sql_str, stmt);
+       return media_db_get_result(handle, sql_str, stmt);
 }
 
 static void __media_svc_sql_query_release(GList **query_list)
@@ -740,8 +677,7 @@ int _media_svc_sql_query_list_direct(GList **query_list, uid_t uid)
        ret = media_db_connect(&handle, uid, true);
        media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "DB connection failed");
 
-       ret = sqlite3_exec(handle, "BEGIN;", NULL, NULL, NULL);
-       if (SQLITE_OK != ret) {
+       if (sqlite3_exec(handle, "BEGIN;", NULL, NULL, NULL) != SQLITE_OK) {
                media_svc_error("transaction failed. try an individual insert.");
                with_transaction = false;
        }
@@ -749,21 +685,17 @@ int _media_svc_sql_query_list_direct(GList **query_list, uid_t uid)
        for (idx = 0; idx < length; idx++) {
                q = (char *)g_list_nth_data(*query_list, idx);
                if (STRING_VALID(q)) {
-                       ret = __media_svc_query_direct(handle, q, uid);
-                       if (ret != MS_MEDIA_ERR_NONE)
-                               media_svc_debug("_media_svc_query_direct failed[%s]", q);
+                       if (sqlite3_exec(handle, q, NULL, NULL, NULL) != SQLITE_OK)
+                               media_svc_debug("query failed[%s]", sqlite3_errmsg(handle));
 
                        sqlite3_free(q);
                }
        }
 
        if (with_transaction) {
-               ret = sqlite3_exec(handle, "COMMIT;", NULL, NULL, NULL);
-               if (SQLITE_OK != ret) {
+               if (sqlite3_exec(handle, "COMMIT;", NULL, NULL, NULL) != SQLITE_OK) {
                        media_svc_error("Commit failed");
-                       media_db_disconnect(handle);
-                       __media_svc_sql_query_release(query_list);
-                       return MS_MEDIA_ERR_DB_INTERNAL;
+                       ret = MS_MEDIA_ERR_DB_INTERNAL;
                }
        }
 
@@ -772,7 +704,7 @@ int _media_svc_sql_query_list_direct(GList **query_list, uid_t uid)
 ZERO_LEN:
        __media_svc_sql_query_release(query_list);
 
-       return MS_MEDIA_ERR_NONE;
+       return ret;
 }
 
 void _media_svc_sql_query_add(GList **query_list, char **query)