Add user version 02/207702/4
authorMinje Ahn <minje.ahn@samsung.com>
Tue, 11 Jun 2019 08:12:00 +0000 (17:12 +0900)
committerMinje ahn <minje.ahn@samsung.com>
Fri, 14 Jun 2019 04:55:03 +0000 (04:55 +0000)
Change-Id: I620cf35a6eae94ea957d0e1d1ae163ca56294675
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
include/media_controller_private.h
svc/include/media_controller_db_util.h
svc/media_controller_db_util.c
svc/media_controller_svc.c

index 9dbfae7..ac579f4 100644 (file)
@@ -118,6 +118,9 @@ extern "C" {
 
 #define MC_DB_NAME ".media_controller.db"
 
+/* USER VERSION */
+#define MC_DB_LATEST_VERSION   5
+
 /* TABLE */
 #define MC_DB_TABLE_APP_LIST           "app_list"
 #define MC_DB_TABLE_LATEST_SERVER      "latest_server"
index 10896d7..a155a6a 100644 (file)
@@ -29,6 +29,8 @@ int mc_db_util_create_tables(sqlite3 *handle);
 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);
index 538b411..889cb30 100644 (file)
@@ -493,7 +493,6 @@ int mc_db_util_delete_app_list(sqlite3 *handle)
 
        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);
@@ -502,6 +501,41 @@ int mc_db_util_delete_app_list(sqlite3 *handle)
        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)
 {
index 9e6b255..73577e4 100644 (file)
@@ -291,6 +291,7 @@ static int _mc_service_check_db(uid_t uid)
 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*/
@@ -298,9 +299,16 @@ static int _mc_service_reset_db(uid_t uid)
        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);