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

src/media_controller_db.c

index 4ed59fedd0f8adc153ddb75ba8ca4edd6ab7c228..203a3ff8b08829a6dcd6f993b0189c1aeb4c0c69 100755 (executable)
@@ -172,6 +172,30 @@ static int __mc_db_get_text_value_of_key(void *handle, const char *server_name,
        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;
@@ -581,10 +605,7 @@ int mc_db_get_pb_action_ability(void *handle, const char *server_name, mc_playba
 
 int _mc_db_get_playlist_count(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, 0, "invalid handle");
@@ -593,17 +614,8 @@ int _mc_db_get_playlist_count(void *handle, const char *server_name)
        sql_str = sqlite3_mprintf("SELECT COUNT(DISTINCT playlist_name) from %s WHERE server_name = %Q", MC_DB_TABLE_PLAYLIST, server_name);
        mc_retvm_if(!MC_STRING_VALID(sql_str), 0, "SQL string is null");
 
-       ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL);
+       count = __mc_db_get_count(handle, sql_str);
        SQLITE3_SAFE_FREE(sql_str);
-       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;
 }
@@ -659,9 +671,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");
@@ -672,22 +682,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));
@@ -708,18 +704,12 @@ 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;
 }
 
 int _mc_db_get_playlist_item_count(void *handle, const char *server_name, char *playlist_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, 0, "invalid handle");
@@ -729,17 +719,8 @@ int _mc_db_get_playlist_item_count(void *handle, const char *server_name, char *
        sql_str = sqlite3_mprintf("SELECT COUNT(*) from %s WHERE server_name = %Q and playlist_name = %Q and item_index IS NOT NULL", MC_DB_TABLE_PLAYLIST, server_name, playlist_name);
        mc_retvm_if(!MC_STRING_VALID(sql_str), 0, "SQL string is null");
 
-       ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL);
+       count = __mc_db_get_count(handle, sql_str);
        SQLITE3_SAFE_FREE(sql_str);
-       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;
 }
@@ -894,10 +875,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");
@@ -908,25 +886,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) {
@@ -941,10 +903,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");
@@ -955,25 +914,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) {