summaryrefslogtreecommitdiff
path: root/src/common/media-svc-media.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/media-svc-media.c')
-rwxr-xr-xsrc/common/media-svc-media.c67
1 files changed, 40 insertions, 27 deletions
diff --git a/src/common/media-svc-media.c b/src/common/media-svc-media.c
index 1db7421..da5bf66 100755
--- a/src/common/media-svc-media.c
+++ b/src/common/media-svc-media.c
@@ -77,7 +77,7 @@ int _media_svc_get_modified_time(sqlite3 *handle, const char *storage_id, const
return MS_MEDIA_ERR_NONE;
}
-int _media_svc_insert_item_with_data(sqlite3 *handle, const char *storage_id, media_svc_content_info_s *content_info, bool stack_query, uid_t uid)
+int _media_svc_insert_item_with_data(sqlite3 *handle, bool is_direct, const char *storage_id, media_svc_content_info_s *content_info, bool stack_query, uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
@@ -180,7 +180,7 @@ int _media_svc_insert_item_with_data(sqlite3 *handle, const char *storage_id, me
);
/* Check query length */
- if (sql != NULL && strlen(sql) >= (MEDIA_SVC_QUERY_LEN_MAX - 1)) {
+ if (sql != NULL && strlen(sql) >= (MEDIA_SVC_QUERY_LEN_MAX - 1) && is_direct == false) {
media_svc_debug("Query length is over %d byte.. So, remake query using only basic information..", MEDIA_SVC_QUERY_LEN_MAX - 1);
SQLITE3_SAFE_FREE(sql);
@@ -204,19 +204,23 @@ int _media_svc_insert_item_with_data(sqlite3 *handle, const char *storage_id, me
content_info->sync_status,
content_info->file_name_pinyin,
content_info->storage_uuid,
- content_info->media_meta.is_360 /* 1st line */
+ content_info->media_meta.is_360
);
}
if (!stack_query) {
- ret = _media_svc_sql_query(sql, uid);
+ if (is_direct)
+ ret = _media_svc_sql_query_direct(sql, uid);
+ else
+ ret = _media_svc_sql_query(sql, uid);
+
SQLITE3_SAFE_FREE(sql);
if (ret != MS_MEDIA_ERR_NONE) {
media_svc_error("failed to insert item");
return ret;
}
} else {
- media_svc_debug("query : %s", sql);
+ media_svc_sec_debug("Query[%s]", sql);
_media_svc_sql_query_add(&g_media_svc_insert_item_query_list, &sql);
}
@@ -279,7 +283,7 @@ int _media_svc_update_meta_with_data(media_svc_content_info_s *content_info)
);
if (sql != NULL) {
- media_svc_debug("query : %s", sql);
+ media_svc_debug("query[%s]", sql);
_media_svc_sql_query_add(&g_media_svc_update_item_query_list, &sql);
} else {
media_svc_error("sqlite3_mprintf failed");
@@ -416,7 +420,7 @@ int _media_svc_get_media_type_by_path(sqlite3 *handle, const char *storage_id, c
return MS_MEDIA_ERR_NONE;
}
-int _media_svc_delete_item_by_path(const char *storage_id, const char *path, bool stack_query, uid_t uid)
+int _media_svc_delete_item_by_path(bool is_direct, const char *storage_id, const char *path, bool stack_query, uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
char *sql = NULL;
@@ -427,7 +431,10 @@ int _media_svc_delete_item_by_path(const char *storage_id, const char *path, boo
sql = sqlite3_mprintf("DELETE FROM '%q' WHERE media_path='%q';", storage_id, path);
if (!stack_query) {
- ret = _media_svc_sql_query(sql, uid);
+ if (is_direct)
+ ret = _media_svc_sql_query_direct(sql, uid);
+ else
+ ret = _media_svc_sql_query(sql, uid);
SQLITE3_SAFE_FREE(sql);
if (ret != MS_MEDIA_ERR_NONE) {
media_svc_error("failed to delete item");
@@ -454,7 +461,7 @@ int _media_svc_update_item_validity(const char *storage_id, const char *path, in
sql = sqlite3_mprintf("UPDATE '%q' SET validity=%d WHERE media_path='%q';", storage_id, validity, path);
if (!stack_query) {
- ret = _media_svc_sql_query(sql, uid);
+ ret = _media_svc_sql_query_direct(sql, uid);
SQLITE3_SAFE_FREE(sql);
} else {
_media_svc_sql_query_add(&g_media_svc_item_validity_query_list, &sql);
@@ -511,32 +518,38 @@ int _media_svc_list_query_do(media_svc_query_type_e query_type, uid_t uid)
int ret = MS_MEDIA_ERR_NONE;
/* For multiples of 200, empty requests are possible */
- if (query_type == MEDIA_SVC_QUERY_UPDATE_COMMON) {
+ switch (query_type) {
+ case MEDIA_SVC_QUERY_UPDATE_COMMON:
if (g_media_svc_update_list == NULL || g_list_length(g_media_svc_update_list) == 0)
return MS_MEDIA_ERR_NONE;
- }
- ret = _media_svc_sql_begin_trans(uid);
- media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
+ ret = _media_svc_sql_begin_trans(uid);
+ media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
- if (query_type == MEDIA_SVC_QUERY_SET_ITEM_VALIDITY)
- ret = _media_svc_sql_query_list(&g_media_svc_item_validity_query_list, uid);
- else if (query_type == MEDIA_SVC_QUERY_INSERT_ITEM)
- ret = _media_svc_sql_query_list(&g_media_svc_insert_item_query_list, uid);
- else if (query_type == MEDIA_SVC_QUERY_UPDATE_ITEM)
- ret = _media_svc_sql_query_list(&g_media_svc_update_item_query_list, uid);
- else if (query_type == MEDIA_SVC_QUERY_INSERT_FOLDER)
- ret = _media_svc_sql_query_list(_media_svc_get_folder_list_ptr(), uid);
- else if (query_type == MEDIA_SVC_QUERY_UPDATE_COMMON)
ret = _media_svc_sql_query_list(&g_media_svc_update_list, uid);
- else
- ret = MS_MEDIA_ERR_INVALID_PARAMETER;
+ media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Failed to request queries");
+
+ ret = _media_svc_sql_end_trans(uid);
+ break;
+ case MEDIA_SVC_QUERY_SET_ITEM_VALIDITY:
+ ret = _media_svc_sql_query_list_direct(&g_media_svc_item_validity_query_list, uid);
+ break;
+ case MEDIA_SVC_QUERY_INSERT_ITEM:
+ ret = _media_svc_sql_query_list_direct(&g_media_svc_insert_item_query_list, uid);
+ break;
+ case MEDIA_SVC_QUERY_UPDATE_ITEM:
+ ret = _media_svc_sql_query_list_direct(&g_media_svc_update_item_query_list, uid);
+ break;
+ case MEDIA_SVC_QUERY_INSERT_FOLDER:
+ ret = _media_svc_sql_query_list_direct(_media_svc_get_folder_list_ptr(), uid);
+ break;
+ default:
+ media_svc_error("Wrong type[%d]", query_type);
+ return MS_MEDIA_ERR_INVALID_PARAMETER;
+ }
media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Failed to request queries");
- ret = _media_svc_sql_end_trans(uid);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Failed to batch insert");
-
return MS_MEDIA_ERR_NONE;
}