X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmedia_tag.c;h=884eccc0baa955355a2dcfdf8baac6fe3475d4ac;hb=02ad13ff82a6f82e9fa93f094584a53ed5df0b8c;hp=ba654d46a29d286d259f0b7575a25aa6e712cce3;hpb=3f0c2bc1beccd8b15b0426649b60e734568d7410;p=platform%2Fcore%2Fapi%2Fmedia-content.git diff --git a/src/media_tag.c b/src/media_tag.c index ba654d4..884eccc 100755 --- a/src/media_tag.c +++ b/src/media_tag.c @@ -17,44 +17,39 @@ #include - -static __thread GList *g_tag_item_list = NULL; - -static void __media_tag_item_add(media_tag_item_s *item_s); -static void __media_tag_item_release(void); +static void __media_tag_item_add(media_tag_s *tag_s, media_tag_item_s *item_s); +static void __media_tag_item_release(media_tag_s *tag_s); static int __media_tag_insert_item_to_tag(int tag_id, const char *media_id); static int __media_tag_remove_item_from_tag(int tag_id, const char *media_id); static int __media_tag_update_tag_name(int tag_id, const char *tag_name); static int __media_tag_get_tag_info_from_db(const char *name, media_tag_h tag); -static void __media_tag_item_add(media_tag_item_s *item_s) +static void __media_tag_item_add(media_tag_s *tag_s, media_tag_item_s *item_s) { - g_tag_item_list = g_list_append(g_tag_item_list, item_s); + tag_s->item_list = g_list_append(tag_s->item_list, item_s); } -static void __media_tag_item_release(void) +static void __media_tag_item_release(media_tag_s *tag_s) { int idx = 0; int list_cnt = 0; media_tag_item_s *item = NULL; - list_cnt = g_list_length(g_tag_item_list); + list_cnt = g_list_length(tag_s->item_list); media_content_debug("list_cnt : [%d]", list_cnt); - for(idx = 0; idx < list_cnt; idx++) - { - item = (media_tag_item_s*)g_list_nth_data(g_tag_item_list, idx); - if(item != NULL) - { + for (idx = 0; idx < list_cnt; idx++) { + item = (media_tag_item_s*)g_list_nth_data(tag_s->item_list, idx); + if (item != NULL) { SAFE_FREE(item->media_id); SAFE_FREE(item->tag_name); SAFE_FREE(item); } } - g_list_free(g_tag_item_list); - g_tag_item_list = NULL; + g_list_free(tag_s->item_list); + tag_s->item_list = NULL; } @@ -63,12 +58,10 @@ static int __media_tag_insert_item_to_tag(int tag_id, const char *media_id) 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 = _content_query_sql(query_str); - sqlite3_free(query_str); + 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, _content_get_uid()); - return ret; + return _content_error_capi(MEDIA_CONTENT_TYPE, ret); } static int __media_tag_remove_item_from_tag(int tag_id, const char *media_id) @@ -77,11 +70,9 @@ 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, _content_get_uid()); - ret = _content_query_sql(query_str); - sqlite3_free(query_str); - - return ret; + return _content_error_capi(MEDIA_CONTENT_TYPE, ret); } static int __media_tag_update_tag_name(int tag_id, const char *tag_name) @@ -90,11 +81,9 @@ 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, _content_get_uid()); - ret = _content_query_sql(query_str); - sqlite3_free(query_str); - - return ret; + return _content_error_capi(MEDIA_CONTENT_TYPE, ret); } static int __media_tag_get_tag_info_from_db(const char *name, media_tag_h tag) @@ -102,8 +91,6 @@ 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"); @@ -111,25 +98,17 @@ static int __media_tag_get_tag_info_from_db(const char *name, media_tag_h tag) select_query = sqlite3_mprintf(SELECT_TAG_BY_NAME, name); ret = _content_query_prepare(&stmt, select_query, NULL, NULL); - sqlite3_free(select_query); + SQLITE3_SAFE_FREE(select_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - while(sqlite3_step(stmt) == SQLITE_ROW) - { - id = (int)sqlite3_column_int(stmt,0); - - if(STRING_VALID((const char *)sqlite3_column_text(stmt, 1))) - { - if(tag_name) - SAFE_FREE(tag_name); - - tag_name = 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; @@ -140,18 +119,16 @@ int media_tag_insert_to_db(const char *tag_name, media_tag_h *tag) int ret = MEDIA_CONTENT_ERROR_NONE; char *query_str = NULL; - if(!STRING_VALID(tag_name)) - { + if (!STRING_VALID(tag_name)) { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } query_str = sqlite3_mprintf(INSERT_TAG_TO_TAG, tag_name); ret = _content_query_sql(query_str); - sqlite3_free(query_str); + SQLITE3_SAFE_FREE(query_str); - if(ret == MEDIA_CONTENT_ERROR_NONE) - { + if (ret == MEDIA_CONTENT_ERROR_NONE) { 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"); @@ -167,8 +144,7 @@ int media_tag_delete_from_db(int tag_id) int ret = MEDIA_CONTENT_ERROR_NONE; char *query_str = NULL; - if(tag_id < 0) - { + if (tag_id < 0) { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -177,7 +153,7 @@ int media_tag_delete_from_db(int tag_id) ret = _content_query_sql(query_str); - sqlite3_free(query_str); + SQLITE3_SAFE_FREE(query_str); return ret; } @@ -186,12 +162,9 @@ int media_tag_get_tag_count_from_db(filter_h filter, int *tag_count) { int ret = MEDIA_CONTENT_ERROR_NONE; - if(tag_count != NULL) - { + if (tag_count != NULL) { ret = _media_db_get_group_count(filter, MEDIA_GROUP_TAG, tag_count); - } - else - { + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -199,12 +172,11 @@ int media_tag_get_tag_count_from_db(filter_h filter, int *tag_count) return ret; } -int media_tag_foreach_tag_from_db (filter_h filter, media_tag_cb callback, void *user_data) +int media_tag_foreach_tag_from_db(filter_h filter, media_tag_cb callback, void *user_data) { int ret = MEDIA_CONTENT_ERROR_NONE; - if(callback == NULL) - { + if (callback == NULL) { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -218,12 +190,9 @@ int media_tag_get_media_count_from_db(int tag_id, filter_h filter, int *media_co { int ret = MEDIA_CONTENT_ERROR_NONE; - if((tag_id > 0) && (media_count != NULL)) - { + if ((tag_id > 0) && (media_count != NULL)) { ret = _media_db_get_group_item_count_by_id(tag_id, filter, MEDIA_GROUP_TAG, media_count); - } - else - { + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -235,8 +204,7 @@ int media_tag_foreach_media_from_db(int tag_id, filter_h filter, media_info_cb c { int ret = MEDIA_CONTENT_ERROR_NONE; - if(callback == NULL) - { + if (callback == NULL) { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -250,38 +218,33 @@ int media_tag_destroy(media_tag_h tag) { int ret = MEDIA_CONTENT_ERROR_NONE; media_tag_s *_tag = (media_tag_s*)tag; - if(_tag) - { + if (_tag) { SAFE_FREE(_tag->name); SAFE_FREE(_tag); ret = MEDIA_CONTENT_ERROR_NONE; - } - else - { + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } return ret; } + int media_tag_clone(media_tag_h *dst, media_tag_h src) { int ret = MEDIA_CONTENT_ERROR_NONE; media_tag_s *_src = (media_tag_s*)src; media_tag_s *_dst = NULL; - if((_src != NULL)) - { + if ((_src != NULL)) { _dst = (media_tag_s*)calloc(1, sizeof(media_tag_s)); media_content_retvm_if(_dst == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY"); _dst->tag_id = _src->tag_id; - if(STRING_VALID(_src->name)) - { + if (STRING_VALID(_src->name)) { _dst->name = strdup(_src->name); - if(_dst->name == NULL) - { + if (_dst->name == NULL) { SAFE_FREE(_dst); media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; @@ -289,9 +252,7 @@ int media_tag_clone(media_tag_h *dst, media_tag_h src) } *dst = (media_tag_h)_dst; ret = MEDIA_CONTENT_ERROR_NONE; - } - else - { + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -304,13 +265,10 @@ int media_tag_get_tag_id(media_tag_h tag, int *tag_id) int ret = MEDIA_CONTENT_ERROR_NONE; media_tag_s *_tag = (media_tag_s*)tag; - if((_tag != NULL) && (tag_id != NULL)) - { + if ((_tag != NULL) && (tag_id != NULL)) { *tag_id = _tag->tag_id; ret = MEDIA_CONTENT_ERROR_NONE; - } - else - { + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -322,22 +280,16 @@ int media_tag_get_name(media_tag_h tag, char **name) { int ret = MEDIA_CONTENT_ERROR_NONE; media_tag_s *_tag = (media_tag_s*)tag; - if(_tag) - { - if(STRING_VALID(_tag->name)) - { + if (_tag) { + if (STRING_VALID(_tag->name)) { *name = strdup(_tag->name); media_content_retvm_if(*name == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY"); - } - else - { + } else { *name = NULL; } ret = MEDIA_CONTENT_ERROR_NONE; - } - else - { + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -349,10 +301,9 @@ int media_tag_get_tag_from_db(int tag_id, media_tag_h *tag) { 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) - { + if (tag_id <= 0) { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -366,27 +317,21 @@ int media_tag_get_tag_from_db(int tag_id, media_tag_h *tag) 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) - { + if (_tag == NULL) { SQLITE3_FINALIZE(stmt); media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; } - _tag->tag_id = (int)sqlite3_column_int(stmt, 0); - - if(STRING_VALID((const char *)sqlite3_column_text(stmt, 1))) - { - _tag->name = 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); @@ -399,25 +344,21 @@ int media_tag_add_media(media_tag_h tag, const char *media_id) int ret = MEDIA_CONTENT_ERROR_NONE; media_tag_s *_tag = (media_tag_s*)tag; - if((_tag != NULL) && STRING_VALID(media_id)) - { + if ((_tag != NULL) && STRING_VALID(media_id)) { media_tag_item_s *_item = (media_tag_item_s*)calloc(1, sizeof(media_tag_item_s)); media_content_retvm_if(_item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY"); _item->media_id = strdup(media_id); _item->function = MEDIA_TAG_ADD; - if(_item->media_id == NULL) - { + if (_item->media_id == NULL) { SAFE_FREE(_item); media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; } - __media_tag_item_add(_item); - } - else - { + __media_tag_item_add(_tag, _item); + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -430,25 +371,21 @@ int media_tag_remove_media(media_tag_h tag, const char *media_id) int ret = MEDIA_CONTENT_ERROR_NONE; media_tag_s *_tag = (media_tag_s*)tag; - if(_tag != NULL && STRING_VALID(media_id)) - { + if (_tag != NULL && STRING_VALID(media_id)) { media_tag_item_s *_item = (media_tag_item_s*)calloc(1, sizeof(media_tag_item_s)); media_content_retvm_if(_item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY"); _item->media_id = strdup(media_id); _item->function = MEDIA_TAG_REMOVE; - if(_item->media_id == NULL) - { + if (_item->media_id == NULL) { SAFE_FREE(_item); media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; } - __media_tag_item_add(_item); - } - else - { + __media_tag_item_add(_tag, _item); + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -456,13 +393,12 @@ int media_tag_remove_media(media_tag_h tag, const char *media_id) 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; - if(_tag != NULL && STRING_VALID(tag_name)) - { + if (_tag != NULL && STRING_VALID(tag_name)) { SAFE_FREE(_tag->name); media_tag_item_s *_item = (media_tag_item_s*)calloc(1, sizeof(media_tag_item_s)); @@ -471,26 +407,22 @@ int media_tag_set_name(media_tag_h tag, char *tag_name) _item->tag_name = strdup(tag_name); _item->function = MEDIA_TAG_UPDATE_TAG_NAME; - if(_item->tag_name == NULL) - { + if (_item->tag_name == NULL) { SAFE_FREE(_item); media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; } _tag->name = strdup(tag_name); - if(_tag->name == NULL) - { + if (_tag->name == NULL) { SAFE_FREE(_item->tag_name); SAFE_FREE(_item); media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; } - __media_tag_item_add(_item); - } - else - { + __media_tag_item_add(_tag, _item); + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } @@ -506,43 +438,116 @@ int media_tag_update_to_db(media_tag_h tag) int length = 0; media_tag_item_s *_tag_item = NULL; - if(_tag == NULL) - { + if (_tag == NULL) { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } - length = g_list_length(g_tag_item_list); + if (_tag->item_list != NULL) { + length = g_list_length(_tag->item_list); + } else { + media_content_debug("operation list length is 0"); + return MEDIA_CONTENT_ERROR_NONE; + } for (idx = 0; idx < length; idx++) { - _tag_item = (media_tag_item_s*)g_list_nth_data(g_tag_item_list, idx); - if(_tag_item != NULL) { - switch(_tag_item->function) { - case MEDIA_TAG_ADD: - { - ret = __media_tag_insert_item_to_tag(_tag->tag_id, _tag_item->media_id); - } - break; - - case MEDIA_TAG_REMOVE: - { - ret = __media_tag_remove_item_from_tag(_tag->tag_id, _tag_item->media_id); - } - break; - - case MEDIA_TAG_UPDATE_TAG_NAME: - { - ret = __media_tag_update_tag_name(_tag->tag_id, _tag_item->tag_name); - } - break; - - default: - break; + _tag_item = (media_tag_item_s*)g_list_nth_data(_tag->item_list, idx); + if (_tag_item != NULL) { + switch (_tag_item->function) { + case MEDIA_TAG_ADD: + { + ret = __media_tag_insert_item_to_tag(_tag->tag_id, _tag_item->media_id); + } + break; + + case MEDIA_TAG_REMOVE: + { + ret = __media_tag_remove_item_from_tag(_tag->tag_id, _tag_item->media_id); + } + break; + + case MEDIA_TAG_UPDATE_TAG_NAME: + { + ret = __media_tag_update_tag_name(_tag->tag_id, _tag_item->tag_name); } + break; + + default: + break; + } + + if (ret != MEDIA_CONTENT_ERROR_NONE) + media_content_error("Failed some operation[%d]", _tag_item->function); } } - __media_tag_item_release(); + ret = media_svc_send_query(_content_get_uid()); + + __media_tag_item_release(_tag); + + return _content_error_capi(MEDIA_CONTENT_TYPE, 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 media_tag_update_to_db(tag); +}