Merge server_list and client_list into app_list 23/207623/3
authorMinje Ahn <minje.ahn@samsung.com>
Mon, 10 Jun 2019 07:00:58 +0000 (16:00 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Mon, 10 Jun 2019 08:05:36 +0000 (17:05 +0900)
Change-Id: I6b2a0f1bfc25301b90f0c28dda12d966e50c5fe8
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
include/media_controller_private.h
src/media_controller_db.c
svc/media_controller_db_util.c

index 8a572f7c946dfd5ad0eb4aeaf7a8a55e3466d9da..9862d955c041caef5bbb1aa6f2ee106f73d0e4d6 100644 (file)
@@ -119,10 +119,9 @@ extern "C" {
 #define MC_DB_NAME ".media_controller.db"
 
 /* TABLE */
-#define MC_DB_TABLE_SERVER_LIST                "server_list"
+#define MC_DB_TABLE_APP_LIST           "app_list"
 #define MC_DB_TABLE_LATEST_SERVER              "latest_server"
 #define MC_DB_TABLE_PLAYLIST                   "server_playlist"
-#define MC_DB_TABLE_CLIENT_LIST                        "client_list"
 
 /* TRIGGER */
 #define MC_DB_TRIGGER_PLAYLIST                 "cleanup_playlist"
@@ -141,15 +140,8 @@ extern "C" {
 #define SELECT_ITEM_FROM_PLAYLIST "SELECT * FROM %q WHERE server_name=%Q AND playlist_name=%Q AND item_index IS NOT NULL"
 #define SELECT_COUNT_FROM_MASTER "SELECT COUNT(*) FROM SQLITE_MASTER WHERE type='table' AND name=%Q"
 
-#define SELECT_COUNT_FROM_CLIENT "SELECT COUNT(*) FROM '%q' WHERE client_name='%q'"
-#define SELECT_COUNT_FROM_SERVER "SELECT COUNT(*) FROM '%q' WHERE server_name='%q'"
-#define SELECT_NAME_FROM_SERVER "SELECT server_name FROM %Q"
-
 #define SELECT_ALL_SERVER_LIST_EXCEPT_LATEST   "SELECT name FROM SQLITE_MASTER WHERE type='table' AND (name != '%q') AND (name NOT IN (SELECT server_name FROM "MC_DB_TABLE_LATEST_SERVER"))"
-#define INSERT_TO_SERVER_LIST  "INSERT OR IGNORE INTO "MC_DB_TABLE_SERVER_LIST" (server_name) VALUES ('%q')"
-#define INSERT_TO_CLIENT_LIST  "INSERT OR IGNORE INTO "MC_DB_TABLE_CLIENT_LIST" (client_name) VALUES ('%q')"
-#define DELETE_FROM_SERVER_LIST        "DELETE FROM "MC_DB_TABLE_SERVER_LIST" WHERE (server_name = '%q')"
-#define DELETE_FROM_CLIENT_LIST        "DELETE FROM "MC_DB_TABLE_CLIENT_LIST" WHERE (client_name = '%q')"
+
 #define UPDATE_STATE_PLAYBACK          "UPDATE '%q' SET server_state=%d, playback_state=%d"
 #define DROP_TABLE                             "DROP TABLE IF EXISTS '%q'"
 #define META_LIST      "title, artist, album, author, genre, duration, date, copyright, description, track_num, picture, season, episode, resolution"
index 5b6ce625bb0abb595373c25b32fe8e3b026bbcd6..6f9bcc60217447ba083150c1e04da143ef948912 100644 (file)
@@ -739,7 +739,7 @@ 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_CLIENT, MC_DB_TABLE_CLIENT_LIST, 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);
@@ -765,7 +765,7 @@ 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_SERVER, MC_DB_TABLE_SERVER_LIST, 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);
@@ -815,7 +815,7 @@ int mc_db_foreach_server_list(sqlite3 *handle, mc_activated_server_cb callback,
 
        mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
 
-       sql_str = sqlite3_mprintf(SELECT_NAME_FROM_SERVER, MC_DB_TABLE_SERVER_LIST);
+       sql_str = sqlite3_mprintf("SELECT name FROM %q WHERE type=%d", MC_DB_TABLE_APP_LIST, MC_PRIV_TYPE_SERVER);
        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);
        SQLITE3_SAFE_FREE(sql_str);
@@ -865,7 +865,7 @@ int mc_db_foreach_client_list(sqlite3 *handle, mc_activated_client_cb callback,
 
        mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
 
-       sql_str = sqlite3_mprintf("SELECT client_name FROM '%q';", MC_DB_TABLE_CLIENT_LIST);
+       sql_str = sqlite3_mprintf("SELECT name FROM %q WHERE type=%d", MC_DB_TABLE_APP_LIST, MC_PRIV_TYPE_CLIENT);
        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);
        SQLITE3_SAFE_FREE(sql_str);
index 2d0cd038d68efc5a0e75bf8273559a4456ab157a..ca4d8d18731f4b9bbb4e46e092be9c71ccccb544 100644 (file)
@@ -157,25 +157,12 @@ static int __mc_create_latest_server_table(sqlite3 *handle)
        return ret;
 }
 
