Improve view creation function 14/222514/2
authorMinje Ahn <minje.ahn@samsung.com>
Wed, 15 Jan 2020 23:20:08 +0000 (08:20 +0900)
committerhj kim <backto.kim@samsung.com>
Fri, 17 Jan 2020 01:43:58 +0000 (01:43 +0000)
Use Gstring instead

Change-Id: I6586bffaa8b9e23c97c396c2ac2bb4a394306920
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
src/common/media-svc-db-utils.c

index 8a0d9f1..865609b 100755 (executable)
@@ -116,30 +116,26 @@ int __media_svc_add_column_info(GSList **slist, const char *name, const char *ty
 static int __create_playlist_view(uid_t uid)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       bool flag = false;
        column_info_s *col_ptr = NULL;
        int len = 0;
        int i = 0;
        char *sql = NULL;
-       char temp[1024] = {0 ,};
-       char table_query[MEDIA_SVC_QUERY_LEN_NORMAL] = {0, };
+       GString *table_query = g_string_new(NULL);
+       media_svc_retvm_if(!table_query, MS_MEDIA_ERR_INTERNAL, "g_string_new failed");
 
        len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_PLAYLIST]);
        for (i = 1; i < len; i++) {
                col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_PLAYLIST], i);
                if (col_ptr->is_view) {
-                       if (flag == true) {
+                       if (table_query->len != 0) {
                                if (strncmp(col_ptr->name, MEDIA_SVC_DB_COLUMN_THUMBNAIL, strlen(MEDIA_SVC_DB_COLUMN_THUMBNAIL)) == 0)
-                                       snprintf(temp, sizeof(temp), ", playlist.%s AS p_thumbnail_path", col_ptr->name);
+                                       g_string_append_printf(table_query, ", playlist.%s AS p_thumbnail_path", col_ptr->name);
                                else
-                                       snprintf(temp, sizeof(temp), ", playlist.%s", col_ptr->name);
+                                       g_string_append_printf(table_query, ", playlist.%s", col_ptr->name);
                        } else {
-                               snprintf(temp, sizeof(temp), "playlist.%s", col_ptr->name);
-                               flag = true;
+                               g_string_append_printf(table_query, "playlist.%s", col_ptr->name);
                        }
-                       SAFE_STRLCAT(table_query, temp, sizeof(table_query));
                }
-               memset(temp, 0, sizeof(temp));
        }
 
        len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP]);
@@ -147,25 +143,21 @@ static int __create_playlist_view(uid_t uid)
                col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_PLAYLIST_MAP], i);
                if (col_ptr->is_view) {
                        if (strncmp(col_ptr->name, MEDIA_SVC_DB_COLUMN_MAP_ID, strlen(MEDIA_SVC_DB_COLUMN_MAP_ID)) == 0)
-                               snprintf(temp, sizeof(temp), ", playlist_media_count IS NOT NULL AS playlist_media_count, playlist_map.%s AS pm_id", col_ptr->name);
+                               g_string_append_printf(table_query, ", playlist_media_count IS NOT NULL AS playlist_media_count, playlist_map.%s AS pm_id", col_ptr->name);
                        else
-                               snprintf(temp, sizeof(temp), ", playlist_map.%s", col_ptr->name);
-                       SAFE_STRLCAT(table_query, temp, sizeof(table_query));
+                               g_string_append_printf(table_query, ", playlist_map.%s", col_ptr->name);
                }
-               memset(temp, 0, sizeof(temp));
        }
 
        len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_MEDIA]);
        for (i = 1; i < len; i++) {
                col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_MEDIA], i);
-               if (col_ptr->is_view) {
-                       snprintf(temp, sizeof(temp), ", media.%s", col_ptr->name);
-                       SAFE_STRLCAT(table_query, temp, sizeof(table_query));
-               }
-               memset(temp, 0, sizeof(temp));
+               if (col_ptr->is_view)
+                       g_string_append_printf(table_query, ", media.%s", col_ptr->name);
        }
 
