int mc_db_util_update_db(sqlite3 *handle, const char *sql_str);
int mc_db_util_init_latest_server_table(sqlite3 *handle);
int mc_db_util_delete_app_list(sqlite3 *handle);
+int mc_db_util_get_user_version(sqlite3 *handle, int *version);
+int mc_db_util_set_user_version(sqlite3 *handle);
int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size);
int mc_db_add_application(uid_t uid, const char *app_id, mc_priv_type_e priv_type);
int mc_db_remove_application(uid_t uid, const char *app_id, mc_priv_type_e priv_type);
mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
- /* TABLE */
sql_str = sqlite3_mprintf("DELETE FROM %q", MC_DB_TABLE_APP_LIST);
ret = mc_db_util_update_db(handle, sql_str);
SQLITE3_SAFE_FREE(sql_str);
return ret;
}
+int mc_db_util_get_user_version(sqlite3 *handle, int *version)
+{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
+ const char *sql_str = "PRAGMA user_version";
+ sqlite3_stmt *stmt = NULL;
+
+ mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
+ mc_retvm_if(version == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "version is NULL");
+
+ ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &stmt, NULL);
+ mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(handle));
+
+ if (sqlite3_step(stmt) == SQLITE_ROW)
+ *version = sqlite3_column_int(stmt, 0);
+
+ SQLITE3_FINALIZE(stmt);
+
+ return ret;
+}
+
+int mc_db_util_set_user_version(sqlite3 *handle)
+{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
+ char *sql_str = NULL;
+
+ mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
+
+ sql_str = sqlite3_mprintf("PRAGMA user_version=%d", MC_DB_LATEST_VERSION);
+ ret = mc_db_util_update_db(handle, sql_str);
+ SQLITE3_SAFE_FREE(sql_str);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Update user_version failed!err= [%d]", ret);
+
+ return ret;
+}
+
/* g_strdup_printf replaces NULL to "(null)"*/
static const char * __replace_null(const char *data)
{
static int _mc_service_reset_db(uid_t uid)
{
int res = MEDIA_CONTROLLER_ERROR_NONE;
+ int version = 0;
sqlite3 *db_handle = NULL;
/* Connect media controller DB*/
mc_retvm_if(res != MEDIA_CONTROLLER_ERROR_NONE, res, "Failed to connect DB");
/* 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 && version == 0) {
+ 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_set_user_version(db_handle);
+ if (res != MEDIA_CONTROLLER_ERROR_NONE)
+ mc_error("mc_db_util_set_user_version failed [%d]", res);
+ }
/* Delete app_list */
res = mc_db_util_delete_app_list(db_handle);