-static int __mc_create_server_list_table(sqlite3 *handle)
+static int __mc_create_app_list_table(sqlite3 *handle)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
        char *sql_str = NULL;
 
-       sql_str = sqlite3_mprintf("CREATE TABLE IF NOT EXISTS %s (server_name TEXT PRIMARY KEY);", MC_DB_TABLE_SERVER_LIST);
-
-       ret = mc_db_util_update_db(handle, sql_str);
-
-       SQLITE3_SAFE_FREE(sql_str);
-       return ret;
-}
-
-static int __mc_create_client_list_table(sqlite3 *handle)
-{
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       char *sql_str = NULL;
-
-       sql_str = sqlite3_mprintf("CREATE TABLE IF NOT EXISTS %s (client_name TEXT PRIMARY KEY);", MC_DB_TABLE_CLIENT_LIST);
+       sql_str = sqlite3_mprintf("CREATE TABLE IF NOT EXISTS %s(name TEXT, type INTEGER, UNIQUE(name, type))", MC_DB_TABLE_APP_LIST);
 
        ret = mc_db_util_update_db(handle, sql_str);
 
@@ -200,8 +187,8 @@ static int __mc_create_playlist_table(sqlite3 *handle)
        SQLITE3_SAFE_FREE(sql_str);
        mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to create playlist table");
 
-       sql_str = sqlite3_mprintf("CREATE TRIGGER IF NOT EXISTS %s DELETE ON %s BEGIN DELETE FROM %s WHERE server_name=old.server_name;END",
-                                       MC_DB_TRIGGER_PLAYLIST, MC_DB_TABLE_SERVER_LIST, MC_DB_TABLE_PLAYLIST);
+       sql_str = sqlite3_mprintf("CREATE TRIGGER IF NOT EXISTS %s DELETE ON %s BEGIN DELETE FROM %s WHERE server_name=old.name;END",
+                                       MC_DB_TRIGGER_PLAYLIST, MC_DB_TABLE_APP_LIST, MC_DB_TABLE_PLAYLIST);
 
        ret = mc_db_util_update_db(handle, sql_str);
        SQLITE3_SAFE_FREE(sql_str);
@@ -345,15 +332,7 @@ static int __mc_db_insert_to_list(sqlite3 *db_handle, const char *app_id, mc_pri
 
        mc_secure_debug("app_id: %s, priv_type: %d", app_id, priv_type);
 
-       if (priv_type == MC_PRIV_TYPE_SERVER) {
-               sql_str = sqlite3_mprintf(INSERT_TO_SERVER_LIST, app_id, app_id);
-       } else if (priv_type == MC_PRIV_TYPE_CLIENT) {
-               sql_str = sqlite3_mprintf(INSERT_TO_CLIENT_LIST, app_id, app_id);
-       } else {
-               mc_error("invalid priv_type (%d)", priv_type);
-               mc_debug_fleave();
-               return MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER;
-       }
+       sql_str = sqlite3_mprintf("INSERT OR IGNORE INTO %q VALUES ('%q', %d)", MC_DB_TABLE_APP_LIST, app_id, priv_type);
        mc_retvm_if(sql_str == NULL, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "sql_str is NULL");
 
        ret = mc_db_util_update_db(db_handle, sql_str);
@@ -379,15 +358,7 @@ static int __mc_db_delete_from_list(sqlite3 *db_handle, const char *app_id, mc_p
 
        mc_secure_debug("app_id: %s, priv_type: %d", app_id, priv_type);
 
-       if (priv_type == MC_PRIV_TYPE_SERVER) {
-               sql_str = sqlite3_mprintf(DELETE_FROM_SERVER_LIST, app_id);
-       } else if (priv_type == MC_PRIV_TYPE_CLIENT) {
-               sql_str = sqlite3_mprintf(DELETE_FROM_CLIENT_LIST, app_id);
-       } else {
-               mc_error("invalid priv_type (%d)", priv_type);
-               mc_debug_fleave();
-               return MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER;
-       }
+       sql_str = sqlite3_mprintf("DELETE FROM %q WHERE name=%Q AND type=%d", MC_DB_TABLE_APP_LIST, app_id, priv_type);
        mc_retvm_if(sql_str == NULL, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "sql_str is NULL");
 
        ret = mc_db_util_update_db(db_handle, sql_str);
@@ -545,11 +516,8 @@ int mc_db_util_create_tables(sqlite3 *handle)
        ret = __mc_create_latest_server_table(handle);
        mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "create latest_server table failed!err= [%d]", ret);
 
-       ret = __mc_create_server_list_table(handle);
-       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "create server_list table failed!err= [%d]", ret);
-
-       ret = __mc_create_client_list_table(handle);
-       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "create client_list table failed!err= [%d]", ret);
+       ret = __mc_create_app_list_table(handle);
+       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "create app_list table failed!err= [%d]", ret);
 
        ret = __mc_create_playlist_table(handle);
        mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "create playlist table failed!err= [%d]", ret);