#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"
#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"
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);
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);
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);
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);
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);
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);
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);
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);
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);