Enhance db querying for getting thread list and thread info
[platform/core/messaging/msg-service.git] / utils / MsgUtilStorage.cpp
index f5c2e49..f2645fd 100755 (executable)
@@ -1711,20 +1711,20 @@ msg_error_t MsgStoGetThreadViewList(const MSG_SORT_RULE_S *pSortRule, msg_struct
 
        snprintf(sqlQuery, sizeof(sqlQuery), "SELECT A.CONV_ID, A.UNREAD_CNT, A.SMS_CNT, A.MMS_CNT, A.MAIN_TYPE, A.SUB_TYPE, "
                        "A.MSG_DIRECTION, A.DISPLAY_TIME, A.DISPLAY_NAME, A.MSG_TEXT, "
-                       "(SELECT COUNT(MSG_ID) FROM %s M WHERE M.CONV_ID = A.CONV_ID AND M.PROTECTED = 1) AS PROTECTED, "
+                       "(COUNT(CASE WHEN M.PROTECTED = 1 THEN 1 END)) AS PROTECTED, "
                        "(CASE WHEN B.FOLDER_ID = %d THEN 1 END) AS DRAFT, "
                        "(CASE WHEN B.NETWORK_STATUS = %d THEN 1 END) AS FAILED, "
                        "(CASE WHEN B.NETWORK_STATUS = %d THEN 1 END) AS SENDING "
                        "FROM %s A "
-                       "LEFT OUTER JOIN "
-                       "%s B ON A.LAST_MSG_ID = B.MSG_ID "
+                       "LEFT OUTER JOIN %s B ON A.LAST_MSG_ID = B.MSG_ID "
+                       "LEFT OUTER JOIN %s M ON A.CONV_ID = M.CONV_ID "
                        "WHERE A.SMS_CNT + A.MMS_CNT > 0 "
                        "GROUP BY A.CONV_ID ORDER BY A.DISPLAY_TIME DESC;",
-                       MSGFW_MESSAGE_TABLE_NAME,
                        MSG_DRAFT_ID,
                        MSG_NETWORK_SEND_FAIL,
                        MSG_NETWORK_SENDING,
                        MSGFW_CONVERSATION_TABLE_NAME,
+                       MSGFW_MESSAGE_TABLE_NAME,
                        MSGFW_MESSAGE_TABLE_NAME);
 
        msg_error_t err = dbHandle->getTable(sqlQuery, &rowCnt, &index);
@@ -1781,7 +1781,7 @@ msg_error_t MsgStoGetThreadViewList(const MSG_SORT_RULE_S *pSortRule, msg_struct
                memset(pTmp->threadData, 0x00, sizeof(pTmp->threadData));
                dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, pTmp->threadData);
 
-               pTmp->bProtected = dbHandle->getColumnToInt(index++);
+               pTmp->bProtected = (dbHandle->getColumnToInt(index++) > 0) ? true : false;
                pTmp->bDraft = dbHandle->getColumnToInt(index++);
                pTmp->bSendFailed = dbHandle->getColumnToInt(index++);
                pTmp->bSending = dbHandle->getColumnToInt(index++);