diff options
Diffstat (limited to 'src/common/media-svc-media.c')
-rwxr-xr-x | src/common/media-svc-media.c | 67 |
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; } |