From: Minje Ahn Date: Thu, 13 Jun 2019 04:59:44 +0000 (+0900) Subject: Delete function for count-only X-Git-Tag: submit/tizen/20190617.081601^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=afd3fc9a9eb6cba9d2c426ccebc083bfd07d7d3b;p=platform%2Fcore%2Fapi%2Fmedia-controller.git Delete function for count-only Change-Id: I01420453bdf44e1f3707ed0fc9095f16d4edeeb1 Signed-off-by: Minje Ahn --- diff --git a/include/media_controller_private.h b/include/media_controller_private.h index 6f6724c..5e73558 100644 --- a/include/media_controller_private.h +++ b/include/media_controller_private.h @@ -132,9 +132,7 @@ extern "C" { #define MC_DB_TRIGGER_PLAYLIST "cleanup_playlist" #define MC_DB_TRIGGER_SERVER "cleanup_server" -/* QUERY SET */ -#define SELECT_KEY_FROM_SERVER_INFO "SELECT %q FROM "MC_DB_TABLE_SERVER_INFO" WHERE name=%Q" - +/* METADATA COLUMNS */ #define META_LIST "title, artist, album, author, genre, duration, date, copyright, description, track_num, picture, season, episode, resolution" #define META_COL "title TEXT, artist TEXT, album TEXT, author TEXT, genre TEXT, duration INTEGER DEFAULT 0, date TEXT, copyright TEXT, description TEXT, track_num TEXT, picture TEXT, season TEXT, episode TEXT, resolution TEXT" diff --git a/src/media_controller_db.c b/src/media_controller_db.c index 5f9c759..97b463c 100644 --- a/src/media_controller_db.c +++ b/src/media_controller_db.c @@ -27,47 +27,28 @@ static int __mc_db_update_db(mc_priv_type_e priv_type, const char *sql_str) return mc_ipc_send_message_to_server(MC_MSG_DB_UPDATE, priv_type, sql_str); } -static int __mc_db_get_single_result(sqlite3 *handle, char *sql_str, sqlite3_stmt **stmt) +static int __mc_db_get_record(sqlite3 *handle, char *sql_str, sqlite3_stmt **stmt) { int ret = SQLITE_OK; + sqlite3_stmt *statement = NULL; mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid handle"); mc_retvm_if(stmt == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "sqlite3_stmt is null"); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); - ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), stmt, NULL); + ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &statement, NULL); SQLITE3_SAFE_FREE(sql_str); mc_retvm_if(ret != SQLITE_OK, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(handle)); - if (sqlite3_step(*stmt) != SQLITE_ROW) { + if (sqlite3_step(statement) != SQLITE_ROW) { mc_error("end of row [%s]", sqlite3_errmsg(handle)); - SQLITE3_FINALIZE(*stmt); + SQLITE3_FINALIZE(statement); return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; } - return MEDIA_CONTROLLER_ERROR_NONE; -} - -static int __mc_db_get_count(sqlite3 *handle, const char *sql_str) -{ - int ret = MEDIA_CONTROLLER_ERROR_NONE; - 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(handle, sql_str, strlen(sql_str), &stmt, NULL); - mc_retvm_if(SQLITE_OK != ret, 0, "prepare error [%s]", sqlite3_errmsg(handle)); - - if (sqlite3_step(stmt) == SQLITE_ROW) - count = sqlite3_column_int(stmt, 0); - else - mc_error("end of row [%s]", sqlite3_errmsg(handle)); - - SQLITE3_FINALIZE(stmt); + *stmt = statement; - return count; + return MEDIA_CONTROLLER_ERROR_NONE; } int mc_db_update_playback_info(const char *server_name, const media_controller_playback_s playback) @@ -252,8 +233,8 @@ int mc_db_get_playback_info(sqlite3 *handle, const char *server_name, mc_playbac sql_str = sqlite3_mprintf("SELECT playback_state, playback_position, playlist_name, playlist_index, playback_content_type, age_rating FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name); - ret = __mc_db_get_single_result(handle, sql_str, &stmt); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret); _playback = (media_controller_playback_s *)calloc(1, sizeof(media_controller_playback_s)); if (!_playback) { @@ -318,8 +299,8 @@ int mc_db_get_metadata_info(sqlite3 *handle, const char *server_name, mc_metadat sql_str = sqlite3_mprintf("SELECT %s FROM %q WHERE name=%Q", META_LIST, MC_DB_TABLE_LATEST_META, server_name); - ret = __mc_db_get_single_result(handle, sql_str, &stmt); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret); ret = __mc_db_get_metadata(stmt, 0, metadata); SQLITE3_FINALIZE(stmt); @@ -339,8 +320,8 @@ int mc_db_get_shuffle_mode(sqlite3 *handle, const char *server_name, mc_shuffle_ sql_str = sqlite3_mprintf("SELECT shuffle_mode FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name); - ret = __mc_db_get_single_result(handle, sql_str, &stmt); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret); *mode = sqlite3_column_int(stmt, 0); SQLITE3_FINALIZE(stmt); @@ -360,8 +341,8 @@ int mc_db_get_repeat_mode(sqlite3 *handle, const char *server_name, mc_repeat_mo sql_str = sqlite3_mprintf("SELECT repeat_mode FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name); - ret = __mc_db_get_single_result(handle, sql_str, &stmt); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret); *mode = sqlite3_column_int(stmt, 0); SQLITE3_FINALIZE(stmt); @@ -381,8 +362,8 @@ int mc_db_get_icon_uri(sqlite3 *handle, const char *server_name, char **uri) sql_str = sqlite3_mprintf("SELECT icon_uri FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name); - ret = __mc_db_get_single_result(handle, sql_str, &stmt); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret); *uri = g_strdup((const char *)sqlite3_column_text(stmt, 0)); SQLITE3_FINALIZE(stmt); @@ -403,8 +384,8 @@ static int __mc_db_get_ability(sqlite3 *handle, const char *server_name, unsigne sql_str = sqlite3_mprintf("SELECT ability_decided, ability_supported FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name); - ret = __mc_db_get_single_result(handle, sql_str, &stmt); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret); *decided = (unsigned long long)sqlite3_column_int64(stmt, 0); *supported = (unsigned long long)sqlite3_column_int64(stmt, 1); @@ -465,17 +446,21 @@ int mc_db_get_pb_action_ability(sqlite3 *handle, const char *server_name, mc_pla int _mc_db_get_playlist_count(sqlite3 *handle, const char *server_name) { + int ret = MEDIA_CONTROLLER_ERROR_NONE; char *sql_str = NULL; int count = 0; + sqlite3_stmt *stmt = NULL; mc_retvm_if(handle == NULL, 0, "invalid handle"); mc_retvm_if(server_name == NULL, 0, "invalid server_name"); sql_str = sqlite3_mprintf("SELECT COUNT(DISTINCT playlist_name) FROM %q WHERE server_name = %Q", MC_DB_TABLE_PLAYLIST, server_name); - mc_retvm_if(!MC_STRING_VALID(sql_str), 0, "SQL string is null"); - count = __mc_db_get_count(handle, sql_str); - SQLITE3_SAFE_FREE(sql_str); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, 0, "__mc_db_get_record failed [%d]", ret); + + count = sqlite3_column_int(stmt, 0); + SQLITE3_FINALIZE(stmt); return count; } @@ -523,23 +508,23 @@ int mc_db_get_foreach_playlist(sqlite3 *handle, const char *server_name, mc_play gboolean _mc_db_is_playlist_exist(sqlite3 *handle, const char *server_name, const char *playlist_name) { + int ret = MEDIA_CONTROLLER_ERROR_NONE; char *sql_str = NULL; - int count = 0; + sqlite3_stmt *stmt = NULL; mc_retvm_if(!handle, FALSE, "Invalid handle"); mc_retvm_if(!server_name, FALSE, "Invalid server_name"); mc_retvm_if(!playlist_name, FALSE, "Invalid playlist_name"); sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE server_name=%Q AND playlist_name=%Q", MC_DB_TABLE_PLAYLIST, server_name, playlist_name); - mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); - count = __mc_db_get_count(handle, sql_str); - SQLITE3_SAFE_FREE(sql_str); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret); - if (count > 0) - return TRUE; + ret = sqlite3_column_int(stmt, 0); + SQLITE3_FINALIZE(stmt); - return FALSE; + return (ret == 0) ? FALSE : TRUE; } int mc_db_get_playlist_by_name(sqlite3 *handle, mc_priv_type_e type, const char *controller_name, const char *playlist_name, mc_playlist_h *playlist) @@ -578,18 +563,22 @@ int mc_db_get_playlist_by_name(sqlite3 *handle, mc_priv_type_e type, const char int _mc_db_get_playlist_item_count(sqlite3 *handle, const char *server_name, char *playlist_name) { + int ret = MEDIA_CONTROLLER_ERROR_NONE; char *sql_str = NULL; int count = 0; + sqlite3_stmt *stmt = NULL; mc_retvm_if(handle == NULL, 0, "invalid handle"); mc_retvm_if(server_name == NULL, 0, "invalid server_name"); mc_retvm_if(playlist_name == NULL, 0, "invalid playlist_name"); sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q 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"); - count = __mc_db_get_count(handle, sql_str); - SQLITE3_SAFE_FREE(sql_str); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, 0, "__mc_db_get_record failed [%d]", ret); + + count = sqlite3_column_int(stmt, 0); + SQLITE3_FINALIZE(stmt); return count; } @@ -641,8 +630,9 @@ int mc_db_get_playlist_item(sqlite3 *handle, const char *server_name, char *play gboolean mc_db_is_exist_server(sqlite3 *handle, const char *server_name) { + int ret = MEDIA_CONTROLLER_ERROR_NONE; char *sql_str = NULL; - int count = 0; + sqlite3_stmt *stmt = NULL; mc_retvm_if(handle == NULL, FALSE, "Handle is NULL"); mc_retvm_if(server_name == NULL, FALSE, "server_name is NULL"); @@ -650,15 +640,16 @@ gboolean mc_db_is_exist_server(sqlite3 *handle, const char *server_name) mc_secure_debug("server_name [%s]", server_name); sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name='%q'", MC_DB_TABLE_SERVER_INFO, server_name); - mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null"); - count = __mc_db_get_count(handle, sql_str); - SQLITE3_SAFE_FREE(sql_str); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret); - if (count <= 0) { - mc_debug("No server info [%s]", server_name); - mc_db_foreach_server_list(handle, NULL, NULL); + ret = sqlite3_column_int(stmt, 0); + SQLITE3_FINALIZE(stmt); + if (ret == 0) { + mc_secure_error("No server info [%s]", server_name); + mc_db_foreach_server_list(handle, NULL, NULL); return FALSE; } @@ -667,8 +658,9 @@ gboolean mc_db_is_exist_server(sqlite3 *handle, const char *server_name) gboolean _mc_db_is_activated_client(sqlite3 *handle, const char *client_name) { + int ret = MEDIA_CONTROLLER_ERROR_NONE; char *sql_str = NULL; - int count = 0; + sqlite3_stmt *stmt = NULL; mc_retvm_if(handle == NULL, FALSE, "Handle is NULL"); mc_retvm_if(client_name == NULL, FALSE, "client_name is NULL"); @@ -676,15 +668,16 @@ gboolean _mc_db_is_activated_client(sqlite3 *handle, const char *client_name) mc_secure_debug("client name [%s]", client_name); sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name='%q' AND type=%d", MC_DB_TABLE_APP_LIST, client_name, MC_PRIV_TYPE_CLIENT); - mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null"); - count = __mc_db_get_count(handle, sql_str); - SQLITE3_SAFE_FREE(sql_str); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret); + + ret = sqlite3_column_int(stmt, 0); + SQLITE3_FINALIZE(stmt); - if (count <= 0) { + if (ret == 0) { mc_secure_error("[%s] is not activated", client_name); mc_db_foreach_client_list(handle, NULL, NULL); - return FALSE; } @@ -693,8 +686,9 @@ gboolean _mc_db_is_activated_client(sqlite3 *handle, const char *client_name) gboolean _mc_db_is_activated_server(sqlite3 *handle, const char *server_name) { + int ret = MEDIA_CONTROLLER_ERROR_NONE; char *sql_str = NULL; - int count = 0; + sqlite3_stmt *stmt = NULL; mc_retvm_if(handle == NULL, FALSE, "Handle is NULL"); mc_retvm_if(server_name == NULL, FALSE, "server_name is NULL"); @@ -702,15 +696,16 @@ gboolean _mc_db_is_activated_server(sqlite3 *handle, const char *server_name) mc_secure_debug("server name [%s]", server_name); sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name='%q' AND type=%d", MC_DB_TABLE_APP_LIST, server_name, MC_PRIV_TYPE_SERVER); - mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null"); - count = __mc_db_get_count(handle, sql_str); - SQLITE3_SAFE_FREE(sql_str); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret); - if (count <= 0) { + ret = sqlite3_column_int(stmt, 0); + SQLITE3_FINALIZE(stmt); + + if (ret == 0) { mc_secure_error("[%s] is not activated", server_name); mc_db_foreach_server_list(handle, NULL, NULL); - return FALSE; } @@ -719,8 +714,9 @@ gboolean _mc_db_is_activated_server(sqlite3 *handle, const char *server_name) gboolean _mc_db_is_latest_server(sqlite3 *handle, const char *server_name) { + int ret = MEDIA_CONTROLLER_ERROR_NONE; char *sql_str = NULL; - int count = 0; + sqlite3_stmt *stmt = NULL; mc_retvm_if(!handle, FALSE, "Handle is NULL"); mc_retvm_if(!server_name, FALSE, "server_name is NULL"); @@ -728,20 +724,16 @@ gboolean _mc_db_is_latest_server(sqlite3 *handle, const char *server_name) mc_secure_debug("server name [%s]", server_name); sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name=%Q", MC_DB_TABLE_LATEST_SERVER, server_name); - mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null"); - count = __mc_db_get_count(handle, sql_str); - SQLITE3_SAFE_FREE(sql_str); + ret = __mc_db_get_record(handle, sql_str, &stmt); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret); - if (count <= 0) { - mc_secure_debug("[%s] is not latest", server_name); - return FALSE; - } + ret = sqlite3_column_int(stmt, 0); + SQLITE3_FINALIZE(stmt); - return TRUE; + return (ret == 0) ? FALSE : TRUE; } - int mc_db_foreach_server_list(sqlite3 *handle, mc_activated_server_cb callback, void *user_data) { int ret = MEDIA_CONTROLLER_ERROR_NONE;