#include "media-util-db.h"
#include "media-svc-media.h"
-static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid);
-static int __media_svc_rebuild_view_query(sqlite3 *db_handle, uid_t uid);
-static int __media_svc_query_direct(sqlite3 *handle, const char *query, uid_t uid);
-
-
static GHashTable *table;
-static GSList *column_list[MEDIA_SVC_DB_LIST_MAX];
-
-int __media_svc_add_table_info(const char *name, const char *trigger_name, const char *event_table, const char *action_table, const char *view_name)
+static GSList *column_list[DB_LIST_MAX];
+
+typedef struct {
+ char *trigger_name;
+ char *view_name;
+ char *event_table;
+ char *action_table;
+} table_info_s;
+
+typedef struct {
+ char *name;
+ char *type;
+ char *option;
+ bool is_unique;
+ bool is_trigger;
+ bool is_view;
+} column_info_s;
+
+static void __add_table_info(const char *name,
+ const char *trigger_name,
+ const char *event_table,
+ const char *action_table,
+ const char *view_name)
{
table_info_s *tbl = NULL;
- media_svc_retvm_if(!STRING_VALID(name), MS_MEDIA_ERR_INVALID_PARAMETER, "name is NULL");
+ if (!STRING_VALID(name))
+ return;
if (STRING_VALID(trigger_name)) {
- media_svc_retvm_if(!STRING_VALID(event_table), MS_MEDIA_ERR_INVALID_PARAMETER, "event_table is NULL");
- media_svc_retvm_if(!STRING_VALID(action_table), MS_MEDIA_ERR_INVALID_PARAMETER, "action_table is NULL");
+ if(!STRING_VALID(event_table) || !STRING_VALID(action_table))
+ return;
}
- tbl = malloc(sizeof(table_info_s));
- if (tbl == NULL) {
- media_svc_error("MS_MEDIA_ERR_OUT_OF_MEMORY");
- return MS_MEDIA_ERR_OUT_OF_MEMORY;
- }
-
- memset(tbl, 0x00, sizeof(table_info_s));
+ tbl = g_new0(table_info_s, 1);
if (STRING_VALID(trigger_name)) {
- tbl->trigger_name = malloc(MEDIA_SVC_PATHNAME_SIZE);
- if (tbl->trigger_name == NULL) {
- media_svc_error("MS_MEDIA_ERR_OUT_OF_MEMORY");
- SAFE_FREE(tbl);
- return MS_MEDIA_ERR_OUT_OF_MEMORY;
- }
-
- memset(tbl->trigger_name, 0x00, MEDIA_SVC_PATHNAME_SIZE);
- snprintf(tbl->trigger_name, MEDIA_SVC_PATHNAME_SIZE, "%s_%s", trigger_name, event_table);
-
- tbl->event_table = strndup(event_table, strlen(event_table));
- tbl->action_table = strndup(action_table, strlen(action_table));
+ tbl->trigger_name = g_strdup(trigger_name);
+ tbl->event_table = g_strdup(event_table);
+ tbl->action_table = g_strdup(action_table);
}
if (STRING_VALID(view_name))
- tbl->view_name = strndup(view_name, strlen(view_name));
+ tbl->view_name = g_strdup(view_name);
g_hash_table_insert(table, (gpointer)name, (gpointer)tbl);
-
- return MS_MEDIA_ERR_NONE;
}
-int __media_svc_add_column_info(GSList **slist, const char *name, const char *type, const char *option, int version, const char *index_name, bool is_unique, bool is_trigger, bool is_view)
+static void __add_column_info(GSList **slist,
+ const char *name,
+ const char *type,
+ const char *option,
+ bool is_unique,
+ bool is_trigger,
+ bool is_view)
{
- column_info_s *col = NULL;
- col = malloc(sizeof(column_info_s));
- if (col == NULL) {
- media_svc_error("MS_MEDIA_ERR_OUT_OF_MEMORY");
- return MS_MEDIA_ERR_OUT_OF_MEMORY;
- }
- memset(col, 0, sizeof(column_info_s));
+ column_info_s *col = g_new0(column_info_s, 1);
+
+ col->name = g_strdup(name);
+ col->type = g_strdup(type);
+ col->option = g_strdup(option);
- col->name = strndup(name, strlen(name));
- col->type = strndup(type, strlen(type));
- if (option != NULL) {
- col->has_option = true;
- col->option = strndup(option, strlen(option));
- } else {
- col->has_option = false;
- }
- col->version = version;
- if (index_name != NULL) {
- col->is_index = true;
- col->index_name = strndup(index_name, strlen(index_name));
- } else {
- col->is_index = false;
- }
col->is_unique = is_unique;
col->is_trigger = is_trigger;
col->is_view = is_view;
- *slist = g_slist_append(*slist, col);
- return MS_MEDIA_ERR_NONE;
+ *slist = g_slist_append(*slist, col);
}
static int __create_playlist_view(uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
- bool flag = false;
+ GSList *iter = NULL;
column_info_s *col_ptr = NULL;
- int len = 0;
- int i = 0;
char *sql = NULL;
- char temp[1024] = {0 ,};
- char table_query[MEDIA_SVC_QUERY_LEN_NORMAL] = {0, };
+ GString *table_query = g_string_new(NULL);
+ media_svc_retvm_if(!table_query, MS_MEDIA_ERR_INTERNAL, "g_string_new failed");
+
+ for (iter = column_list[DB_LIST_PLAYLIST]; iter; iter = g_slist_next(iter)) {
+ col_ptr = iter->data;
+
+ if (!col_ptr)
+ continue;
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_PLAYLIST]);
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_PLAYLIST], i);
if (col_ptr->is_view) {
- if (flag == true) {
- if (strncmp(col_ptr->name, MEDIA_SVC_DB_COLUMN_THUMBNAIL, strlen(MEDIA_SVC_DB_COLUMN_THUMBNAIL)) == 0)
- snprintf(temp, sizeof(temp), ", playlist.%s AS p_thumbnail_path", col_ptr->name);
+ if (table_query->len != 0) {
+ if (strncmp(col_ptr->name, DB_COLUMN_THUMBNAIL, strlen(DB_COLUMN_THUMBNAIL)) == 0)
+ g_string_append_printf(table_query, ", playlist.%s AS p_thumbnail_path", col_ptr->name);
else
- snprintf(temp, sizeof(temp), ", playlist.%s", col_ptr->name);
+ g_string_append_printf(table_query, ", playlist.%s", col_ptr->name);
} else {
- snprintf(temp, sizeof(temp), "playlist.%s", col_ptr->name);
- flag = true;
+ g_string_append_printf(table_query, "playlist.%s", col_ptr->name);
}
- SAFE_STRLCAT(table_query, temp, sizeof(table_query));
}
- memset(temp, 0, sizeof(temp));
}
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP]);
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP], i);
+ for (iter = column_list[DB_LIST_PLAYLIST_MAP]; iter; iter = g_slist_next(iter)) {
+ col_ptr = iter->data;
+
+ if (!col_ptr)
+ continue;
+
if (col_ptr->is_view) {
- if (strncmp(col_ptr->name, MEDIA_SVC_DB_COLUMN_MAP_ID, strlen(MEDIA_SVC_DB_COLUMN_MAP_ID)) == 0)
- snprintf(temp, sizeof(temp), ", playlist_media_count IS NOT NULL AS playlist_media_count, playlist_map.%s AS pm_id", col_ptr->name);
+ if (strncmp(col_ptr->name, DB_COLUMN_MAP_ID, strlen(DB_COLUMN_MAP_ID)) == 0)
+ g_string_append_printf(table_query, ", playlist_media_count IS NOT NULL AS playlist_media_count, playlist_map.%s AS pm_id", col_ptr->name);
else
- snprintf(temp, sizeof(temp), ", playlist_map.%s", col_ptr->name);
- SAFE_STRLCAT(table_query, temp, sizeof(table_query));
+ g_string_append_printf(table_query, ", playlist_map.%s", col_ptr->name);
}
- memset(temp, 0, sizeof(temp));
}
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_MEDIA]);
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_MEDIA], i);
- if (col_ptr->is_view) {
- snprintf(temp, sizeof(temp), ", media.%s", col_ptr->name);
- SAFE_STRLCAT(table_query, temp, sizeof(table_query));
- }
- memset(temp, 0, sizeof(temp));
+ for (iter = column_list[DB_LIST_MEDIA]; iter; iter = g_slist_next(iter)) {
+ col_ptr = iter->data;
+
+ if (!col_ptr)
+ continue;
+
+ if (col_ptr->is_view)
+ g_string_append_printf(table_query, ", media.%s", col_ptr->name);
}
- sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_VIEW_PLAYLIST, MEDIA_SVC_DB_VIEW_PLAYLIST, table_query);
+ sql = sqlite3_mprintf(DB_QUERY_VIEW_PLAYLIST, DB_VIEW_PLAYLIST, table_query->str);
+ g_string_free(table_query, TRUE);
ret = _media_svc_sql_query(sql, uid);
SQLITE3_SAFE_FREE(sql);
static int __create_tag_view(uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
- bool flag = false;
+ GSList *iter = NULL;
column_info_s *col_ptr = NULL;
- int len = 0;
- int i = 0;
char *sql = NULL;
- char temp[1024] = {0 ,};
- char table_query[MEDIA_SVC_QUERY_LEN_NORMAL] = {0, };
+ GString *table_query = g_string_new(NULL);
+ media_svc_retvm_if(!table_query, MS_MEDIA_ERR_INTERNAL, "g_string_new failed");
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_TAG]);
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_TAG], i);
- if (col_ptr->is_view) {
- if (flag == true) {
- snprintf(temp, sizeof(temp), ", tag.%s", col_ptr->name);
- } else {
- snprintf(temp, sizeof(temp), "tag.%s", col_ptr->name);
- flag = true;
- }
- SAFE_STRLCAT(table_query, temp, sizeof(table_query));
- }
- memset(temp, 0, sizeof(temp));
- }
+ for (iter = column_list[DB_LIST_TAG]; iter; iter = g_slist_next(iter)) {
+ col_ptr = iter->data;
+
+ if (!col_ptr)
+ continue;
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_TAG_MAP]);
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_TAG_MAP], i);
if (col_ptr->is_view) {
- if (strncmp(col_ptr->name, MEDIA_SVC_DB_COLUMN_MAP_ID, strlen(MEDIA_SVC_DB_COLUMN_MAP_ID)) == 0)
- snprintf(temp, sizeof(temp), ", tag_media_count IS NOT NULL AS tag_media_count, tag_map.%s AS tm_id", col_ptr->name);
+ if (table_query->len != 0)
+ g_string_append_printf(table_query, ", tag.%s", col_ptr->name);
else
- snprintf(temp, sizeof(temp), ", tag_map.%s", col_ptr->name);
- SAFE_STRLCAT(table_query, temp, sizeof(table_query));
+ g_string_append_printf(table_query, "tag.%s", col_ptr->name);
}
- memset(temp, 0, sizeof(temp));
}
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_MEDIA]);
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_MEDIA], i);
+ for (iter = column_list[DB_LIST_TAG_MAP]; iter; iter = g_slist_next(iter)) {
+ col_ptr = iter->data;
+
+ if (!col_ptr)
+ continue;
+
if (col_ptr->is_view) {
- snprintf(temp, sizeof(temp), ", media.%s", col_ptr->name);
- SAFE_STRLCAT(table_query, temp, sizeof(table_query));
+ if (strncmp(col_ptr->name, DB_COLUMN_MAP_ID, strlen(DB_COLUMN_MAP_ID)) == 0)
+ g_string_append_printf(table_query, ", tag_media_count IS NOT NULL AS tag_media_count, tag_map.%s AS tm_id", col_ptr->name);
+ else
+ g_string_append_printf(table_query, ", tag_map.%s", col_ptr->name);
}
- memset(temp, 0, sizeof(temp));
}
- sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_VIEW_TAG, MEDIA_SVC_DB_VIEW_TAG, table_query);
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
+ for (iter = column_list[DB_LIST_MEDIA]; iter; iter = g_slist_next(iter)) {
+ col_ptr = iter->data;
- return ret;
-}
+ if (!col_ptr)
+ continue;
-static int __media_svc_rebuild_view_query(sqlite3 *db_handle, uid_t uid)
-{
- int ret = MS_MEDIA_ERR_NONE;
- char *sql = NULL;
-
- /*drop playlist_view, tag_view */
- sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_DROP_VIEW, MEDIA_SVC_DB_VIEW_PLAYLIST);
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ if (col_ptr->is_view)
+ g_string_append_printf(table_query, ", media.%s", col_ptr->name);
+ }
- sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_DROP_VIEW, MEDIA_SVC_DB_VIEW_TAG);
+ sql = sqlite3_mprintf(DB_QUERY_VIEW_TAG, DB_VIEW_TAG, table_query->str);
+ g_string_free(table_query, TRUE);
ret = _media_svc_sql_query(sql, uid);
SQLITE3_SAFE_FREE(sql);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
-
- /*create playlist_view */
- ret = __create_playlist_view(uid);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- /*create tag_view */
- ret = __create_tag_view(uid);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
-
- return MS_MEDIA_ERR_NONE;
+ return ret;
}
int _media_svc_make_table_query(const char *table_name, media_svc_table_slist_e list, uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
+ GSList *iter = NULL;
table_info_s *tb = NULL;
column_info_s *col_ptr = NULL;
char *sql = NULL;
- char table_query[MEDIA_SVC_QUERY_LEN_NORMAL] = {0, };
- char index_query[MEDIA_SVC_QUERY_LEN_NORMAL] = {0, };
- char trigger_query[MEDIA_SVC_QUERY_LEN_NORMAL] = {0, };
- char table_query_sub[1024] = {0, };
- char temp[1024] = {0 ,};
- bool flag = false;
- bool sub_flag = false;
- int len = 0;
- int i = 0;
+ GString *table_query = g_string_new(NULL);
+ GString *trigger_query = g_string_new(NULL);
+ GString *unique_query = g_string_new(NULL);
+
+ if (!table_query || !trigger_query || !unique_query) {
+ media_svc_error("g_string_new failed");
+ ret = MS_MEDIA_ERR_INTERNAL;
+ goto ERROR;
+ }
tb = g_hash_table_lookup(table, table_name);
if (tb == NULL) {
media_svc_debug("lookup fail.. table name [%s] ", table_name);
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_MEDIA);
+ ret = MS_MEDIA_ERR_INTERNAL;
+ goto ERROR;
}
- len = g_slist_length(column_list[list]);
-
- if (len == 0) {
- media_svc_error("Invalid column");
- return MS_MEDIA_ERR_INTERNAL;
- }
+ for (iter = column_list[list]; iter; iter = g_slist_next(iter)) {
+ col_ptr = iter->data;
+ if (!col_ptr)
+ continue;
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[list], i);
/*create table */
- if (col_ptr->has_option) {
- if (flag == true) {
- snprintf(temp, sizeof(temp), ", %s %s %s", col_ptr->name, col_ptr->type, col_ptr->option);
- } else {
- snprintf(temp, sizeof(temp), "%s %s %s", col_ptr->name, col_ptr->type, col_ptr->option);
- flag = true;
- }
- SAFE_STRLCAT(table_query, temp, sizeof(table_query));
+ if (col_ptr->option) {
+ if (table_query->len != 0)
+ g_string_append_printf(table_query, ", %s %s %s", col_ptr->name, col_ptr->type, col_ptr->option);
+ else
+ g_string_append_printf(table_query, "%s %s %s", col_ptr->name, col_ptr->type, col_ptr->option);
} else {
- if (flag == true) {
- snprintf(temp, sizeof(temp), ", %s %s", col_ptr->name, col_ptr->type);
- } else {
- snprintf(temp, sizeof(temp), "%s %s", col_ptr->name, col_ptr->type);
- flag = true;
- }
- SAFE_STRLCAT(table_query, temp, sizeof(table_query));
+ if (table_query->len != 0)
+ g_string_append_printf(table_query, ", %s %s", col_ptr->name, col_ptr->type);
+ else
+ g_string_append_printf(table_query, "%s %s", col_ptr->name, col_ptr->type);
}
- memset(temp, 0, sizeof(temp));
/*unique */
if (col_ptr->is_unique) {
- if (sub_flag == true) {
- snprintf(temp, sizeof(temp), ", %s", col_ptr->name);
- } else {
- snprintf(temp, sizeof(temp), "%s", col_ptr->name);
- sub_flag = true;
- }
- SAFE_STRLCAT(table_query_sub, temp, sizeof(table_query_sub));
- }
- memset(temp, 0, sizeof(temp));
-
- /*create index */
- if (col_ptr->is_index) {
- snprintf(temp, sizeof(temp), MEDIA_SVC_DB_QUERY_INDEX, col_ptr->index_name, table_name, col_ptr->name);
- SAFE_STRLCAT(index_query, temp, sizeof(index_query));
+ if (unique_query->len != 0)
+ g_string_append_printf(unique_query, ", %s", col_ptr->name);
+ else
+ g_string_append_printf(unique_query, "%s", col_ptr->name);
}
- memset(temp, 0, sizeof(temp));
/*create trigger */
if (col_ptr->is_trigger) {
if (STRING_VALID(tb->trigger_name)) {
- if (strncmp(table_name, MEDIA_SVC_DB_TABLE_ALBUM, strlen(MEDIA_SVC_DB_TABLE_ALBUM)) == 0)
- snprintf(temp, sizeof(temp), MEDIA_SVC_DB_QUERY_TRIGGER_WITH_COUNT, tb->trigger_name, tb->event_table, tb->action_table, tb->event_table, col_ptr->name, col_ptr->name, col_ptr->name, col_ptr->name);
- else
- snprintf(temp, sizeof(temp), MEDIA_SVC_DB_QUERY_TRIGGER, tb->trigger_name, tb->event_table, tb->action_table, col_ptr->name, col_ptr->name);
-
- SAFE_STRLCAT(trigger_query, temp, sizeof(trigger_query));
+ if (strncmp(table_name, DB_TABLE_ALBUM, strlen(DB_TABLE_ALBUM)) == 0) {
+ g_string_append_printf(trigger_query, DB_QUERY_TRIGGER_WITH_COUNT,
+ tb->trigger_name, tb->event_table, tb->action_table, tb->event_table,
+ col_ptr->name, col_ptr->name, col_ptr->name, col_ptr->name);
+ } else {
+ g_string_append_printf(trigger_query, DB_QUERY_TRIGGER,
+ tb->trigger_name, tb->event_table, tb->action_table,
+ col_ptr->name, col_ptr->name);
+ }
} else {
media_svc_error("invalid trigger name");
}
}
- memset(temp, 0, sizeof(temp));
}
/*send queries */
- if (sub_flag == true) {
- sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_TABLE_WITH_UNIQUE, table_name, table_query, table_query_sub);
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- memset(table_query, 0, sizeof(table_query));
- memset(table_query_sub, 0, sizeof(table_query_sub));
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- } else {
- sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_TABLE, table_name, table_query);
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- memset(table_query, 0, sizeof(table_query));
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- }
+ if (unique_query->len > 0)
+ sql = sqlite3_mprintf(DB_QUERY_TABLE_WITH_UNIQUE, table_name, table_query->str, unique_query->str);
+ else
+ sql = sqlite3_mprintf(DB_QUERY_TABLE, table_name, table_query->str);
- if (STRING_VALID(index_query)) {
- ret = _media_svc_sql_query(index_query, uid);
- memset(index_query, 0, sizeof(index_query));
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- }
+ ret = _media_svc_sql_query(sql, uid);
+ SQLITE3_SAFE_FREE(sql);
+ if (ret != MS_MEDIA_ERR_NONE)
+ goto ERROR;
- if (STRING_VALID(trigger_query)) {
- ret = _media_svc_sql_query(trigger_query, uid);
- memset(trigger_query, 0, sizeof(trigger_query));
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ if (trigger_query->len > 0) {
+ ret = _media_svc_sql_query(trigger_query->str, uid);
+ if (ret != MS_MEDIA_ERR_NONE)
+ goto ERROR;
}
/*create view */
- if (strncmp(table_name, MEDIA_SVC_DB_TABLE_PLAYLIST, strlen(MEDIA_SVC_DB_TABLE_PLAYLIST)) == 0) {
+ if (strncmp(table_name, DB_TABLE_PLAYLIST, strlen(DB_TABLE_PLAYLIST)) == 0)
ret = __create_playlist_view(uid);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
-
- } else if (strncmp(table_name, MEDIA_SVC_DB_TABLE_TAG, strlen(MEDIA_SVC_DB_TABLE_TAG)) == 0) {
+ else if (strncmp(table_name, DB_TABLE_TAG, strlen(DB_TABLE_TAG)) == 0)
ret = __create_tag_view(uid);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- }
- return MS_MEDIA_ERR_NONE;
+ERROR:
+ if (trigger_query)
+ g_string_free(trigger_query, TRUE);
+ if (unique_query)
+ g_string_free(unique_query, TRUE);
+ if (table_query)
+ g_string_free(table_query, TRUE);
+
+ return ret;
}
-static int __media_svc_upgrade_table_query(sqlite3 *db_handle, const char *table_name, media_svc_table_slist_e list, uid_t uid)
+static void __media_svc_table_free(gpointer data)
{
- int ret = MS_MEDIA_ERR_NONE;
- column_info_s *col_ptr = NULL;
- char *sql = NULL;
- char temp[1024] = {0, };
- int len, i;
- int cur_version = 0;
- sqlite3_stmt *sql_stmt = NULL;
-
- len = g_slist_length(column_list[list]);
+ table_info_s *tb = (table_info_s *) data;
- sql = sqlite3_mprintf("PRAGMA user_version");
- ret = _media_svc_sql_prepare_to_step(db_handle, sql, &sql_stmt);
-
- if (ret != MS_MEDIA_ERR_NONE) {
- media_svc_error("error when get user_version. err = [%d]", ret);
- return ret;
- }
- cur_version = sqlite3_column_int(sql_stmt, 0);
- SQLITE3_FINALIZE(sql_stmt);
+ g_free(tb->trigger_name);
+ g_free(tb->view_name);
+ g_free(tb->event_table);
+ g_free(tb->action_table);
+ g_free(tb);
+}
- len = g_slist_length(column_list[list]);
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[list], i);
- if (col_ptr->version > cur_version) {
- /*alter table */
- if (col_ptr->has_option)
- snprintf(temp, sizeof(temp), "%s %s %s", col_ptr->name, col_ptr->type, col_ptr->option);
- else
- snprintf(temp, sizeof(temp), "%s %s", col_ptr->name, col_ptr->type);
- sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_ALTER_TABLE, table_name, temp);
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- /*create index */
- if (col_ptr->is_index) {
- memset(temp, 0, sizeof(temp));
- snprintf(temp, sizeof(temp), MEDIA_SVC_DB_QUERY_INDEX, col_ptr->index_name, table_name, col_ptr->name);
- ret = _media_svc_sql_query(temp, uid);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- }
- }
- memset(temp, 0, sizeof(temp));
- }
+static void __media_svc_column_free(gpointer data)
+{
+ column_info_s *col = (column_info_s *) data;
- return MS_MEDIA_ERR_NONE;
+ g_free(col->name);
+ g_free(col->type);
+ g_free(col->option);
+ g_free(col);
}
-int _media_svc_init_table_query(const char *event_table_name)
+int _media_svc_init_table_query(void)
{
int ret = MS_MEDIA_ERR_NONE;
- int i = 0;
/*variable initialize.. */
- table = g_hash_table_new(g_str_hash, g_str_equal);
- for (i = 0; i < MEDIA_SVC_DB_LIST_MAX; i++)
- column_list[i] = g_slist_alloc();
-
- /*table specification.. (table_name, index, unique set, trigger, view, trigger name, event table, action table, view name) */
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_MEDIA, NULL, NULL, NULL, NULL);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TRIGGER_FOLDER, event_table_name, MEDIA_SVC_DB_TABLE_FOLDER, NULL);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_PLAYLIST_MAP, MEDIA_SVC_DB_TRIGGER_PLAYLIST_MAP, event_table_name, MEDIA_SVC_DB_TABLE_PLAYLIST_MAP, NULL);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_PLAYLIST, MEDIA_SVC_DB_TRIGGER_PLAYLIST_MAP1, MEDIA_SVC_DB_TABLE_PLAYLIST, MEDIA_SVC_DB_TABLE_PLAYLIST_MAP, MEDIA_SVC_DB_VIEW_PLAYLIST);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_ALBUM, MEDIA_SVC_DB_TRIGGER_ALBUM, event_table_name, MEDIA_SVC_DB_TABLE_ALBUM, NULL);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_TAG_MAP, MEDIA_SVC_DB_TRIGGER_TAG_MAP, event_table_name, MEDIA_SVC_DB_TABLE_TAG_MAP, NULL);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_TAG, MEDIA_SVC_DB_TRIGGER_TAG_MAP1, MEDIA_SVC_DB_TABLE_TAG, MEDIA_SVC_DB_TABLE_TAG_MAP, MEDIA_SVC_DB_VIEW_TAG);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_BOOKMARK, MEDIA_SVC_DB_TRIGGER_BOOKMARK, event_table_name, MEDIA_SVC_DB_TABLE_BOOKMARK, NULL);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_STORAGE, NULL, NULL, NULL, NULL);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TRIGGER_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_MEDIA, MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, NULL);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_table_info(MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TRIGGER_FACE, MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_FACE, NULL);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ table = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, __media_svc_table_free);
+
+ /*table specification.. (table_name, trigger name, event table, action table, view name) */
+ __add_table_info(DB_TABLE_MEDIA, NULL, NULL, NULL, NULL);
+ __add_table_info(DB_TABLE_FOLDER, NULL, NULL, NULL, NULL);
+ __add_table_info(DB_TABLE_PLAYLIST_MAP, DB_TRIGGER_PLAYLIST_MAP, DB_TABLE_MEDIA, DB_TABLE_PLAYLIST_MAP, NULL);
+ __add_table_info(DB_TABLE_PLAYLIST, DB_TRIGGER_PLAYLIST_MAP1, DB_TABLE_PLAYLIST, DB_TABLE_PLAYLIST_MAP, DB_VIEW_PLAYLIST);
+ __add_table_info(DB_TABLE_ALBUM, DB_TRIGGER_ALBUM, DB_TABLE_MEDIA, DB_TABLE_ALBUM, NULL);
+ __add_table_info(DB_TABLE_TAG_MAP, DB_TRIGGER_TAG_MAP, DB_TABLE_MEDIA, DB_TABLE_TAG_MAP, NULL);
+ __add_table_info(DB_TABLE_TAG, DB_TRIGGER_TAG_MAP1, DB_TABLE_TAG, DB_TABLE_TAG_MAP, DB_VIEW_TAG);
+ __add_table_info(DB_TABLE_BOOKMARK, DB_TRIGGER_BOOKMARK, DB_TABLE_MEDIA, DB_TABLE_BOOKMARK, NULL);
+ __add_table_info(DB_TABLE_STORAGE, NULL, NULL, NULL, NULL);
+ __add_table_info(DB_TABLE_FACE_SCAN_LIST, DB_TRIGGER_FACE_SCAN_LIST, DB_TABLE_MEDIA, DB_TABLE_FACE_SCAN_LIST, NULL);
+ __add_table_info(DB_TABLE_FACE, DB_TRIGGER_FACE, DB_TABLE_FACE_SCAN_LIST, DB_TABLE_FACE, NULL);
/*insert column info.. */
/*media*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_id", MEDIA_SVC_DB_TYPE_TEXT, "PRIMARY KEY", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_path", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL UNIQUE", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_display_name", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V2, "media_file_name_idx", false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_type", MEDIA_SVC_DB_TYPE_INT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_mime_type", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_size", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_added_time", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_modified_time", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, "media_modified_time_idx", false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "folder_id", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V2, "folder_uuid_idx", false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_thumbnail_path", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_title", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "album_id", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_album", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_artist", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_album_artist", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_genre", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_composer", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_year", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_recorded_date", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_copyright", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_track_num", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_description", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_bitrate", MEDIA_SVC_DB_TYPE_INT, "DEFAULT -1", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_bitpersample", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V3, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_samplerate", MEDIA_SVC_DB_TYPE_INT, "DEFAULT -1", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_channel", MEDIA_SVC_DB_TYPE_INT, "DEFAULT -1", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_duration", MEDIA_SVC_DB_TYPE_INT, "DEFAULT -1", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_longitude", MEDIA_SVC_DB_TYPE_DOUBLE, "DEFAULT 0", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_latitude", MEDIA_SVC_DB_TYPE_DOUBLE, "DEFAULT 0", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_altitude", MEDIA_SVC_DB_TYPE_DOUBLE, "DEFAULT 0", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "exposure_time", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V4, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "fnumber", MEDIA_SVC_DB_TYPE_DOUBLE, "DEFAULT 0", USER_V4, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "iso", MEDIA_SVC_DB_TYPE_INT, "DEFAULT -1", USER_V4, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "model", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V4, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_width", MEDIA_SVC_DB_TYPE_INT, "DEFAULT -1", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_height", MEDIA_SVC_DB_TYPE_INT, "DEFAULT -1", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_datetaken", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_orientation", MEDIA_SVC_DB_TYPE_INT, "DEFAULT -1", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_rating", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_favourite", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_is_drm", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_storage_type", MEDIA_SVC_DB_TYPE_INT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_timeline", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, "media_timeline_idx", false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "sync_status", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_file_name_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_title_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_album_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_artist_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_album_artist_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_genre_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_composer_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_copyright_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_description_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "age_rating_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "keyword_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- /* storage_uuid column is added in DB v4. When doing DB upgrade to v4, if storage_uuid is NOT NULL, alter table failed. */
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "storage_uuid", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V4, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "validity", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 1", USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- /* color column is added with dcm. (DB v5) */
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_MEDIA], "media_360", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V5, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_id", DB_TYPE_TEXT, "PRIMARY KEY", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_path", DB_TYPE_TEXT, "NOT NULL UNIQUE", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_display_name", DB_TYPE_TEXT, "NOT NULL", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_type", DB_TYPE_INT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_mime_type", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_size", DB_TYPE_INT, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_added_time", DB_TYPE_INT, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_modified_time", DB_TYPE_INT, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "folder_id", DB_TYPE_TEXT, "NOT NULL", false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_thumbnail_path", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_title", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "album_id", DB_TYPE_INT, "DEFAULT 0", false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_album", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_artist", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_album_artist", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_genre", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_composer", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_year", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_recorded_date", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_copyright", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_track_num", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_description", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_bitrate", DB_TYPE_INT, "DEFAULT -1", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_bitpersample", DB_TYPE_INT, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_samplerate", DB_TYPE_INT, "DEFAULT -1", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_channel", DB_TYPE_INT, "DEFAULT -1", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_duration", DB_TYPE_INT, "DEFAULT -1", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_longitude", DB_TYPE_DOUBLE, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_latitude", DB_TYPE_DOUBLE, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_altitude", DB_TYPE_DOUBLE, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "exposure_time", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "fnumber", DB_TYPE_DOUBLE, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "iso", DB_TYPE_INT, "DEFAULT -1", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "model", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_width", DB_TYPE_INT, "DEFAULT -1", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_height", DB_TYPE_INT, "DEFAULT -1", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_datetaken", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_orientation", DB_TYPE_INT, "DEFAULT -1", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_rating", DB_TYPE_INT, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_favourite", DB_TYPE_INT, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_is_drm", DB_TYPE_INT, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_storage_type", DB_TYPE_INT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_timeline", DB_TYPE_INT, "DEFAULT 0", false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_file_name_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_title_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_album_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_artist_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_album_artist_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_genre_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_composer_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_copyright_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_description_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "storage_uuid", DB_TYPE_TEXT, NULL, false, false, true);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "validity", DB_TYPE_INT, "DEFAULT 1", false, false, false);
+ __add_column_info(&column_list[DB_LIST_MEDIA], "media_360", DB_TYPE_INT, "DEFAULT 0", false, false, true);
/*folder*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FOLDER], "folder_id", MEDIA_SVC_DB_TYPE_TEXT, "PRIMARY KEY", USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FOLDER], "folder_path", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V2, NULL, true, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FOLDER], "folder_name", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FOLDER], "folder_modified_time", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FOLDER], "folder_name_pinyin", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FOLDER], "folder_storage_type", MEDIA_SVC_DB_TYPE_INT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- /* storage_uuid column is added in DB v4. When doing DB upgrade to v4, if storage_uuid is NOT NULL, alter table failed. */
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FOLDER], "storage_uuid", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V4, NULL, true, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FOLDER], "validity", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 1", USER_V4, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_FOLDER], "folder_id", DB_TYPE_TEXT, "PRIMARY KEY", false, false, false);
+ __add_column_info(&column_list[DB_LIST_FOLDER], "folder_path", DB_TYPE_TEXT, "NOT NULL", true, false, false);
+ __add_column_info(&column_list[DB_LIST_FOLDER], "folder_name", DB_TYPE_TEXT, "NOT NULL", false, false, false);
+ __add_column_info(&column_list[DB_LIST_FOLDER], "folder_modified_time", DB_TYPE_INT, "DEFAULT 0", false, false, false);
+ __add_column_info(&column_list[DB_LIST_FOLDER], "folder_name_pinyin", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_FOLDER], "folder_storage_type", DB_TYPE_INT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_FOLDER], "storage_uuid", DB_TYPE_TEXT, NULL, true, false, false);
+ __add_column_info(&column_list[DB_LIST_FOLDER], "validity", DB_TYPE_INT, "DEFAULT 1", false, false, false);
/*playlist_map*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP], "_id", MEDIA_SVC_DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP], "playlist_id", MEDIA_SVC_DB_TYPE_INT, "NOT NULL", USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP], "media_id", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V2, NULL, false, true, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP], "playlist_member_order", MEDIA_SVC_DB_TYPE_INT, "NOT NULL", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_PLAYLIST_MAP], "_id", DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", false, false, true);
+ __add_column_info(&column_list[DB_LIST_PLAYLIST_MAP], "playlist_id", DB_TYPE_INT, "NOT NULL", false, false, false);
+ __add_column_info(&column_list[DB_LIST_PLAYLIST_MAP], "media_id", DB_TYPE_TEXT, "NOT NULL", false, true, false);
+ __add_column_info(&column_list[DB_LIST_PLAYLIST_MAP], "playlist_member_order", DB_TYPE_INT, "NOT NULL", false, false, true);
/*playlist*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_PLAYLIST], "playlist_id", MEDIA_SVC_DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", USER_V2, NULL, false, true, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_PLAYLIST], "playlist_name", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL UNIQUE", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_PLAYLIST], "thumbnail_path", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_PLAYLIST], "playlist_id", DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", false, true, true);
+ __add_column_info(&column_list[DB_LIST_PLAYLIST], "playlist_name", DB_TYPE_TEXT, "NOT NULL UNIQUE", false, false, true);
+ __add_column_info(&column_list[DB_LIST_PLAYLIST], "thumbnail_path", DB_TYPE_TEXT, NULL, false, false, true);
/*album*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_ALBUM], "album_id", MEDIA_SVC_DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", USER_V2, NULL, false, true, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_ALBUM], "name", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_ALBUM], "artist", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_ALBUM], "album_art", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_ALBUM], "album_id", DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", false, true, false);
+ __add_column_info(&column_list[DB_LIST_ALBUM], "name", DB_TYPE_TEXT, "NOT NULL", false, false, false);
+ __add_column_info(&column_list[DB_LIST_ALBUM], "artist", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_ALBUM], "album_art", DB_TYPE_TEXT, NULL, false, false, false);
/*tag_map*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_TAG_MAP], "_id", MEDIA_SVC_DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_TAG_MAP], "tag_id", MEDIA_SVC_DB_TYPE_INT, "NOT NULL", USER_V2, NULL, true, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_TAG_MAP], "media_id", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V2, NULL, true, true, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_TAG_MAP], "_id", DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", false, false, true);
+ __add_column_info(&column_list[DB_LIST_TAG_MAP], "tag_id", DB_TYPE_INT, "NOT NULL", true, false, false);
+ __add_column_info(&column_list[DB_LIST_TAG_MAP], "media_id", DB_TYPE_TEXT, "NOT NULL", true, true, false);
/*tag*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_TAG], "tag_id ", MEDIA_SVC_DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", USER_V2, NULL, false, true, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_TAG], "tag_name", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL UNIQUE", USER_V2, NULL, false, false, true);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_TAG], "tag_id ", DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", false, true, true);
+ __add_column_info(&column_list[DB_LIST_TAG], "tag_name", DB_TYPE_TEXT, "NOT NULL UNIQUE", false, false, true);
/*bookmark*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_BOOKMARK], "bookmark_id", MEDIA_SVC_DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_BOOKMARK], "media_id", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V2, NULL, true, true, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_BOOKMARK], "bookmark_marked_time", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V2, NULL, true, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_BOOKMARK], "bookmark_thumbnail_path", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V2, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_BOOKMARK], "bookmark_name", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V6, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_BOOKMARK], "bookmark_id", DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", false, false, false);
+ __add_column_info(&column_list[DB_LIST_BOOKMARK], "media_id", DB_TYPE_TEXT, "NOT NULL", true, true, false);
+ __add_column_info(&column_list[DB_LIST_BOOKMARK], "bookmark_marked_time", DB_TYPE_INT, "DEFAULT 0", true, false, false);
+ __add_column_info(&column_list[DB_LIST_BOOKMARK], "bookmark_thumbnail_path", DB_TYPE_TEXT, NULL, false, false, false);
+ __add_column_info(&column_list[DB_LIST_BOOKMARK], "bookmark_name", DB_TYPE_TEXT, NULL, false, false, false);
/*storage*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_STORAGE], "storage_id", MEDIA_SVC_DB_TYPE_TEXT, "PRIMARY KEY", USER_V3, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_STORAGE], "storage_path", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V3, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_STORAGE], "storage_type", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V3, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_STORAGE], "validity", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 1", USER_V3, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_STORAGE], "storage_id", DB_TYPE_TEXT, "PRIMARY KEY", false, false, false);
+ __add_column_info(&column_list[DB_LIST_STORAGE], "storage_path", DB_TYPE_TEXT, "NOT NULL", false, false, false);
+ __add_column_info(&column_list[DB_LIST_STORAGE], "storage_type", DB_TYPE_INT, "DEFAULT 0", false, false, false);
+ __add_column_info(&column_list[DB_LIST_STORAGE], "validity", DB_TYPE_INT, "DEFAULT 1", false, false, false);
/*face scan list*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE_SCAN_LIST], "media_id", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL UNIQUE", USER_V4, NULL, false, true, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE_SCAN_LIST], "modified_time", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V6, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_FACE_SCAN_LIST], "media_id", DB_TYPE_TEXT, "NOT NULL UNIQUE", false, true, false);
+ __add_column_info(&column_list[DB_LIST_FACE_SCAN_LIST], "modified_time", DB_TYPE_INT, "DEFAULT 0", false, false, false);
/*face*/
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE], "media_face_id", MEDIA_SVC_DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", USER_V4, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE], "media_id", MEDIA_SVC_DB_TYPE_TEXT, "NOT NULL", USER_V4, NULL, true, true, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE], "face_rect_x", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V4, NULL, true, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE], "face_rect_y", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V4, NULL, true, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE], "face_rect_w", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V4, NULL, true, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE], "face_rect_h", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V4, NULL, true, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE], "face_orientation", MEDIA_SVC_DB_TYPE_INT, "DEFAULT 0", USER_V4, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- ret = __media_svc_add_column_info(&column_list[MEDIA_SVC_DB_LIST_FACE], "media_face_tag", MEDIA_SVC_DB_TYPE_TEXT, NULL, USER_V4, NULL, false, false, false);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ __add_column_info(&column_list[DB_LIST_FACE], "media_face_id", DB_TYPE_INT, "PRIMARY KEY AUTOINCREMENT", false, false, false);
+ __add_column_info(&column_list[DB_LIST_FACE], "media_id", DB_TYPE_TEXT, "NOT NULL", true, true, false);
+ __add_column_info(&column_list[DB_LIST_FACE], "face_rect_x", DB_TYPE_INT, "DEFAULT 0", true, false, false);
+ __add_column_info(&column_list[DB_LIST_FACE], "face_rect_y", DB_TYPE_INT, "DEFAULT 0", true, false, false);
+ __add_column_info(&column_list[DB_LIST_FACE], "face_rect_w", DB_TYPE_INT, "DEFAULT 0", true, false, false);
+ __add_column_info(&column_list[DB_LIST_FACE], "face_rect_h", DB_TYPE_INT, "DEFAULT 0", true, false, false);
+ __add_column_info(&column_list[DB_LIST_FACE], "face_orientation", DB_TYPE_INT, "DEFAULT 0", false, false, false);
+ __add_column_info(&column_list[DB_LIST_FACE], "media_face_tag", DB_TYPE_TEXT, NULL, false, false, false);
return ret;
}
-void __media_svc_table_free(table_info_s *tb)
-{
- SAFE_FREE(tb->trigger_name);
- SAFE_FREE(tb->view_name);
- SAFE_FREE(tb->event_table);
- SAFE_FREE(tb->action_table);
- SAFE_FREE(tb);
-}
-void __media_svc_column_free(column_info_s *col)
-{
- SAFE_FREE(col->name);
- SAFE_FREE(col->type);
- SAFE_FREE(col->option);
- SAFE_FREE(col->index_name);
- SAFE_FREE(col);
-}
-
-void _media_svc_destroy_table_query()
+void _media_svc_destroy_table_query(void)
{
int i = 0;
- table_info_s *tb = NULL;
- column_info_s *col_ptr = NULL;
- int len = 0;
/* Table Free */
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_MEDIA);
- __media_svc_table_free(tb);
- g_hash_table_remove(table, MEDIA_SVC_DB_TABLE_MEDIA);
-
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_FOLDER);
- __media_svc_table_free(tb);
- g_hash_table_remove(table, MEDIA_SVC_DB_TABLE_FOLDER);
-
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_PLAYLIST);
- __media_svc_table_free(tb);
- g_hash_table_remove(table, MEDIA_SVC_DB_TABLE_PLAYLIST);
-
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_PLAYLIST_MAP);
- __media_svc_table_free(tb);
- g_hash_table_remove(table, MEDIA_SVC_DB_TABLE_PLAYLIST_MAP);
-
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_ALBUM);
- __media_svc_table_free(tb);
- g_hash_table_remove(table, MEDIA_SVC_DB_TABLE_ALBUM);
-
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_TAG);
- __media_svc_table_free(tb);
- g_hash_table_remove(table, MEDIA_SVC_DB_TABLE_TAG);
-
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_TAG_MAP);
- __media_svc_table_free(tb);
- g_hash_table_remove(table, MEDIA_SVC_DB_TABLE_TAG_MAP);
-
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_BOOKMARK);
- __media_svc_table_free(tb);
- g_hash_table_remove(table, MEDIA_SVC_DB_TABLE_BOOKMARK);
-
- tb = g_hash_table_lookup(table, MEDIA_SVC_DB_TABLE_STORAGE);
- __media_svc_table_free(tb);
- g_hash_table_remove(table, MEDIA_SVC_DB_TABLE_STORAGE);
-
g_hash_table_destroy(table);
+ table = NULL;
/* Column Free */
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_MEDIA]);
-
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_MEDIA], i);
- __media_svc_column_free(col_ptr);
- }
-
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_FOLDER]);
-
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_FOLDER], i);
- __media_svc_column_free(col_ptr);
- }
-
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP]);
-
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP], i);
- __media_svc_column_free(col_ptr);
- }
-
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_PLAYLIST]);
-
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_PLAYLIST], i);
- __media_svc_column_free(col_ptr);
+ for (i = 0; i < DB_LIST_MAX; i++) {
+ g_slist_free_full(column_list[i], __media_svc_column_free);
+ column_list[i] = NULL;
}
-
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_ALBUM]);
-
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_ALBUM], i);
- __media_svc_column_free(col_ptr);
- }
-
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_TAG_MAP]);
-
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_TAG_MAP], i);
- __media_svc_column_free(col_ptr);
- }
-
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_TAG]);
-
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_TAG], i);
- __media_svc_column_free(col_ptr);
- }
-
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_BOOKMARK]);
-
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_BOOKMARK], i);
- __media_svc_column_free(col_ptr);
- }
-
- len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_STORAGE]);
-
- for (i = 1; i < len; i++) {
- col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_STORAGE], i);
- __media_svc_column_free(col_ptr);
- }
-
- for (i = 0; i < MEDIA_SVC_DB_LIST_MAX; i++)
- g_slist_free(column_list[i]);
-
-}
-
-static int __alter_table(sqlite3 *db_handle, uid_t uid)
-{
- int ret = MS_MEDIA_ERR_NONE;
-
- ret = __media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_MEDIA, MEDIA_SVC_DB_LIST_MEDIA, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __media_svc_upgrade_table_query [%d]", ret);
-
- ret = __media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_PLAYLIST_MAP, MEDIA_SVC_DB_LIST_PLAYLIST_MAP, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __media_svc_upgrade_table_query [%d]", ret);
-
- ret = __media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_PLAYLIST, MEDIA_SVC_DB_LIST_PLAYLIST, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __media_svc_upgrade_table_query [%d]", ret);
-
- ret = __media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_ALBUM, MEDIA_SVC_DB_LIST_ALBUM, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __media_svc_upgrade_table_query [%d]", ret);
-
- ret = __media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_TAG_MAP, MEDIA_SVC_DB_LIST_TAG_MAP, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __media_svc_upgrade_table_query [%d]", ret);
-
- ret = __media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_TAG, MEDIA_SVC_DB_LIST_TAG, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __media_svc_upgrade_table_query [%d]", ret);
-
- ret = __media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_BOOKMARK, MEDIA_SVC_DB_LIST_BOOKMARK, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __media_svc_upgrade_table_query [%d]", ret);
-
- ret = __media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_LIST_STORAGE, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __media_svc_upgrade_table_query [%d]", ret);
-
- return ret;
-}
-
-static int __drop_tmp_table(uid_t uid)
-{
- int ret = MS_MEDIA_ERR_NONE;
- char *sql = NULL;
-
- sql = sqlite3_mprintf("DROP TABLE %q;", MEDIA_SVC_DB_TABLE_TMP_TABLE);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
-
- return ret;
-}
-
-static int __alter_and_rename_table(const char *table, uid_t uid)
-{
- int ret = MS_MEDIA_ERR_NONE;
- char *sql = NULL;
-
- sql = sqlite3_mprintf("ALTER TABLE %q RENAME TO %q;", table, MEDIA_SVC_DB_TABLE_TMP_TABLE);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
-
- return ret;
-}
-
-static int __update_db_from_V6_to_V8(uid_t uid) //tizen 4.0 to 5.5
-{
- int ret = MS_MEDIA_ERR_NONE;
- char *sql = NULL;
-
- /*Drop view first*/
- sql = sqlite3_mprintf("DROP VIEW IF EXISTS %q;DROP VIEW IF EXISTS %q;DROP VIEW IF EXISTS %q",
- MEDIA_SVC_DB_VIEW_PLAYLIST, MEDIA_SVC_DB_VIEW_TAG, MEDIA_SVC_DB_VIEW_MEDIA);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- /******Upgrade Media Table******/
- /* remove user data columns */
- ret = __alter_and_rename_table(MEDIA_SVC_DB_TABLE_MEDIA, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __alter_and_rename_table [%d]", ret);
-
- ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_MEDIA, MEDIA_SVC_DB_LIST_MEDIA, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_make_table_query [%d]", ret);
-
- sql = sqlite3_mprintf("INSERT INTO %q (media_id, media_path, media_display_name, media_type, media_mime_type, media_size, media_added_time, media_modified_time, folder_id, media_thumbnail_path, media_title, album_id, media_album, media_artist, media_album_artist, media_genre, media_composer, media_year, media_recorded_date, media_copyright, media_track_num, media_description, media_bitrate, media_bitpersample, media_samplerate, media_channel, media_duration, media_longitude, media_latitude, media_altitude, exposure_time, fnumber, iso, model, media_width, media_height, media_datetaken, media_orientation, media_rating, media_favourite, media_is_drm, media_storage_type, media_timeline, sync_status, media_file_name_pinyin, media_title_pinyin, media_album_pinyin, media_artist_pinyin, media_album_artist_pinyin, media_genre_pinyin, media_composer_pinyin, media_copyright_pinyin, media_description_pinyin, age_rating_pinyin, keyword_pinyin, storage_uuid, validity, media_360) \
- SELECT media_uuid, path, file_name, media_type, mime_type, size, added_time, modified_time, folder_uuid, thumbnail_path, title, album_id, album, artist, album_artist, genre, composer, year, recorded_date, copyright, track_num, description, bitrate, bitpersample, samplerate, channel, duration, longitude, latitude, altitude, exposure_time, fnumber, iso, model, width, height, datetaken, orientation, rating, favourite, is_drm, storage_type, timeline, sync_status, file_name_pinyin, title_pinyin, album_pinyin, artist_pinyin, album_artist_pinyin, genre_pinyin, composer_pinyin, copyright_pinyin, description_pinyin, age_rating_pinyin, keyword_pinyin, storage_uuid, validity, is_360 FROM %q;",
- MEDIA_SVC_DB_TABLE_MEDIA, MEDIA_SVC_DB_TABLE_TMP_TABLE);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- ret = __drop_tmp_table(uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __drop_tmp_table [%d]", ret);
-
- /******Upgrade Folder Table******/
- /* remove "scan_status" column */
- ret = __alter_and_rename_table(MEDIA_SVC_DB_TABLE_FOLDER, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __alter_and_rename_table [%d]", ret);
-
- ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_LIST_FOLDER, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_make_table_query [%d]", ret);
-
- sql = sqlite3_mprintf("INSERT INTO %q (folder_id, folder_path, folder_name, folder_modified_time, folder_name_pinyin, folder_storage_type, storage_uuid, validity) SELECT folder_uuid, path, name, modified_time, name_pinyin, storage_type, storage_uuid, validity FROM %q;", MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_TMP_TABLE);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- ret = __drop_tmp_table(uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __drop_tmp_table [%d]", ret);
-
- /******Upgrade Storage Table******/
- /* remove "scan_status", "storage_name" column */
- ret = __alter_and_rename_table(MEDIA_SVC_DB_TABLE_STORAGE, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __alter_and_rename_table [%d]", ret);
-
- ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_LIST_STORAGE, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_make_table_query [%d]", ret);
-
- sql = sqlite3_mprintf("INSERT INTO %q (storage_id, storage_path, storage_type, validity) SELECT storage_uuid, storage_path, storage_type, validity FROM %q;", MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- ret = __drop_tmp_table(uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __drop_tmp_table [%d]", ret);
-
- /******Upgrade face Table******/
- /* Change "face_uuid" to "face_id" (face_uuid is TEXT, face_id is INTEGER) */
- ret = __alter_and_rename_table(MEDIA_SVC_DB_TABLE_FACE, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __alter_and_rename_table [%d]", ret);
-
- ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_LIST_FACE, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_make_table_query [%d]", ret);
-
- sql = sqlite3_mprintf("INSERT INTO %q (media_id, face_rect_x, face_rect_y, face_rect_w, face_rect_h, face_orientation, media_face_tag) SELECT media_uuid, face_rect_x, face_rect_y, face_rect_w, face_rect_h, orientation, face_tag FROM %q;", MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- ret = __drop_tmp_table(uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __drop_tmp_table [%d]", ret);
-
- /******Upgrade face_scan_list Table******/
- /* Drop trigger first */
- sql = sqlite3_mprintf("DROP TRIGGER IF EXISTS %q_%q;DROP TRIGGER IF EXISTS %q_%q;",
- MEDIA_SVC_DB_TRIGGER_FACE, MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TRIGGER_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_MEDIA);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- /* remove "storage_uuid" column */
- ret = __alter_and_rename_table(MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __alter_and_rename_table [%d]", ret);
-
- ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_LIST_FACE_SCAN_LIST, uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_make_table_query [%d]", ret);
-
- sql = sqlite3_mprintf("INSERT INTO %q (media_id, modified_time) SELECT media_uuid, modified_time FROM %q;", MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_TMP_TABLE);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- ret = __drop_tmp_table(uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to __drop_tmp_table [%d]", ret);
-
- return ret;
}
-static int __update_db_to_latest(int cur_version, uid_t uid) //tizen 5.0(and before) to 5.5
+int _media_svc_sql_query(const char *sql_str, uid_t uid)
{
- int ret = MS_MEDIA_ERR_NONE;
- char *sql = NULL;
-
- /*Drop view first*/
- sql = sqlite3_mprintf("DROP VIEW IF EXISTS %q;DROP VIEW IF EXISTS %q;DROP VIEW IF EXISTS %q",
- MEDIA_SVC_DB_VIEW_PLAYLIST, MEDIA_SVC_DB_VIEW_TAG, MEDIA_SVC_DB_VIEW_MEDIA);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- if (cur_version == USER_V6) {
- /* Drop trigger first */
- sql = sqlite3_mprintf("DROP TRIGGER IF EXISTS %q_%q;DROP TRIGGER IF EXISTS %q_%q;",
- MEDIA_SVC_DB_TRIGGER_FACE, MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TRIGGER_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_MEDIA);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
- }
-
- /*playlist */
- sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN play_order TO playlist_member_order;\
- ALTER TABLE %q RENAME COLUMN name TO playlist_name;\
- ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;",
- MEDIA_SVC_DB_TABLE_PLAYLIST_MAP, MEDIA_SVC_DB_TABLE_PLAYLIST, MEDIA_SVC_DB_TABLE_PLAYLIST_MAP);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- /*tag */
- sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN name TO tag_name;\
- ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;",
- MEDIA_SVC_DB_TABLE_TAG, MEDIA_SVC_DB_TABLE_TAG_MAP);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- /*bookmark */
- sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN marked_time TO bookmark_marked_time;\
- ALTER TABLE %q RENAME COLUMN name TO bookmark_name;\
- ALTER TABLE %q RENAME COLUMN thumbnail_path TO bookmark_thumbnail_path;\
- ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;",
- MEDIA_SVC_DB_TABLE_BOOKMARK, MEDIA_SVC_DB_TABLE_BOOKMARK,
- MEDIA_SVC_DB_TABLE_BOOKMARK, MEDIA_SVC_DB_TABLE_BOOKMARK);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- if (cur_version == USER_V7) {
- /*face */
- sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN face_id TO media_face_id;\
- ALTER TABLE %q RENAME COLUMN orientation TO face_orientation;\
- ALTER TABLE %q RENAME COLUMN face_tag TO media_face_tag;\
- ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;\
- ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;",
- MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TABLE_FACE,
- MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_FACE);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- /*folder */
- sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN modified_time TO folder_modified_time;\
- ALTER TABLE %q RENAME COLUMN path TO folder_path;\
- ALTER TABLE %q RENAME COLUMN name TO folder_name;\
- ALTER TABLE %q RENAME COLUMN name_pinyin TO folder_name_pinyin;\
- ALTER TABLE %q RENAME COLUMN storage_type TO folder_storage_type;\
- ALTER TABLE %q RENAME COLUMN folder_uuid TO folder_id;",
- MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER,
- MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- /*storage */
- sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN storage_uuid TO storage_id;",
- MEDIA_SVC_DB_TABLE_STORAGE);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
-
- /*media */
- sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN file_name_pinyin TO media_file_name_pinyin;\
- ALTER TABLE %q RENAME COLUMN title_pinyin TO media_title_pinyin;\
- ALTER TABLE %q RENAME COLUMN album_pinyin TO media_album_pinyin;\
- ALTER TABLE %q RENAME COLUMN artist_pinyin TO media_artist_pinyin;\
- ALTER TABLE %q RENAME COLUMN album_artist_pinyin TO media_album_artist_pinyin;\
- ALTER TABLE %q RENAME COLUMN genre_pinyin TO media_genre_pinyin;\
- ALTER TABLE %q RENAME COLUMN composer_pinyin TO media_composer_pinyin;\
- ALTER TABLE %q RENAME COLUMN copyright_pinyin TO media_copyright_pinyin;\
- ALTER TABLE %q RENAME COLUMN description_pinyin TO media_description_pinyin;\
- ALTER TABLE %q RENAME COLUMN folder_uuid TO folder_id;\
- ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;\
- ALTER TABLE %q RENAME COLUMN path TO media_path;\
- ALTER TABLE %q RENAME COLUMN file_name TO media_display_name;\
- ALTER TABLE %q RENAME COLUMN mime_type TO media_mime_type;\
- ALTER TABLE %q RENAME COLUMN size TO media_size;\
- ALTER TABLE %q RENAME COLUMN added_time TO media_added_time;\
- ALTER TABLE %q RENAME COLUMN modified_time TO media_modified_time;\
- ALTER TABLE %q RENAME COLUMN thumbnail_path TO media_thumbnail_path;\
- ALTER TABLE %q RENAME COLUMN title TO media_title;\
- ALTER TABLE %q RENAME COLUMN album TO media_album;\
- ALTER TABLE %q RENAME COLUMN artist TO media_artist;\
- ALTER TABLE %q RENAME COLUMN album_artist TO media_album_artist;\
- ALTER TABLE %q RENAME COLUMN genre TO media_genre;\
- ALTER TABLE %q RENAME COLUMN composer TO media_composer;\
- ALTER TABLE %q RENAME COLUMN year TO media_year;\
- ALTER TABLE %q RENAME COLUMN recorded_date TO media_recorded_date;\
- ALTER TABLE %q RENAME COLUMN copyright TO media_copyright;\
- ALTER TABLE %q RENAME COLUMN track_num TO media_track_num;\
- ALTER TABLE %q RENAME COLUMN description TO media_description;\
- ALTER TABLE %q RENAME COLUMN bitrate TO media_bitrate;\
- ALTER TABLE %q RENAME COLUMN bitpersample TO media_bitpersample;\
- ALTER TABLE %q RENAME COLUMN samplerate TO media_samplerate;\
- ALTER TABLE %q RENAME COLUMN channel TO media_channel;\
- ALTER TABLE %q RENAME COLUMN duration TO media_duration;\
- ALTER TABLE %q RENAME COLUMN longitude TO media_longitude;\
- ALTER TABLE %q RENAME COLUMN latitude TO media_latitude;\
- ALTER TABLE %q RENAME COLUMN altitude TO media_altitude;\
- ALTER TABLE %q RENAME COLUMN width TO media_width;\
- ALTER TABLE %q RENAME COLUMN height TO media_height;\
- ALTER TABLE %q RENAME COLUMN datetaken TO media_datetaken;\
- ALTER TABLE %q RENAME COLUMN orientation TO media_orientation;\
- ALTER TABLE %q RENAME COLUMN rating TO media_rating;\
- ALTER TABLE %q RENAME COLUMN favourite TO media_favourite;\
- ALTER TABLE %q RENAME COLUMN is_drm TO media_is_drm;\
- ALTER TABLE %q RENAME COLUMN storage_type TO media_storage_type;\
- ALTER TABLE %q RENAME COLUMN timeline TO media_timeline;\
- ALTER TABLE %q RENAME COLUMN is_360 TO media_360;",
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA,
- MEDIA_SVC_DB_TABLE_MEDIA);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "fail to _media_svc_sql_query [%d]", ret);
- }
-
- return ret;
+ return media_db_request_update_db(sql_str, uid);
}
-static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid)
+#define MAX_RETRY 9
+#define SLEEP_TIME 1000 * 1000
+static int __media_svc_query_direct(sqlite3 *handle, const char *query, uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
- char *sql = NULL;
-
- media_svc_debug_fenter();
-
- ret = _media_svc_init_table_query(MEDIA_SVC_DB_TABLE_MEDIA);
- if (ret != MS_MEDIA_ERR_NONE) {
- media_svc_error("Query initialization failed [%d]", ret);
- goto ERROR;
- }
-
- ret = __alter_table(db_handle, uid);
- if (ret != MS_MEDIA_ERR_NONE) {
- media_svc_error("fail to __alter_table [%d]", ret);
- goto ERROR;
- }
-
- /* Upgrade issue tizen 4.0 to 5.5 */
- if (cur_version == USER_V6) {
- ret = __update_db_from_V6_to_V8(uid);
- if (ret != MS_MEDIA_ERR_NONE) {
- media_svc_error("fail to __update_db_from_V6_to_V8 [%d]", ret);
- goto ERROR;
- }
- }
-
- /* Upgrade issue tizen 5.0 to 5.5 */
- if (cur_version < USER_V8) {
- ret = __update_db_to_latest(cur_version, uid);
- if (ret != MS_MEDIA_ERR_NONE) {
- media_svc_error("fail to __update_db_from_V6_to_V8 [%d]", ret);
- goto ERROR;
- }
- }
-
- if (cur_version == USER_V6) {
- /* Create the removed trigger */
- sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_TRIGGER, "face_cleanup_face_scan_list", MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_FACE, "media_id", "media_id");
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- if (ret != MS_MEDIA_ERR_NONE) {
- media_svc_error("_media_svc_sql_query failed");
- goto ERROR;
- }
-
- sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_TRIGGER, "face_scan_list_cleanup_media", MEDIA_SVC_DB_TABLE_MEDIA, MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, "media_id", "media_id");
+ char *zErrMsg = NULL;
+ int retry_count = 0;
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
- if (ret != MS_MEDIA_ERR_NONE) {
- media_svc_error("_media_svc_sql_query failed");
- goto ERROR;
+EXEC_RETRY:
+ ret = sqlite3_exec(handle, query, NULL, NULL, &zErrMsg);
+ if (SQLITE_OK != ret) {
+ media_svc_sec_error("Error[%s],Query[%s]", zErrMsg, query);
+ SQLITE3_SAFE_FREE(zErrMsg);
+ if (ret == SQLITE_BUSY) {
+ ret = MS_MEDIA_ERR_DB_BUSY_FAIL;
+ } else if (ret == SQLITE_CONSTRAINT) {
+ ret = MS_MEDIA_ERR_DB_CONSTRAINT_FAIL;
+ } else if (ret == SQLITE_FULL) {
+ ret = MS_MEDIA_ERR_DB_FULL_FAIL;
+ } else if (ret == SQLITE_LOCKED) {
+ if (retry_count < MAX_RETRY) {
+ media_svc_error("Locked retry[%d]", retry_count);
+ retry_count++;
+ usleep(SLEEP_TIME);
+ goto EXEC_RETRY;
+ }
+ ret = MS_MEDIA_ERR_DB_INTERNAL;
+ } else {
+ ret = MS_MEDIA_ERR_DB_INTERNAL;
}
}
- /* Rebuilding view */
- ret = __media_svc_rebuild_view_query(db_handle, uid);
-
- /* Update user version */
- sql = sqlite3_mprintf("PRAGMA user_version=%d;", LATEST_VERSION_NUMBER);
-
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
-
- _media_svc_destroy_table_query();
-
- media_svc_debug_fleave();
-
return ret;
-
-ERROR:
- _media_svc_destroy_table_query();
-
- return ret;
-}
-
-int _media_svc_sql_query(const char *sql_str, uid_t uid)
-{
- return media_db_request_update_db(sql_str, uid);
}
int _media_svc_sql_query_direct(const char *sql_str, uid_t uid)
return ret;
}
-int _media_svc_get_user_version(sqlite3 *db_handle, int *user_version)
+int _media_svc_check_table_exist(sqlite3 *db_handle, bool *exist)
{
int ret = MS_MEDIA_ERR_NONE;
sqlite3_stmt *sql_stmt = NULL;
- char *sql = sqlite3_mprintf("PRAGMA user_version;");
+ char *sql = sqlite3_mprintf("SELECT name FROM sqlite_master WHERE type='table' AND name=%Q;", DB_TABLE_MEDIA);
- ret = _media_svc_sql_prepare_to_step(db_handle, sql, &sql_stmt);
- if (ret != MS_MEDIA_ERR_NONE) {
- media_svc_error("error when get user_version.");
- return ret;
+ ret = _media_svc_sql_prepare_to_step_simple(db_handle, sql, &sql_stmt);
+ media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "_media_svc_sql_prepare_to_step_simple failed");
+
+ if (sqlite3_step(sql_stmt) != SQLITE_ROW) {
+ media_svc_debug("Need to create table");
+ *exist = false;
+ } else {
+ media_svc_debug("Already exists");
+ *exist = true;
}
- *user_version = sqlite3_column_int(sql_stmt, 0);
SQLITE3_FINALIZE(sql_stmt);
return MS_MEDIA_ERR_NONE;
int length = g_list_length(*query_list);
char *sql = NULL;
char query_bundle[MEDIA_SVC_QUERY_LEN_MAX] = {0, };
- int query_len = 0;
- int total_len = 0;
+ unsigned int query_len = 0;
+ unsigned int total_len = 0;
media_svc_debug("query list length : [%d]", length);
query_len = strlen(sql);
if (query_len >= (sizeof(query_bundle) - 1)) {
- media_svc_error("NEED TO CHECK FILE : A single query size exceeds 8k [%d]", query_len);
+ media_svc_error("NEED TO CHECK FILE : A single query size exceeds 8k [%u]", query_len);
SQLITE3_SAFE_FREE(sql);
continue;
}
_media_svc_sql_query_release(query_list);
return MS_MEDIA_ERR_NONE;
-
-}
-
-#define MAX_RETRY 9
-#define SLEEP_TIME 1000 * 1000
-static int __media_svc_query_direct(sqlite3 *handle, const char *query, uid_t uid)
-{
- int ret = MS_MEDIA_ERR_NONE;
- char *zErrMsg = NULL;
- int retry_count = 0;
-
-EXEC_RETRY:
- ret = sqlite3_exec(handle, query, NULL, NULL, &zErrMsg);
- if (SQLITE_OK != ret) {
- media_svc_sec_error("Error[%s],Query[%s]", zErrMsg, query);
- SQLITE3_SAFE_FREE(zErrMsg);
- if (ret == SQLITE_BUSY) {
- ret = MS_MEDIA_ERR_DB_BUSY_FAIL;
- } else if (ret == SQLITE_CONSTRAINT) {
- ret = MS_MEDIA_ERR_DB_CONSTRAINT_FAIL;
- } else if (ret == SQLITE_FULL) {
- ret = MS_MEDIA_ERR_DB_FULL_FAIL;
- } else if (ret == SQLITE_LOCKED) {
- if (retry_count < MAX_RETRY) {
- media_svc_error("Locked retry[%d]", retry_count);
- retry_count++;
- usleep(SLEEP_TIME);
- goto EXEC_RETRY;
- }
- ret = MS_MEDIA_ERR_DB_INTERNAL;
- } else {
- ret = MS_MEDIA_ERR_DB_INTERNAL;
- }
- }
-
- return ret;
}
int _media_svc_sql_query_list_direct(GList **query_list, uid_t uid)
int idx = 0;
int length = g_list_length(*query_list);
char *sql = NULL;
+ char *zErrMsg = NULL;
sqlite3 *handle = NULL;
+ bool with_transaction = true;
media_svc_debug("query list length[%d]", length);
if (length == 0)
ret = media_db_connect(&handle, uid, true);
media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "DB connection failed");
+ ret = sqlite3_exec(handle, "BEGIN;", NULL, NULL, &zErrMsg);
+ if (SQLITE_OK != ret) {
+ media_svc_sec_error("Transaction failed[%s]. Try an individual insert.", zErrMsg);
+ SQLITE3_SAFE_FREE(zErrMsg);
+ with_transaction = false;
+ }
+
for (idx = 0; idx < length; idx++) {
sql = (char *)g_list_nth_data(*query_list, idx);
if (STRING_VALID(sql)) {
}
}
+ if (with_transaction) {
+ ret = sqlite3_exec(handle, "COMMIT;", NULL, NULL, &zErrMsg);
+ if (SQLITE_OK != ret) {
+ media_svc_sec_error("Commit failed[%s]", zErrMsg);
+ SQLITE3_SAFE_FREE(zErrMsg);
+ media_db_disconnect(handle);
+ _media_svc_sql_query_release(query_list);
+ return MS_MEDIA_ERR_DB_INTERNAL;
+ }
+ }
+
media_db_disconnect(handle);
ZERO_LEN:
*query_list = NULL;
}
}
-
-int _media_svc_check_db_upgrade(sqlite3 *db_handle, int user_version, uid_t uid)
-{
- if (user_version < LATEST_VERSION_NUMBER) {
- media_svc_error("Current DB is out of date(%d).. So start to upgrade DB(%d)", user_version, LATEST_VERSION_NUMBER);
- return __media_svc_db_upgrade(db_handle, user_version, uid);
- } else {
- return MS_MEDIA_ERR_NONE;
- }
-}