#define DB_FIELD_FOLDER_STORAGE_TYPE "storage_type"
#define DB_FIELD_FOLDER_NAME_PINYIN "name_pinyin"
#define DB_FIELD_FOLDER_ORDER "folder_order"
-#define DB_FIELD_FOLDER_PARENT_FOLDER_ID "parent_folder_uuid"
/* DB field for playlist */
#define DB_FIELD_PLAYLIST_ID "playlist_id"
#define SELECT_ALBUM_LIST "SELECT DISTINCT a.album_id, a.name, a.artist, a.album_art FROM "ALBUM_MEDIA_JOIN
#define SELECT_MEDIA_GROUP_LIST "SELECT DISTINCT %s FROM '%s' WHERE validity=1 "
-#define SELECT_FOLDER_LIST "SELECT DISTINCT f.folder_uuid, f.path, f.name, f.storage_type, f.modified_time, f.storage_uuid, f.folder_order, f.parent_folder_uuid FROM "FOLDER_MEDIA_JOIN
+#define SELECT_FOLDER_LIST "SELECT DISTINCT f.folder_uuid, f.path, f.name, f.storage_type, f.modified_time, f.storage_uuid, f.folder_order FROM "FOLDER_MEDIA_JOIN
#define SELECT_FOLDER_LIST_BY_STORAGE_ID SELECT_FOLDER_LIST"AND f.storage_uuid='%s' "
#define SELECT_TAG_LIST "SELECT DISTINCT tag_id, name FROM "DB_VIEW_TAG" WHERE 1 "
#define SELECT_PLAYLIST_LIST "SELECT DISTINCT playlist_id, name, p_thumbnail_path FROM "DB_VIEW_PLAYLIST" WHERE 1 "
/*Folder info*/
#define UPDATE_FOLDER_ORDER "UPDATE "DB_TABLE_FOLDER" SET folder_order=%d WHERE folder_uuid=%Q"
+#define SELECT_FOLDER_ID_BY_PATH "SELECT folder_uuid FROM "DB_TABLE_FOLDER" WHERE path = '%s'"
/* Playlist Info */
#define INSERT_PLAYLIST_TO_PLAYLIST "INSERT INTO "DB_TABLE_PLAYLIST" (name) VALUES (%Q)"
#define DB_FIELD_FOLDER_STORAGE_TYPE "storage_type"
#define DB_FIELD_FOLDER_NAME_PINYIN "name_pinyin"
#define DB_FIELD_FOLDER_ORDER "folder_order"
-#define DB_FIELD_FOLDER_PARENT_FOLDER_ID "parent_folder_uuid"
/* DB field for playlist */
#define DB_FIELD_PLAYLIST_ID "playlist_id"
#define SELECT_ALBUM_LIST "SELECT DISTINCT a.album_id, a.name, a.artist, a.album_art FROM "ALBUM_MEDIA_JOIN
#define SELECT_MEDIA_GROUP_LIST "SELECT DISTINCT %s FROM '%s' WHERE validity=1 "
-#define SELECT_FOLDER_LIST "SELECT DISTINCT f.folder_uuid, f.path, f.name, f.storage_type, f.modified_time, f.storage_uuid, f.folder_order, f.parent_folder_uuid FROM "FOLDER_MEDIA_JOIN
+#define SELECT_FOLDER_LIST "SELECT DISTINCT f.folder_uuid, f.path, f.name, f.storage_type, f.modified_time, f.storage_uuid, f.folder_order FROM "FOLDER_MEDIA_JOIN
#define SELECT_FOLDER_LIST_BY_STORAGE_ID SELECT_FOLDER_LIST"AND f.storage_uuid='%s' "
#define SELECT_TAG_LIST "SELECT DISTINCT tag_id, name FROM "DB_VIEW_TAG" WHERE 1 "
#define SELECT_PLAYLIST_LIST "SELECT DISTINCT playlist_id, name, p_thumbnail_path FROM "DB_VIEW_PLAYLIST" WHERE 1 "
/*Folder info*/
#define UPDATE_FOLDER_ORDER "UPDATE "DB_TABLE_FOLDER" SET folder_order=%d WHERE folder_uuid=%Q"
+#define SELECT_FOLDER_ID_BY_PATH "SELECT folder_uuid FROM "DB_TABLE_FOLDER" WHERE path = '%s'"
/* Playlist Info */
#define INSERT_PLAYLIST_TO_PLAYLIST "INSERT INTO "DB_TABLE_PLAYLIST" (name) VALUES (%Q)"
{FOLDER_STORAGE_TYPE, NULL, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_STORAGE_TYPE},
{FOLDER_NAME_PINYIN, NULL, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_NAME_PINYIN},
{FOLDER_ORDER, NULL, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_ORDER},
- {FOLDER_PARENT_FOLDER_ID, NULL, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_PARENT_FOLDER_ID},
/* Playlist */
{MEDIA_PLAYLIST_ID, DB_FIELD_PLAYLIST_ID, NULL},
char *condition_query = NULL;
char *option_query = NULL;
sqlite3_stmt *stmt = NULL;
+ sqlite3_stmt *sub_stmt = NULL;
attribute_h attr = NULL;
filter_s *_filter = (filter_s*)filter;
char *tmp_path = NULL;
+ char *parent_path = NULL;
char repl_path[MAX_PATH_LEN] = {0, };
attr = _content_get_alias_attirbute_handle();
tmp_path = g_strdup((const char *)sqlite3_column_text(stmt, 1));
_media_content_rollback_path(tmp_path, repl_path);
_folder->path = g_strdup(repl_path);
- SAFE_FREE(tmp_path);
-
_folder->name = g_strdup((const char *)sqlite3_column_text(stmt, 2));
_folder->storage_type = (int)sqlite3_column_int(stmt, 3);
_folder->modified_time = (int)sqlite3_column_int(stmt, 4);
_folder->storage_uuid = g_strdup((const char *)sqlite3_column_text(stmt, 5));
_folder->folder_order = (int)sqlite3_column_int(stmt, 6);
- _folder->parent_folder_id = g_strdup((const char *)sqlite3_column_text(stmt, 7));
+
+ parent_path = g_path_get_dirname(tmp_path);
+ memset(select_query, 0x00, sizeof(select_query));
+ snprintf(select_query, sizeof(select_query), SELECT_FOLDER_ID_BY_PATH, parent_path);
+
+ SAFE_FREE(tmp_path);
+ SAFE_FREE(parent_path);
+
+ ret = _content_query_prepare(&sub_stmt, select_query, NULL, NULL);
+ if (ret != MEDIA_CONTENT_ERROR_NONE) {
+ media_content_error("_content_query_prepare failed");
+ media_folder_destroy((media_folder_h) _folder);
+ SQLITE3_FINALIZE(stmt);
+ return ret;
+ }
+
+ if (sqlite3_step(sub_stmt) == SQLITE_ROW)
+ _folder->parent_folder_id = g_strdup((const char *)sqlite3_column_text(sub_stmt, 0));
+
+ SQLITE3_FINALIZE(sub_stmt);
if (callback((media_folder_h)_folder, user_data) == false) {
media_folder_destroy((media_folder_h) _folder);
int media_folder_get_parent_folder_id(media_folder_h folder, char **parent_folder_id)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
+ media_content_warn("DEPRECATION WARNING: media_folder_get_parent_folder_id() is deprecated and will be removed from next release.");
media_folder_s *_folder = (media_folder_s*)folder;
if (_folder) {
sqlite3_stmt *stmt = NULL;
char select_query[DEFAULT_QUERY_SIZE];
char *tmp_path = NULL;
+ char *parent_path = NULL;
char repl_path[MAX_PATH_LEN] = {0, };
+ media_folder_s *_folder = NULL;
if (!STRING_VALID(folder_id)) {
media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
ret = _content_query_prepare(&stmt, select_query, NULL, NULL);
media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
- media_folder_s *_folder = NULL;
-
- while (sqlite3_step(stmt) == SQLITE_ROW) {
- if (_folder)
- media_folder_destroy((media_folder_h)_folder);
-
+ if (sqlite3_step(stmt) == SQLITE_ROW) {
_folder = (media_folder_s*)calloc(1, sizeof(media_folder_s));
if (_folder == NULL) {
media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
}
- media_content_error("folder handle %p", _folder);
-
_folder->folder_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
tmp_path = g_strdup((const char *)sqlite3_column_text(stmt, 1));
_media_content_rollback_path(tmp_path, repl_path);
_folder->path = g_strdup(repl_path);
- SAFE_FREE(tmp_path);
-
_folder->name = g_strdup((const char *)sqlite3_column_text(stmt, 2));
_folder->modified_time = (int)sqlite3_column_int(stmt, 3);
_folder->storage_type = (int)sqlite3_column_int(stmt, 5);
_folder->storage_uuid = g_strdup((const char *)sqlite3_column_text(stmt, 6));
_folder->folder_order = (int)sqlite3_column_int(stmt, 7);
- _folder->parent_folder_id = g_strdup((const char *)sqlite3_column_text(stmt, 8));
*folder = (media_folder_h)_folder;
}
SQLITE3_FINALIZE(stmt);
+ /*Get parent UUID */
+ if (STRING_VALID(tmp_path)) {
+ parent_path = g_path_get_dirname(tmp_path);
+ memset(select_query, 0x00, sizeof(select_query));
+ snprintf(select_query, sizeof(select_query), SELECT_FOLDER_ID_BY_PATH, parent_path);
+
+ SAFE_FREE(tmp_path);
+ SAFE_FREE(parent_path);
+
+ ret = _content_query_prepare(&stmt, select_query, NULL, NULL);
+ media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+ if (sqlite3_step(stmt) == SQLITE_ROW)
+ _folder->parent_folder_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
+
+ SQLITE3_FINALIZE(stmt);
+ }
+
return ret;
}