int ret = MEDIA_CONTENT_ERROR_NONE;
char *query_str = NULL;
- query_str = sqlite3_mprintf("INSERT INTO %q (tag_id, media_uuid) values (%d, '%q');", DB_TABLE_TAG_MAP, tag_id, media_id);
- ret = media_svc_append_query(query_str, tzplatform_getuid(TZ_USER_NAME));
+ query_str = sqlite3_mprintf("INSERT OR IGNORE INTO %q (tag_id, media_id) values (%d, '%q');", DB_TABLE_TAG_MAP, tag_id, media_id);
+ ret = media_svc_append_query(query_str, _content_get_uid());
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
+ return _content_error_capi(ret);
}
static int __media_tag_remove_item_from_tag(int tag_id, const char *media_id)
char *query_str = NULL;
query_str = sqlite3_mprintf(REMOVE_TAG_ITEM_FROM_TAG_MAP, tag_id, media_id);
- ret = media_svc_append_query(query_str, tzplatform_getuid(TZ_USER_NAME));
+ ret = media_svc_append_query(query_str, _content_get_uid());
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
+ return _content_error_capi(ret);
}
static int __media_tag_update_tag_name(int tag_id, const char *tag_name)
char *query_str = NULL;
query_str = sqlite3_mprintf(UPDATE_TAG_NAME_FROM_TAG, tag_name, tag_id);
- ret = media_svc_append_query(query_str, tzplatform_getuid(TZ_USER_NAME));
+ ret = media_svc_append_query(query_str, _content_get_uid());
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
+ return _content_error_capi(ret);
}
static int __media_tag_get_tag_info_from_db(const char *name, media_tag_h tag)
int ret = MEDIA_CONTENT_ERROR_NONE;
sqlite3_stmt *stmt = NULL;
char *select_query = NULL;
- int id = 0;
- char *tag_name = NULL;
media_tag_s *_tag = (media_tag_s*)tag;
media_content_retvm_if(_tag == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid tag");
select_query = sqlite3_mprintf(SELECT_TAG_BY_NAME, name);
- ret = _content_query_prepare(&stmt, select_query, NULL, NULL);
+ ret = _content_get_result(select_query, &stmt);
SQLITE3_SAFE_FREE(select_query);
media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
- while (sqlite3_step(stmt) == SQLITE_ROW) {
- SAFE_FREE(tag_name);
-
- id = (int)sqlite3_column_int(stmt, 0);
- tag_name = g_strdup((const char *)sqlite3_column_text(stmt, 1));
+ if (sqlite3_step(stmt) == SQLITE_ROW) {
+ _tag->tag_id = (int)sqlite3_column_int(stmt, 0);
+ _tag->name = g_strdup(name);
+ } else {
+ media_content_error("Nonexistent tag name[%s]", name);
+ ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
}
- _tag->tag_id = id;
- _tag->name = tag_name;
-
SQLITE3_FINALIZE(stmt);
return ret;
return ret;
}
+
int media_tag_clone(media_tag_h *dst, media_tag_h src)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
{
int ret = MEDIA_CONTENT_ERROR_NONE;
sqlite3_stmt *stmt = NULL;
- char select_query[DEFAULT_QUERY_SIZE];
+ char select_query[DEFAULT_QUERY_SIZE] = {0, };
if (tag_id <= 0) {
media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
snprintf(select_query, sizeof(select_query), SELECT_TAG_FROM_TAG, tag_id);
- ret = _content_query_prepare(&stmt, select_query, NULL, NULL);
+ ret = _content_get_result(select_query, &stmt);
media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
media_tag_s *_tag = NULL;
- while (sqlite3_step(stmt) == SQLITE_ROW) {
- if (_tag)
- media_tag_destroy((media_tag_h)_tag);
-
+ if (sqlite3_step(stmt) == SQLITE_ROW) {
_tag = (media_tag_s*)calloc(1, sizeof(media_tag_s));
if (_tag == NULL) {
SQLITE3_FINALIZE(stmt);
return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
}
- _tag->tag_id = (int)sqlite3_column_int(stmt, 0);
- _tag->name = g_strdup((const char *)sqlite3_column_text(stmt, 1));
+ _tag->tag_id = tag_id;
+ _tag->name = g_strdup((const char *)sqlite3_column_text(stmt, 0));
*tag = (media_tag_h)_tag;
+ } else {
+ media_content_error("Nonexistent tag id[%d]", tag_id);
+ ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
}
SQLITE3_FINALIZE(stmt);
return ret;
}
-int media_tag_set_name(media_tag_h tag, char *tag_name)
+int media_tag_set_name(media_tag_h tag, const char *tag_name)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
media_tag_s *_tag = (media_tag_s*)tag;
default:
break;
}
+
+ if (ret != MEDIA_CONTENT_ERROR_NONE)
+ media_content_error("Failed some operation[%d]", _tag_item->function);
}
}
- ret = media_svc_send_query(tzplatform_getuid(TZ_USER_NAME));
+ ret = media_svc_send_query(_content_get_uid());
+
+ __media_tag_item_release(_tag);
+
+ return _content_error_capi(ret);
+}
+
+int media_tag_create(media_tag_h *tag)
+{
+ int ret = MEDIA_CONTENT_ERROR_NONE;
+
+ media_content_retvm_if(tag == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid tag");
+
+ media_tag_s *_tag = (media_tag_s*)calloc(1, sizeof(media_tag_s));
+ media_content_retvm_if(_tag == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+
+ _tag->tag_id = -1;
+ _tag->name = NULL;
+ _tag->item_list = NULL;
+
+ *tag = (media_tag_h)_tag;
+
+ return ret;
+}
+
+int media_tag_insert_to_db_v2(media_tag_h tag)
+{
+ int ret = MEDIA_CONTENT_ERROR_NONE;
+ media_tag_s *_tag = (media_tag_s*)tag;
+ media_tag_h tag_1;
+ int tag_id = -1;
+
+ media_content_retvm_if(_tag == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid tag");
+ media_content_retvm_if(!STRING_VALID(_tag->name), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid tag name");
+ media_content_retvm_if(_tag->tag_id != -1, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid tag insert");
+
+ ret = media_tag_insert_to_db(_tag->name, &tag_1);
+ if (ret != MEDIA_CONTENT_ERROR_NONE) {
+ media_content_error("fail media_tag_insert_to_db");
+ goto ERROR;
+ }
+
+ ret = media_tag_get_tag_id(tag_1, &tag_id);
+ if (ret != MEDIA_CONTENT_ERROR_NONE) {
+ media_content_error("fail media_tag_get_tag_id");
+ goto ERROR;
+ }
+ _tag->tag_id = tag_id;
+
+ ret = media_tag_update_to_db(tag);
+
+ERROR:
__media_tag_item_release(_tag);
+ media_tag_destroy(tag_1);
+
+ return ret;
+}
+
+int media_tag_update_to_db_v2(int tag_id, media_tag_h tag)
+{
+ media_tag_s *_tag = (media_tag_s*)tag;
+
+ media_content_retvm_if(_tag == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid tag");
+ media_content_retvm_if(tag_id == -1, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid tag update");
+
+ _tag->tag_id = tag_id;
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
+ return media_tag_update_to_db(tag);
}