modify snippet data priority 67/111267/1
authorJeesun Kim <iamjs.kim@samsung.com>
Thu, 5 Jan 2017 08:46:23 +0000 (17:46 +0900)
committerJongkyu Koo <jk.koo@samsung.com>
Fri, 20 Jan 2017 04:57:10 +0000 (20:57 -0800)
Change-Id: I6c162c57851ea488039eb5bca39c9b8ef279c795
(cherry picked from commit d99599f66b370a1b1b0fda509800f7d997cf5991)

server/db/ctsvc_db_query.c

index 1e57e29..6de0029 100644 (file)
@@ -72,6 +72,22 @@ const char *hangul_syllable[19][3] = {
        {"ㅎ", "하", "힣"},   /* D558, D7A3 */
 };
 
+/* When one more information is matched in snippet API,
+ * only one result is returned as below priority.
+ * Priority order is set for UI concept.
+ * To get name, with_range_for_snippet() API should be used with name range.
+ */
+typedef enum {
+       CTSVC_SNIPPET_PRIO_NICKNAME = 1,
+       CTSVC_SNIPPET_PRIO_COMPANY,
+       CTSVC_SNIPPET_PRIO_POSTAL,
+       CTSVC_SNIPPET_PRIO_EMAIL,
+       CTSVC_SNIPPET_PRIO_NOTE,
+       CTSVC_SNIPPET_PRIO_NUMBER,
+       CTSVC_SNIPPET_PRIO_NAME,
+} ctsvc_snippet_prio_e;
+
+
 typedef enum {
        QUERY_SORTKEY,
        QUERY_FILTER,
@@ -2751,15 +2767,17 @@ static int __ctsvc_db_search_records_exec(const char *view_uri,
                char cond_data[CTS_SQL_MAX_LEN] = {0};
                char clean_number[SAFE_STRLEN(keyword) + 1];
                ctsvc_clean_number(keyword, clean_number, sizeof(clean_number), false);
-               temp_len = SAFE_SNPRINTF(&query, &query_size, len, ", (SELECT contact_id temp_contact_id, "
+               temp_len = SAFE_SNPRINTF(&query, &query_size, len,
+                       ", (SELECT contact_id temp_contact_id, "
                                "datatype, _priority, _data FROM (");
                if (0 <= temp_len)
                        len += temp_len;
 
                if (range & CONTACTS_SEARCH_RANGE_NAME) {
-                       temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT contact_id, "
-                                       "datatype, 1 as _priority, 'a' as _data FROM "CTS_TABLE_DATA" "
-                                       "WHERE contact_id IN (");
+                       snprintf(cond_data, sizeof(cond_data), "SELECT contact_id, "
+                                       "datatype, %d as _priority, 'a' as _data FROM "CTS_TABLE_DATA" "
+                                       "WHERE contact_id IN (", CTSVC_SNIPPET_PRIO_NAME);
+                       temp_len = SAFE_SNPRINTF(&query, &query_size, len, cond_data);
                        if (0 <= temp_len)
                                len += temp_len;
 
@@ -2782,9 +2800,10 @@ static int __ctsvc_db_search_records_exec(const char *view_uri,
                                if (0 <= temp_len)
                                        len += temp_len;
                        }
-                       temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT contact_id, "
-                                       "datatype, 2 as _priority, data3 as _data FROM "CTS_TABLE_DATA" "
-                                       "WHERE contact_id IN (");
+                       snprintf(cond_data, sizeof(cond_data), "SELECT contact_id, "
+                                       "datatype, %d as _priority, data3 as _data FROM "CTS_TABLE_DATA" "
+                                       "WHERE contact_id IN (", CTSVC_SNIPPET_PRIO_NUMBER);
+                       temp_len = SAFE_SNPRINTF(&query, &query_size, len, cond_data);
                        if (0 <= temp_len)
                                len += temp_len;
 
@@ -2809,19 +2828,16 @@ static int __ctsvc_db_search_records_exec(const char *view_uri,
                        }
                        snprintf(cond_data, sizeof(cond_data), "SELECT contact_id, datatype, "
                                        "(CASE "
-                                       "WHEN datatype=%d THEN 5 " /* POSTAL       */
-                                       "WHEN datatype=%d THEN 8 " /* MESSENGER    */
-                                       "WHEN datatype=%d THEN 4 " /* COMPANY      */
-                                       "WHEN datatype=%d THEN 3 " /* NICKNAME     */
-                                       "WHEN datatype=%d THEN 6 " /* EMAIL        */
-                                       "WHEN datatype=%d THEN 9 " /* RELATIONSHIP */
-                                       "WHEN datatype=%d THEN 7 " /* NOTE         */
+                                       "WHEN datatype=%d THEN %d " /* POSTAL       */
+                                       "WHEN datatype=%d THEN %d " /* COMPANY      */
+                                       "WHEN datatype=%d THEN %d " /* NICKNAME     */
+                                       "WHEN datatype=%d THEN %d " /* EMAIL        */
+                                       "WHEN datatype=%d THEN %d " /* NOTE         */
                                        "END) as _priority, "
                                        "(CASE "
                                        "WHEN datatype=%d THEN (COALESCE(data5||' ','')||"
                                        "COALESCE(data6||' ','')||COALESCE(data7||' ','')||"
                                        "COALESCE(data8||' ','')||COALESCE(data9,'')) " /* POSTAL       */
-                                       "WHEN datatype=%d THEN data3 " /* MESSENGER    */
                                        "WHEN datatype=%d THEN (COALESCE(data3||' ','')||"
                                        "COALESCE(data4||' ','')||COALESCE(data5||' ','')||"
                                        "COALESCE(data6||' ','')||COALESCE(data7||' ','')||"
@@ -2829,14 +2845,18 @@ static int __ctsvc_db_search_records_exec(const char *view_uri,
                                        "COALESCE(data10||' ','')||COALESCE(data11||' ','')) " /* COMPANY      */
                                        "WHEN datatype=%d THEN data3 " /* NICKNAME     */
                                        "WHEN datatype=%d THEN data3 " /* EMAIL        */
-                                       "WHEN datatype=%d THEN data3 " /* RELATIONSHIP */
                                        "WHEN datatype=%d THEN data3 " /* NOTE         */
                                        "END) as _data FROM "CTS_TABLE_DATA" WHERE is_my_profile=0 AND contact_id IN (",
-                               CONTACTS_DATA_TYPE_POSTAL, CONTACTS_DATA_TYPE_MESSENGER, CONTACTS_DATA_TYPE_COMPANY,
-                               CONTACTS_DATA_TYPE_NICKNAME, CONTACTS_DATA_TYPE_EMAIL, CONTACTS_DATA_TYPE_RELATIONSHIP,
-                               CONTACTS_DATA_TYPE_NOTE, CONTACTS_DATA_TYPE_POSTAL, CONTACTS_DATA_TYPE_MESSENGER,
-                               CONTACTS_DATA_TYPE_COMPANY, CONTACTS_DATA_TYPE_NICKNAME, CONTACTS_DATA_TYPE_EMAIL,
-                               CONTACTS_DATA_TYPE_RELATIONSHIP, CONTACTS_DATA_TYPE_NOTE);
+                               CONTACTS_DATA_TYPE_POSTAL, CTSVC_SNIPPET_PRIO_POSTAL,
+                               CONTACTS_DATA_TYPE_COMPANY, CTSVC_SNIPPET_PRIO_COMPANY,
+                               CONTACTS_DATA_TYPE_NICKNAME, CTSVC_SNIPPET_PRIO_NICKNAME,
+                               CONTACTS_DATA_TYPE_EMAIL, CTSVC_SNIPPET_PRIO_EMAIL,
+                               CONTACTS_DATA_TYPE_NOTE, CTSVC_SNIPPET_PRIO_NOTE,
+                               CONTACTS_DATA_TYPE_POSTAL,
+                               CONTACTS_DATA_TYPE_COMPANY,
+                               CONTACTS_DATA_TYPE_NICKNAME,
+                               CONTACTS_DATA_TYPE_EMAIL,
+                               CONTACTS_DATA_TYPE_NOTE);
                        temp_len = SAFE_SNPRINTF(&query, &query_size, len, cond_data);
                        if (0 <= temp_len)
                                len += temp_len;
@@ -3188,9 +3208,10 @@ static inline int __ctsvc_db_search_records_with_query_exec(ctsvc_query_s *s_que
                        len += temp_len;
 
                if (range & CONTACTS_SEARCH_RANGE_NAME) {
-                       temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT contact_id, "
-                                       "datatype, 1 as _priority, 'a' as _data FROM "CTS_TABLE_DATA" "
-                                       "WHERE contact_id IN (");
+                       snprintf(cond_data, sizeof(cond_data), "SELECT contact_id, "
+                                       "datatype, %d as _priority, 'a' as _data FROM "CTS_TABLE_DATA" "
+                                       "WHERE contact_id IN (", CTSVC_SNIPPET_PRIO_NAME);
+                       temp_len = SAFE_SNPRINTF(&query, &query_size, len, cond_data);
                        if (0 <= temp_len)
                                len += temp_len;
 
@@ -3213,9 +3234,10 @@ static inline int __ctsvc_db_search_records_with_query_exec(ctsvc_query_s *s_que
                                if (0 <= temp_len)
                                        len += temp_len;
                        }
-                       temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT contact_id, "
-                                       "datatype, 2 as _priority, data3 as _data FROM "CTS_TABLE_DATA" "
-                                       "WHERE contact_id IN (");
+                       snprintf(cond_data, sizeof(cond_data), "SELECT contact_id, "
+                                       "datatype, %d as _priority, data3 as _data FROM "CTS_TABLE_DATA" "
+                                       "WHERE contact_id IN (", CTSVC_SNIPPET_PRIO_NUMBER);
+                       temp_len = SAFE_SNPRINTF(&query, &query_size, len, cond_data);
                        if (0 <= temp_len)
                                len += temp_len;
 
@@ -3240,19 +3262,16 @@ static inline int __ctsvc_db_search_records_with_query_exec(ctsvc_query_s *s_que
                        }
                        snprintf(cond_data, sizeof(cond_data), "SELECT contact_id, datatype, "
                                        "(CASE "
-                                       "WHEN datatype=%d THEN 5 " /* POSTAL       */
-                                       "WHEN datatype=%d THEN 8 " /* MESSENGER    */
-                                       "WHEN datatype=%d THEN 4 " /* COMPANY      */
-                                       "WHEN datatype=%d THEN 3 " /* NICKNAME     */
-                                       "WHEN datatype=%d THEN 6 " /* EMAIL        */
-                                       "WHEN datatype=%d THEN 9 " /* RELATIONSHIP */
-                                       "WHEN datatype=%d THEN 7 " /* NOTE         */
+                                       "WHEN datatype=%d THEN %d " /* POSTAL       */
+                                       "WHEN datatype=%d THEN %d " /* COMPANY      */
+                                       "WHEN datatype=%d THEN %d " /* NICKNAME     */
+                                       "WHEN datatype=%d THEN %d " /* EMAIL        */
+                                       "WHEN datatype=%d THEN %d " /* NOTE         */
                                        "END) as _priority, "
                                        "(CASE "
                                        "WHEN datatype=%d THEN (COALESCE(data5||' ','')||"
                                        "COALESCE(data6||' ','')||COALESCE(data7||' ','')||"
                                        "COALESCE(data8||' ','')||COALESCE(data9,'')) " /* POSTAL       */
-                                       "WHEN datatype=%d THEN data3 " /* MESSENGER    */
                                        "WHEN datatype=%d THEN (COALESCE(data3||' ','')||"
                                        "COALESCE(data4||' ','')||COALESCE(data5||' ','')||"
                                        "COALESCE(data6||' ','')||COALESCE(data7||' ','')||"
@@ -3260,14 +3279,18 @@ static inline int __ctsvc_db_search_records_with_query_exec(ctsvc_query_s *s_que
                                        "COALESCE(data10||' ','')||COALESCE(data11||' ','')) " /* COMPANY      */
                                        "WHEN datatype=%d THEN data3 " /* NICKNAME     */
                                        "WHEN datatype=%d THEN data3 " /* EMAIL        */
-                                       "WHEN datatype=%d THEN data3 " /* RELATIONSHIP */
                                        "WHEN datatype=%d THEN data3 " /* NOTE         */
                                        "END) as _data FROM "CTS_TABLE_DATA" WHERE contact_id IN (",
-                               CONTACTS_DATA_TYPE_POSTAL, CONTACTS_DATA_TYPE_MESSENGER, CONTACTS_DATA_TYPE_COMPANY,
-                               CONTACTS_DATA_TYPE_NICKNAME, CONTACTS_DATA_TYPE_EMAIL, CONTACTS_DATA_TYPE_RELATIONSHIP,
-                               CONTACTS_DATA_TYPE_NOTE, CONTACTS_DATA_TYPE_POSTAL, CONTACTS_DATA_TYPE_MESSENGER,
-                               CONTACTS_DATA_TYPE_COMPANY, CONTACTS_DATA_TYPE_NICKNAME, CONTACTS_DATA_TYPE_EMAIL,
-                               CONTACTS_DATA_TYPE_RELATIONSHIP, CONTACTS_DATA_TYPE_NOTE);
+                               CONTACTS_DATA_TYPE_POSTAL, CTSVC_SNIPPET_PRIO_POSTAL,
+                               CONTACTS_DATA_TYPE_COMPANY, CTSVC_SNIPPET_PRIO_COMPANY,
+                               CONTACTS_DATA_TYPE_NICKNAME, CTSVC_SNIPPET_PRIO_NICKNAME,
+                               CONTACTS_DATA_TYPE_EMAIL, CTSVC_SNIPPET_PRIO_EMAIL,
+                               CONTACTS_DATA_TYPE_NOTE, CTSVC_SNIPPET_PRIO_NOTE,
+                               CONTACTS_DATA_TYPE_POSTAL,
+                               CONTACTS_DATA_TYPE_COMPANY,
+                               CONTACTS_DATA_TYPE_NICKNAME,
+                               CONTACTS_DATA_TYPE_EMAIL,
+                               CONTACTS_DATA_TYPE_NOTE);
                        temp_len = SAFE_SNPRINTF(&query, &query_size, len, cond_data);
                        if (0 <= temp_len)
                                len += temp_len;