Code refactoring. Add new internal API __mc_db_get_count() to reduce duplicated codes 33/202233/1
authorhj kim <backto.kim@samsung.com>
Wed, 6 Mar 2019 10:35:41 +0000 (19:35 +0900)
committerhj kim <backto.kim@samsung.com>
Tue, 26 Mar 2019 07:35:26 +0000 (16:35 +0900)
Change-Id: I1fb4239ff3959bd05d15cf98f244dbae32e02751

src/media_controller_db.c

index 13b82ca4a446e5b32d3736c9664244613e12a9e7..af6bafc0c905268497790db602d01a380c5db5dc 100755 (executable)
@@ -262,6 +262,30 @@ int mc_db_connect(void **handle)
        return MEDIA_CONTROLLER_ERROR_NONE;
 }
 
+static int __mc_db_get_count(void *handle, const char *sql_str)
+{
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       sqlite3 *db_handle = (sqlite3 *)handle;
+       sqlite3_stmt *stmt = NULL;
+       int count = 0;
+
+       mc_retvm_if(handle == NULL, 0, "invalid handle");
+       mc_retvm_if(sql_str == NULL, 0, "invalid sql_str");
+
+       ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL);
+       mc_retvm_if(SQLITE_OK != ret, 0, "prepare error [%s]", sqlite3_errmsg(db_handle));
+
+       ret = sqlite3_step(stmt);
+       if (SQLITE_ROW != ret)
+               mc_error("end of row [%s]", sqlite3_errmsg(db_handle));
+       else
+               count = sqlite3_column_int(stmt, 0);
+
+       SQLITE3_FINALIZE(stmt);
+
+       return count;
+}
+
 int mc_db_update_playback_info(const char *server_name, const media_controller_playback_s playback)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
@@ -723,9 +747,7 @@ int mc_db_get_foreach_playlist(void *handle, const char *server_name, mc_playlis
 int mc_db_get_playlist_by_name(void *handle, mc_priv_type_e type, const char *controller_name, const char *playlist_name, mc_playlist_h *playlist)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       sqlite3 *db_handle = (sqlite3 *)handle;
        char *sql_str = NULL;
-       sqlite3_stmt *stmt = NULL;
        int count = 0;
 
        mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
@@ -736,22 +758,8 @@ int mc_db_get_playlist_by_name(void *handle, mc_priv_type_e type, const char *co
        sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM '%q' WHERE server_name = %Q AND playlist_name = %Q", MC_DB_TABLE_PLAYLIST, controller_name, playlist_name);
        mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
 
-       ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL);
-       if (SQLITE_OK != ret) {
-               mc_error("prepare error [%s]", sqlite3_errmsg(db_handle));
-               SQLITE3_SAFE_FREE(sql_str);
-               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-       }
-
-       ret = sqlite3_step(stmt);
-       if (SQLITE_ROW != ret) {
-               mc_error("end of row [%s]", sqlite3_errmsg(db_handle));
-               SQLITE3_FINALIZE(stmt);
-               SQLITE3_SAFE_FREE(sql_str);
-               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-       }
-
-       count = sqlite3_column_int(stmt, 0);
+       count = __mc_db_get_count(handle, sql_str);
+       SQLITE3_SAFE_FREE(sql_str);
 
        if (count > 0) {
                mc_playlist_s *_playlist = (mc_playlist_s *)calloc(1, sizeof(mc_playlist_s));
@@ -772,9 +780,6 @@ int mc_db_get_playlist_by_name(void *handle, mc_priv_type_e type, const char *co
                ret = MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER;
        }
 
-       SQLITE3_FINALIZE(stmt);
-       SQLITE3_SAFE_FREE(sql_str);
-
        return ret;
 }
 
@@ -945,10 +950,7 @@ int mc_db_delete_server_table(const char *server_name)
 
 gboolean mc_db_is_server_table_exist(void *handle, const char *server_name)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       sqlite3 *db_handle = (sqlite3 *)handle;
        char *sql_str = NULL;
-       sqlite3_stmt *stmt = NULL;
        int count = 0;
 
        mc_retvm_if(handle == NULL, FALSE, "Handle is NULL");
@@ -959,25 +961,9 @@ gboolean mc_db_is_server_table_exist(void *handle, const char *server_name)
        sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM SQLITE_MASTER WHERE type='table' and name='%q'", server_name);
        mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null");
 
-       ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL);
-       if (SQLITE_OK != ret) {
-               mc_error("prepare error [%s]", sqlite3_errmsg(db_handle));
-               SQLITE3_SAFE_FREE(sql_str);
-               return FALSE;
-       }
-
+       count = __mc_db_get_count(handle, sql_str);
        SQLITE3_SAFE_FREE(sql_str);
 
-       ret = sqlite3_step(stmt);
-       if (SQLITE_ROW != ret) {
-               mc_error("end of row [%s]", sqlite3_errmsg(db_handle));
-               SQLITE3_FINALIZE(stmt);
-               return FALSE;
-       }
-
-       count = sqlite3_column_int(stmt, 0);
-       SQLITE3_FINALIZE(stmt);
-
        mc_debug("table count [%d]", count);
 
        if (count <= 0) {
@@ -992,10 +978,7 @@ gboolean mc_db_is_server_table_exist(void *handle, const char *server_name)
 
 gboolean mc_db_is_client_table_exist(void *handle, const char *client_name)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       sqlite3 *db_handle = (sqlite3 *)handle;
        char *sql_str = NULL;
-       sqlite3_stmt *stmt = NULL;
        int count = 0;
 
        mc_retvm_if(handle == NULL, FALSE, "Handle is NULL");
@@ -1006,25 +989,9 @@ gboolean mc_db_is_client_table_exist(void *handle, const char *client_name)
        sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM '%q' WHERE client_name='%q'", MC_DB_TABLE_CLIENT_LIST, client_name);
        mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null");
 
-       ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL);
-       if (SQLITE_OK != ret) {
-               mc_error("prepare error [%s]", sqlite3_errmsg(db_handle));
-               SQLITE3_SAFE_FREE(sql_str);
-               return FALSE;
-       }
-
+       count = __mc_db_get_count(handle, sql_str);
        SQLITE3_SAFE_FREE(sql_str);
 
-       ret = sqlite3_step(stmt);
-       if (SQLITE_ROW != ret) {
-               mc_error("end of row [%s]", sqlite3_errmsg(db_handle));
-               SQLITE3_FINALIZE(stmt);
-               return FALSE;
-       }
-
-       count = sqlite3_column_int(stmt, 0);
-       SQLITE3_FINALIZE(stmt);
-
        mc_debug("table count [%d]", count);
 
        if (count <= 0) {