return ret;
}
-
-gboolean mc_db_util_is_exist_table(sqlite3 *handle, const char *table_name)
-{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
- int result = 0;
- sqlite3_stmt *stmt = NULL;
-
- mc_retvm_if(!handle, FALSE, "Handle is NULL");
- mc_retvm_if(!table_name, FALSE, "table_name is NULL");
-
- sql_str = sqlite3_mprintf("SELECT count(*) FROM sqlite_master WHERE tbl_name=%Q", table_name);
- mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null");
-
- ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &stmt, NULL);
- SQLITE3_SAFE_FREE(sql_str);
- mc_retvm_if(SQLITE_OK != ret, FALSE, "prepare error [%s]", sqlite3_errmsg(handle));
-
- if (sqlite3_step(stmt) == SQLITE_ROW)
- result = sqlite3_column_int(stmt, 0);
-
- SQLITE3_FINALIZE(stmt);
-
- return (gboolean)result;
-}
-
-int mc_db_util_get_latest_server(sqlite3 *handle, char **latest_server_name)
-{
- /* NOTICE : This function for upgrade tizen 5.0 to 5.5 only. */
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
- sqlite3_stmt *stmt = NULL;
-
- mc_retvm_if(!handle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
- mc_retvm_if(!latest_server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "latest_server_name is NULL");
-
- sql_str = sqlite3_mprintf("SELECT server_name FROM %q", MC_DB_TABLE_LATEST_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(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(handle));
-
- if (sqlite3_step(stmt) == SQLITE_ROW)
- *latest_server_name = g_strdup((const char *)sqlite3_column_text(stmt, 0));
-
- SQLITE3_FINALIZE(stmt);
-
- return ret;
-}
-
-int mc_db_util_drop_table(sqlite3 *handle, const char *table_name)
-{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
-
- mc_retvm_if(!handle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
- mc_retvm_if(!MC_STRING_VALID(table_name), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "table_name is NULL");
-
- sql_str = sqlite3_mprintf("DROP TABLE %Q", table_name);
- ret = mc_db_util_update_db(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Drop table failed [%d]", ret);
-
- return ret;
-}
-
-int mc_db_util_migration(sqlite3 *handle, const char *table_name)
-{
- /* NOTICE : This function for upgrade tizen 5.0 to 5.5 only. */
- /* If latest_server is exists, insert into new table and drop {latest_server_name} table */
- /* Insert into server_meta */
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
-
- mc_retvm_if(!handle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
- mc_retvm_if(!MC_STRING_VALID(table_name), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "table_name is NULL");
-
- /* Insert into latest_server */
- sql_str = sqlite3_mprintf("INSERT INTO %q VALUES (%Q)", MC_DB_TABLE_LATEST_SERVER, table_name);
- ret = mc_db_util_update_db(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Insert into latest_server failed [%d]", ret);
-
- /* Insert into server_info */
- sql_str = sqlite3_mprintf("INSERT INTO %q(name, playback_position, playlist_name, playlist_index, playback_content_type, age_rating, shuffle_mode, repeat_mode, icon_uri, ability_decided, ability_supported) \
- SELECT server_name, playback_position, playlist_name, playlist_index, playback_content_type, age_rating, shuffle_mode, repeat_mode, icon_uri, ability_decided, ability_supported FROM %Q", MC_DB_TABLE_SERVER_INFO, table_name);
-
- ret = mc_db_util_update_db(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Insert into server_info failed [%d]", ret);
-
- /* Insert into server_meta */
- sql_str = sqlite3_mprintf("INSERT INTO %q(name, title, artist, album, author, genre, duration, date, copyright, description, track_num, picture) \
- SELECT %Q, title, artist, album, author, genre, duration, date, copyright, description, track_num, picture FROM %Q", MC_DB_TABLE_LATEST_META, table_name, table_name);
-
- ret = mc_db_util_update_db(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Insert into latest_meta failed [%d]", ret);
-
- /* Drop {table_name} table */
- ret = mc_db_util_drop_table(handle, table_name);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "mc_db_util_drop_table failed [%d]", ret);
-
- return ret;
-}
int res = MEDIA_CONTROLLER_ERROR_NONE;
int version = 0;
gboolean is_exist = FALSE;
- char *latest_server_name = NULL;
sqlite3 *db_handle = NULL;
/* Connect media controller DB*/
res = mc_db_connect(&db_handle, uid, TRUE);
- mc_retvm_if(res != MEDIA_CONTROLLER_ERROR_NONE, res, "Failed to connect DB");
+ mc_retvm_if(res != MEDIA_CONTROLLER_ERROR_NONE, res, "failed to connect DB");
/* Create tables */
- res = mc_db_util_get_user_version(db_handle, &version);
- if (res == MEDIA_CONTROLLER_ERROR_NONE && version == 0) {
- /* Notice : User version of tizen 5.0 is 0. So, need to check table count. */
- is_exist = mc_db_util_is_exist_table(db_handle, "server_list");
- if (is_exist) {
- mc_info("Upgrade tables");
- /* Get latest server name */
- res = mc_db_util_get_latest_server(db_handle, &latest_server_name);
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_get_latest_server failed [%d]", res);
-
- /* Drop old tables */
- res = mc_db_util_drop_table(db_handle, "server_list");
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_drop_table failed [%d]", res);
-
- res = mc_db_util_drop_table(db_handle, "client_list");
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_drop_table failed [%d]", res);
-
- res = mc_db_util_drop_table(db_handle, "server_playlist");
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_drop_table failed [%d]", res);
-
- res = mc_db_util_drop_table(db_handle, "latest_server");
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_drop_table failed [%d]", res);
-
- } else {
- mc_info("Create tables");
- }
+ res = mc_db_util_create_tables(db_handle);
+ if (res != MEDIA_CONTROLLER_ERROR_NONE) {
+ mc_error("mc_db_util_create_tables failed [%d]", res);
+ goto FINALIZE;
+ }
- /* Create tables */
- res = mc_db_util_create_tables(db_handle);
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_create_tables failed [%d]", res);
+ res = mc_db_util_get_user_version(db_handle, &version);
+ if (res != MEDIA_CONTROLLER_ERROR_NONE) {
+ mc_error("mc_db_util_get_user_version failed [%d]", res);
+ goto FINALIZE;
+ }
+ if (version == 0) {
res = mc_db_util_set_user_version(db_handle);
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
+ if (res != MEDIA_CONTROLLER_ERROR_NONE) {
mc_error("mc_db_util_set_user_version failed [%d]", res);
-
- if (MC_STRING_VALID(latest_server_name)) {
- res = mc_db_util_migration(db_handle, latest_server_name);
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_migration failed [%d]", res);
+ goto FINALIZE;
}
-
- g_free(latest_server_name);
- }
-
- /* tables recovery when some tables are removed */
- if (version == MC_DB_LATEST_VERSION) {
- mc_info("Create tables");
- res = mc_db_util_create_tables(db_handle);
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_create_tables failed [%d]", res);
}
/* Delete app_list */
res = mc_db_util_delete_app_list(db_handle);
- if (res != MEDIA_CONTROLLER_ERROR_NONE)
+ if (res != MEDIA_CONTROLLER_ERROR_NONE) {
mc_error("mc_db_util_delete_app_list failed [%d]", res);
+ goto FINALIZE;
+ }
/* Initialize latest server table */
res = mc_db_util_init_latest_server_table(db_handle);
if (res != MEDIA_CONTROLLER_ERROR_NONE)
mc_error("mc_db_util_init_latest_server_table failed [%d]", res);
+FINALIZE:
/* Disconnect media controller DB*/
mc_db_disconnect(db_handle);