-       sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_VIEW_PLAYLIST, MEDIA_SVC_DB_VIEW_PLAYLIST, table_query);
+       sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_VIEW_PLAYLIST, MEDIA_SVC_DB_VIEW_PLAYLIST, table_query->str);
+       g_string_free(table_query, TRUE);
        ret = _media_svc_sql_query(sql, uid);
        SQLITE3_SAFE_FREE(sql);
 
@@ -175,27 +167,22 @@ static int __create_playlist_view(uid_t uid)
 static int __create_tag_view(uid_t uid)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       bool flag = false;
        column_info_s *col_ptr = NULL;
        int len = 0;
        int i = 0;
        char *sql = NULL;
-       char temp[1024] = {0 ,};
-       char table_query[MEDIA_SVC_QUERY_LEN_NORMAL] = {0, };
+       GString *table_query = g_string_new(NULL);
+       media_svc_retvm_if(!table_query, MS_MEDIA_ERR_INTERNAL, "g_string_new failed");
 
        len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_TAG]);
        for (i = 1; i < len; i++) {
                col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_TAG], i);
                if (col_ptr->is_view) {
-                       if (flag == true) {
-                               snprintf(temp, sizeof(temp), ", tag.%s", col_ptr->name);
-                       } else {
-                               snprintf(temp, sizeof(temp), "tag.%s", col_ptr->name);
-                               flag = true;
-                       }
-                       SAFE_STRLCAT(table_query, temp, sizeof(table_query));
+                       if (table_query->len != 0)
+                               g_string_append_printf(table_query, ", tag.%s", col_ptr->name);
+                       else
+                               g_string_append_printf(table_query, "tag.%s", col_ptr->name);
                }
-               memset(temp, 0, sizeof(temp));
        }
 
        len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_TAG_MAP]);
@@ -203,25 +190,21 @@ static int __create_tag_view(uid_t uid)
                col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_TAG_MAP], i);
                if (col_ptr->is_view) {
                        if (strncmp(col_ptr->name, MEDIA_SVC_DB_COLUMN_MAP_ID, strlen(MEDIA_SVC_DB_COLUMN_MAP_ID)) == 0)
-                               snprintf(temp, sizeof(temp), ", tag_media_count IS NOT NULL AS tag_media_count, tag_map.%s AS tm_id", col_ptr->name);
+                               g_string_append_printf(table_query, ", tag_media_count IS NOT NULL AS tag_media_count, tag_map.%s AS tm_id", col_ptr->name);
                        else
-                               snprintf(temp, sizeof(temp), ", tag_map.%s", col_ptr->name);
-                       SAFE_STRLCAT(table_query, temp, sizeof(table_query));
+                               g_string_append_printf(table_query, ", tag_map.%s", col_ptr->name);
                }
-               memset(temp, 0, sizeof(temp));
        }
 
        len = g_slist_length(column_list[MEDIA_SVC_DB_LIST_MEDIA]);
        for (i = 1; i < len; i++) {
                col_ptr = g_slist_nth_data(column_list[MEDIA_SVC_DB_LIST_MEDIA], i);
-               if (col_ptr->is_view) {
-                       snprintf(temp, sizeof(temp), ", media.%s", col_ptr->name);
-                       SAFE_STRLCAT(table_query, temp, sizeof(table_query));
-               }
-               memset(temp, 0, sizeof(temp));
+               if (col_ptr->is_view)
+                       g_string_append_printf(table_query, ", media.%s", col_ptr->name);
        }
 
-       sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_VIEW_TAG, MEDIA_SVC_DB_VIEW_TAG, table_query);
+       sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_VIEW_TAG, MEDIA_SVC_DB_VIEW_TAG, table_query->str);
+       g_string_free(table_query, TRUE);
        ret = _media_svc_sql_query(sql, uid);
        SQLITE3_SAFE_FREE(sql);