From 8b24babd8ac82d6d3a6eaf3689eaeaae91df3e2e Mon Sep 17 00:00:00 2001 From: hj kim Date: Wed, 6 Mar 2019 19:35:41 +0900 Subject: [PATCH] Code refactoring. Add new internal API __mc_db_get_count() to reduce duplicated codes Change-Id: I1fb4239ff3959bd05d15cf98f244dbae32e02751 --- src/media_controller_db.c | 117 ++++++++++++---------------------------------- 1 file changed, 30 insertions(+), 87 deletions(-) diff --git a/src/media_controller_db.c b/src/media_controller_db.c index 4ed59fe..203a3ff 100755 --- a/src/media_controller_db.c +++ b/src/media_controller_db.c @@ -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) { -- 2.7.4