media_svc_retvm_if(!STRING_VALID(storage_id), MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "Path is NULL");
- sql = sqlite3_mprintf("SELECT count(*) FROM '%q' WHERE MEDIA_path='%q'", storage_id, path);
+ sql = sqlite3_mprintf("SELECT count(*) FROM '%q' WHERE media_path='%q'", storage_id, path);
ret = _media_svc_sql_prepare_to_step(handle, sql, &sql_stmt);
media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
media_svc_retvm_if(!STRING_VALID(storage_id), MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "Path is NULL");
- sql = sqlite3_mprintf("SELECT media_modified_time FROM '%q' WHERE MEDIA_path='%q'", storage_id, path);
+ sql = sqlite3_mprintf("SELECT media_modified_time FROM '%q' WHERE media_path='%q'", storage_id, path);
ret = _media_svc_sql_prepare_to_step(handle, sql, &sql_stmt);
media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
return MS_MEDIA_ERR_NONE;
}
-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 _media_svc_insert_item_with_data(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;
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;
- }
+ media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to insert item");
} else {
media_svc_sec_debug("Query[%s]", sql);
_media_svc_sql_query_add(&g_media_svc_insert_item_query_list, &sql);
char *test_sql = sqlite3_mprintf("%f, %f, %f", content_info->media_meta.longitude, content_info->media_meta.latitude, content_info->media_meta.altitude);
SQLITE3_SAFE_FREE(test_sql);
- /*Update Pinyin If Support Pinyin*/
- if (_media_svc_check_pinyin_support()) {
- if (STRING_VALID(content_info->file_name))
- _media_svc_get_pinyin_str(content_info->file_name, &content_info->file_name_pinyin);
- if (STRING_VALID(content_info->media_meta.title))
- _media_svc_get_pinyin_str(content_info->media_meta.title, &content_info->media_meta.title_pinyin);
- if (STRING_VALID(content_info->media_meta.album))
- _media_svc_get_pinyin_str(content_info->media_meta.album, &content_info->media_meta.album_pinyin);
- if (STRING_VALID(content_info->media_meta.artist))
- _media_svc_get_pinyin_str(content_info->media_meta.artist, &content_info->media_meta.artist_pinyin);
- if (STRING_VALID(content_info->media_meta.album_artist))
- _media_svc_get_pinyin_str(content_info->media_meta.album_artist, &content_info->media_meta.album_artist_pinyin);
- if (STRING_VALID(content_info->media_meta.genre))
- _media_svc_get_pinyin_str(content_info->media_meta.genre, &content_info->media_meta.genre_pinyin);
- if (STRING_VALID(content_info->media_meta.composer))
- _media_svc_get_pinyin_str(content_info->media_meta.composer, &content_info->media_meta.composer_pinyin);
- if (STRING_VALID(content_info->media_meta.copyright))
- _media_svc_get_pinyin_str(content_info->media_meta.copyright, &content_info->media_meta.copyright_pinyin);
- if (STRING_VALID(content_info->media_meta.description))
- _media_svc_get_pinyin_str(content_info->media_meta.description, &content_info->media_meta.description_pinyin);
- }
-
- char *sql = sqlite3_mprintf("UPDATE '%q' SET media_title=%Q, media_album=%Q, media_artist=%Q, media_album_artist=%Q, media_genre=%Q, media_composer=%Q, media_copyright=%Q, media_description=%Q, \
- media_file_name_pinyin=%Q, media_title_pinyin=%Q, media_album_pinyin=%Q, media_artist_pinyin=%Q, media_album_artist_pinyin=%Q, media_genre_pinyin=%Q, media_composer_pinyin=%Q, media_copyright_pinyin=%Q, media_description_pinyin=%Q \
- WHERE path=%Q;",
+ char *sql = sqlite3_mprintf("UPDATE '%q' SET media_title=%Q, media_album=%Q, media_artist=%Q, media_album_artist=%Q, media_genre=%Q, media_composer=%Q, media_copyright=%Q, media_description=%Q WHERE media_path=%Q;",
content_info->storage_uuid,
content_info->media_meta.title,
content_info->media_meta.album,
content_info->media_meta.composer,
content_info->media_meta.copyright,
content_info->media_meta.description,
- content_info->file_name_pinyin,
- content_info->media_meta.title_pinyin,
- content_info->media_meta.album_pinyin,
- content_info->media_meta.artist_pinyin,
- content_info->media_meta.album_artist_pinyin,
- content_info->media_meta.genre_pinyin,
- content_info->media_meta.composer_pinyin,
- content_info->media_meta.copyright_pinyin,
- content_info->media_meta.description_pinyin,
content_info->path
);
return ret;
}
-int _media_svc_update_item_with_data(const char *storage_id, media_svc_content_info_s *content_info, uid_t uid)
+int _media_svc_update_item_with_data(bool is_direct, const char *storage_id, media_svc_content_info_s *content_info, uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
content_info->path
);
- ret = _media_svc_sql_query(sql, uid);
- SQLITE3_SAFE_FREE(sql);
+ /* Scanner use only batch insert */
+ if (is_direct) {
+ media_svc_sec_debug("Query [%s]", sql);
+ _media_svc_sql_query_add(&g_media_svc_insert_item_query_list, &sql);
+ } else {
+ ret = _media_svc_sql_query(sql, uid);
+ SQLITE3_SAFE_FREE(sql);
+ }
return ret;
}
return MS_MEDIA_ERR_NONE;
}
-int _media_svc_delete_item_by_path(bool is_direct, const char *storage_id, const char *path, bool stack_query, uid_t uid)
+int _media_svc_delete_item_by_path(const char *storage_id, const char *path, uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
char *sql = NULL;
sql = sqlite3_mprintf("DELETE FROM '%q' WHERE media_path='%q';", storage_id, path);
- if (!stack_query) {
- 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");
- return ret;
- }
- } else {
- media_svc_debug("query : %s", sql);
- _media_svc_sql_query_add(&g_media_svc_insert_item_query_list, &sql);
- }
+ ret = _media_svc_sql_query(sql, uid);
+ SQLITE3_SAFE_FREE(sql);
+ media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to delete item");
return ret;
}
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;
return ret;
}
-int _media_svc_get_noti_info(sqlite3 *handle, const char *storage_id, const char *path, int update_item, media_svc_noti_item **item)
+int _media_svc_get_media(sqlite3 *handle, const char *sql, GArray **path_list)
+{
+ int ret = MS_MEDIA_ERR_NONE;
+ sqlite3_stmt *sql_stmt = NULL;
+ media_svc_file_s *file_info = NULL;
+
+ media_svc_retvm_if(!sql, MS_MEDIA_ERR_INVALID_PARAMETER, "query is NULL");
+ media_svc_retvm_if(!path_list, MS_MEDIA_ERR_INVALID_PARAMETER, "array is NULL");
+
+ ret = _media_svc_sql_prepare_to_step_simple(handle, sql, &sql_stmt);
+ media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "_media_svc_sql_prepare_to_step_simple() failed [%d]", ret);
+ while (sqlite3_step(sql_stmt) == SQLITE_ROW) {
+ file_info = malloc(sizeof(media_svc_file_s));
+ if (!file_info) {
+ media_svc_error("Allcation failed");
+ continue;
+ }
+
+ SAFE_STRLCPY(file_info->path, (char *)sqlite3_column_text(sql_stmt, 0), sizeof(file_info->path));
+ SAFE_STRLCPY(file_info->storage_id, (char *)sqlite3_column_text(sql_stmt, 1), sizeof(file_info->storage_id));
+ g_array_append_val(*path_list, file_info);
+ }
+
+ SQLITE3_FINALIZE(sql_stmt);
+
+ return ret;
+}
+
+int _media_svc_get_noti_info(sqlite3 *handle, const char *storage_id, const char *path, media_svc_noti_item **item)
{
int ret = MS_MEDIA_ERR_NONE;
sqlite3_stmt *sql_stmt = NULL;
char *sql = NULL;
- int is_root_dir = FALSE;
media_svc_retvm_if(item == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "item is NULL");
media_svc_retvm_if(!STRING_VALID(storage_id), MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
- if (update_item == MS_MEDIA_ITEM_FILE)
- sql = sqlite3_mprintf("SELECT media_id, media_type, media_mime_type FROM '%q' WHERE media_path=%Q", storage_id, path);
- else if (update_item == MS_MEDIA_ITEM_DIRECTORY)
- sql = sqlite3_mprintf("SELECT folder_id FROM '%q' WHERE folder_path=%Q AND storage_uuid='%q'", MEDIA_SVC_DB_TABLE_FOLDER, path, storage_id);
- else {
- media_svc_error("_media_svc_get_noti_info failed : update item");
- return MS_MEDIA_ERR_INVALID_PARAMETER;
- }
-
+ sql = sqlite3_mprintf("SELECT media_id, media_type, media_mime_type FROM '%q' WHERE media_path=%Q", storage_id, path);
ret = _media_svc_sql_prepare_to_step(handle, sql, &sql_stmt);
-
- if (ret != MS_MEDIA_ERR_NONE) {
- if (ret == MS_MEDIA_ERR_DB_NO_RECORD && update_item == MS_MEDIA_ITEM_DIRECTORY) {
- media_svc_debug("This is root directory of media");
- sql_stmt = NULL;
- is_root_dir = TRUE;
- } else {
- media_svc_error("error when _media_svc_get_noti_info. err = [%d]", ret);
- return ret;
- }
- }
+ media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "_media_svc_sql_prepare_to_step() failed [%d]", ret);
*item = calloc(1, sizeof(media_svc_noti_item));
if (*item == NULL) {
- media_svc_error("_media_svc_get_noti_info failed : calloc");
+ media_svc_error("Allocation failed");
return MS_MEDIA_ERR_OUT_OF_MEMORY;
}
- if (update_item == MS_MEDIA_ITEM_FILE) {
- (*item)->media_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0));
- (*item)->media_type = sqlite3_column_int(sql_stmt, 1);
- (*item)->mime_type = g_strdup((const char *)sqlite3_column_text(sql_stmt, 2));
- } else if (update_item == MS_MEDIA_ITEM_DIRECTORY) {
- if (is_root_dir)
- (*item)->media_uuid = NULL;
- else
- (*item)->media_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0));
- }
+ (*item)->media_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0));
+ (*item)->media_type = sqlite3_column_int(sql_stmt, 1);
+ (*item)->mime_type = g_strdup((const char *)sqlite3_column_text(sql_stmt, 2));
SQLITE3_FINALIZE(sql_stmt);