[SVACE Issue Fixes]
[platform/core/pim/contacts-service.git] / server / db / ctsvc_db_plugin_email.c
index 4fa4677..fc515ce 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Contacts Service
  *
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (c) 2010 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
  * limitations under the License.
  *
  */
-
 #include "contacts.h"
 #include "ctsvc_internal.h"
 #include "ctsvc_db_schema.h"
 #include "ctsvc_db_query.h"
 #include "ctsvc_list.h"
 
-static int __ctsvc_db_email_insert_record(contacts_record_h record, int *id);
-static int __ctsvc_db_email_get_record(int id, contacts_record_h* out_record);
-static int __ctsvc_db_email_update_record(contacts_record_h record);
-static int __ctsvc_db_email_delete_record(int id);
-static int __ctsvc_db_email_get_all_records(int offset, int limit, contacts_list_h* out_list);
-static int __ctsvc_db_email_get_records_with_query(contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
-
-ctsvc_db_plugin_info_s ctsvc_db_plugin_email = {
-       .is_query_only = false,
-       .insert_record = __ctsvc_db_email_insert_record,
-       .get_record = __ctsvc_db_email_get_record,
-       .update_record = __ctsvc_db_email_update_record,
-       .delete_record = __ctsvc_db_email_delete_record,
-       .get_all_records = __ctsvc_db_email_get_all_records,
-       .get_records_with_query = __ctsvc_db_email_get_records_with_query,
-       .insert_records = NULL,
-       .update_records = NULL,
-       .delete_records = NULL,
-       .get_count = NULL,
-       .get_count_with_query = NULL,
-       .replace_record = NULL,
-       .replace_records = NULL,
-};
 
 static int __ctsvc_db_email_get_person_default_email(int person_id)
 {
@@ -62,9 +38,9 @@ static int __ctsvc_db_email_get_person_default_email(int person_id)
        char query[CTS_SQL_MAX_LEN] = {0};
 
        snprintf(query, sizeof(query),
-               "SELECT id FROM "CTSVC_DB_VIEW_CONTACT" c, "CTS_TABLE_DATA" d "
-               "WHERE c.person_id = %d AND d.datatype = %d AND c.contact_id = d.contact_id AND d.is_default = 1",
-               person_id, CTSVC_DATA_EMAIL);
+                       "SELECT id FROM "CTSVC_DB_VIEW_CONTACT" c, "CTS_TABLE_DATA" d "
+                       "WHERE c.person_id = %d AND d.datatype = %d AND c.contact_id = d.contact_id AND d.is_default = 1",
+                       person_id, CONTACTS_DATA_TYPE_EMAIL);
        ret = ctsvc_query_get_first_int_result(query, &default_email_id);
        if (CONTACTS_ERROR_NONE != ret)
                return 0;
@@ -106,7 +82,7 @@ static int __ctsvc_db_email_get_default_email_id(int contact_id)
        char query[CTS_SQL_MAX_LEN] = {0};
        snprintf(query, sizeof(query),
                        "SELECT id FROM "CTS_TABLE_DATA" WHERE datatype=%d AND contact_id=%d AND is_default=1",
-                       CTSVC_DATA_EMAIL, contact_id);
+                       CONTACTS_DATA_TYPE_EMAIL, contact_id);
        ret = ctsvc_query_get_first_int_result(query, &email_id);
        if (CONTACTS_ERROR_NONE != ret)
                return 0;
@@ -120,7 +96,7 @@ static int __ctsvc_db_email_get_primary_default_email_id(int contact_id)
        char query[CTS_SQL_MAX_LEN] = {0};
        snprintf(query, sizeof(query),
                        "SELECT id FROM "CTS_TABLE_DATA" WHERE datatype=%d AND contact_id=%d AND is_primary_default=1",
-                       CTSVC_DATA_EMAIL, contact_id);
+                       CONTACTS_DATA_TYPE_EMAIL, contact_id);
        ret = ctsvc_query_get_first_int_result(query, &email_id);
        if (CONTACTS_ERROR_NONE != ret)
                return 0;
@@ -136,7 +112,7 @@ static int __ctsvc_db_email_get_primary_default_contact_id(int person_id)
        snprintf(query, sizeof(query),
                        "SELECT c.contact_id FROM "CTS_TABLE_CONTACTS" c, "CTS_TABLE_DATA" d "
                        "WHERE c.person_id = %d AND d.datatype = %d AND c.contact_id = d.contact_id AND d.is_primary_default = 1",
-                       person_id, CTSVC_DATA_EMAIL);
+                       person_id, CONTACTS_DATA_TYPE_EMAIL);
        ret = ctsvc_query_get_first_int_result(query, &default_contact_id);
        if (CONTACTS_ERROR_NONE != ret)
                return 0;
@@ -164,43 +140,50 @@ static int __ctsvc_db_email_insert_record(contacts_record_h record, int *id)
        int old_default_email_id = 0;
        char query[CTS_SQL_MAX_LEN] = {0};
        cts_stmt stmt = NULL;
-       ctsvc_email_s *email = (ctsvc_email_s *)record;
-       RETVM_IF(NULL == email->email_addr, CONTACTS_ERROR_INVALID_PARAMETER,
-               "Invalid parameter : email is NULL");
+       ctsvc_email_s *email = (ctsvc_email_s*)record;
+       RETV_IF(NULL == email->email_addr, CONTACTS_ERROR_INVALID_PARAMETER);
 
        ret = ctsvc_begin_trans();
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_begin_trans() Fail(%d)", ret);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        snprintf(query, sizeof(query),
                        "SELECT addressbook_id, person_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", email->contact_id);
        ret = ctsvc_query_prepare(query, &stmt);
        if (NULL == stmt) {
-               CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_query_prepare() Fail(%d)", ret);
                ctsvc_end_trans(false);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        ret = ctsvc_stmt_step(stmt);
        if (1 != ret) {
-               CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_stmt_step() Fail(%d)", ret);
                ctsvc_stmt_finalize(stmt);
                ctsvc_end_trans(false);
                if (CONTACTS_ERROR_NONE == ret)
                        return CONTACTS_ERROR_INVALID_PARAMETER;
                else
                        return ret;
+               /* LCOV_EXCL_STOP */
        }
        addressbook_id = ctsvc_stmt_get_int(stmt, 0);
        person_id = ctsvc_stmt_get_int(stmt, 1);
        ctsvc_stmt_finalize(stmt);
 
-       if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
-               CTS_ERR("Does not have permission to update this email record : addresbook_id(%d)", addressbook_id);
+       if (false == ctsvc_have_ab_write_permission(addressbook_id, false)) {
+               /* LCOV_EXCL_START */
+               ERR("No permission in this addresbook_id(%d)", addressbook_id);
                ctsvc_end_trans(false);
                return CONTACTS_ERROR_PERMISSION_DENIED;
+               /* LCOV_EXCL_STOP */
        }
 
        old_default_email_id = __ctsvc_db_email_get_default_email_id(email->contact_id);
@@ -209,21 +192,25 @@ static int __ctsvc_db_email_insert_record(contacts_record_h record, int *id)
 
        ret = ctsvc_db_email_insert(record, email->contact_id, false, id);
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_begin_trans() Fail(%d)", ret);
                ctsvc_end_trans(false);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        snprintf(query, sizeof(query),
-               "UPDATE "CTS_TABLE_CONTACTS" SET has_email = %d, changed_ver = %d, changed_time = %d "
+                       "UPDATE "CTS_TABLE_CONTACTS" SET has_email = %d, changed_ver = %d, changed_time = %d "
                        "WHERE contact_id = %d",
                        1, ctsvc_get_next_ver(), (int)time(NULL), email->contact_id);
 
        ret = ctsvc_query_exec(query);
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_query_exec() Fail(%d)", ret);
                ctsvc_end_trans(false);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        if (email->is_default) {
@@ -243,14 +230,16 @@ static int __ctsvc_db_email_insert_record(contacts_record_h record, int *id)
 
        ret = ctsvc_end_trans(true);
        if (ret < CONTACTS_ERROR_NONE) {
-               CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_end_trans() Fail(%d)", ret);
                return ret;
-       }
-       else
+               /* LCOV_EXCL_STOP */
+       } else {
                return CONTACTS_ERROR_NONE;
+       }
 }
 
-static int __ctsvc_db_email_get_record(int id, contacts_record_hout_record)
+static int __ctsvc_db_email_get_record(int id, contacts_record_h *out_record)
 {
        int ret;
        cts_stmt stmt = NULL;
@@ -261,22 +250,24 @@ static int __ctsvc_db_email_get_record(int id, contacts_record_h* out_record)
 
        snprintf(query, sizeof(query),
                        "SELECT id, data.contact_id, is_default, data1, data2, data3 "
-                               "FROM "CTS_TABLE_DATA", "CTSVC_DB_VIEW_CONTACT" "
-                               "ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
-                               "WHERE id = %d AND datatype = %d ",
-                               id, CTSVC_DATA_EMAIL);
+                       "FROM "CTS_TABLE_DATA", "CTSVC_DB_VIEW_CONTACT" "
+                       "ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
+                       "WHERE id = %d AND datatype = %d ",
+                       id, CONTACTS_DATA_TYPE_EMAIL);
 
        ret = ctsvc_query_prepare(query, &stmt);
-       RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
+       RETVM_IF(NULL == stmt, ret, "ctsvc_query_prepare() Fail(%d)", ret);
 
        ret = ctsvc_stmt_step(stmt);
        if (1 /*CTS_TRUE*/ != ret) {
-               CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_stmt_step() Fail(%d)", ret);
                ctsvc_stmt_finalize(stmt);
                if (CONTACTS_ERROR_NONE == ret)
                        return CONTACTS_ERROR_NO_DATA;
                else
                        return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        ctsvc_db_email_get_value_from_stmt(stmt, out_record, 0);
@@ -291,35 +282,43 @@ static int __ctsvc_db_email_update_record(contacts_record_h record)
        int ret;
        int addressbook_id;
        char query[CTS_SQL_MAX_LEN] = {0};
-       ctsvc_email_s *email = (ctsvc_email_s *)record;
+       ctsvc_email_s *email = (ctsvc_email_s*)record;
        RETVM_IF(NULL == email->email_addr, CONTACTS_ERROR_INVALID_PARAMETER, "email is empty");
 
        ret = ctsvc_begin_trans();
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_begin_trans() Fail(%d)", ret);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        snprintf(query, sizeof(query),
                        "SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", email->contact_id);
        ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("No data : contact_id (%d) is not exist", email->contact_id);
+               /* LCOV_EXCL_START */
+               ERR("No data : contact_id (%d) is not exist", email->contact_id);
                ctsvc_end_trans(false);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
-       if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
-               CTS_ERR("Does not have permission to update this email record : addresbook_id(%d)", addressbook_id);
+       if (false == ctsvc_have_ab_write_permission(addressbook_id, false)) {
+               /* LCOV_EXCL_START */
+               ERR("No permission in this addresbook_id(%d)", addressbook_id);
                ctsvc_end_trans(false);
                return CONTACTS_ERROR_PERMISSION_DENIED;
+               /* LCOV_EXCL_STOP */
        }
 
        ret = ctsvc_db_email_update(record, false);
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("update record Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("update record Fail(%d)", ret);
                ctsvc_end_trans(false);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        if (email->is_default) {
@@ -332,20 +331,23 @@ static int __ctsvc_db_email_update_record(contacts_record_h record)
 
        ret = ctsvc_db_contact_update_changed_time(email->contact_id);
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
                ctsvc_end_trans(false);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
        ctsvc_set_person_noti();
 
        ret = ctsvc_end_trans(true);
-       if (ret < CONTACTS_ERROR_NONE)
-       {
-               CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
+       if (ret < CONTACTS_ERROR_NONE) {
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_end_trans() Fail(%d)", ret);
                return ret;
-       }
-       else
+               /* LCOV_EXCL_STOP */
+       } else {
                return CONTACTS_ERROR_NONE;
+       }
 }
 
 static int __ctsvc_db_email_delete_record(int id)
@@ -363,8 +365,10 @@ static int __ctsvc_db_email_delete_record(int id)
 
        ret = ctsvc_begin_trans();
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_begin_trans() Fail(%d)", ret);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        snprintf(query, sizeof(query),
@@ -373,47 +377,55 @@ static int __ctsvc_db_email_delete_record(int id)
 
        ret = ctsvc_query_prepare(query, &stmt);
        if (NULL == stmt) {
-               CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_query_prepare() Fail(%d)", ret);
                ctsvc_end_trans(false);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        ret = ctsvc_stmt_step(stmt);
        if (1 != ret) {
-               CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_stmt_step() Fail(%d)", ret);
                ctsvc_stmt_finalize(stmt);
                ctsvc_end_trans(false);
                if (CONTACTS_ERROR_NONE == ret)
                        return CONTACTS_ERROR_NO_DATA;
                else
                        return ret;
+               /* LCOV_EXCL_STOP */
        }
        contact_id = ctsvc_stmt_get_int(stmt, 0);
        person_id = ctsvc_stmt_get_int(stmt, 1);
        addressbook_id = ctsvc_stmt_get_int(stmt, 2);
        ctsvc_stmt_finalize(stmt);
 
-       if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
-               CTS_ERR("Does not have permission to delete this email record : addresbook_id(%d)", addressbook_id);
+       if (false == ctsvc_have_ab_write_permission(addressbook_id, false)) {
+               /* LCOV_EXCL_START */
+               ERR("No permission in this addresbook_id(%d)", addressbook_id);
                ctsvc_end_trans(false);
                return CONTACTS_ERROR_PERMISSION_DENIED;
+               /* LCOV_EXCL_STOP */
        }
 
        snprintf(query, sizeof(query),
                        "SELECT is_default, is_primary_default FROM "CTS_TABLE_DATA" WHERE id = %d", id);
 
        ret = ctsvc_query_prepare(query, &stmt);
-       RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
+       RETVM_IF(NULL == stmt, ret, "ctsvc_query_prepare() Fail(%d)", ret);
 
        ret = ctsvc_stmt_step(stmt);
        if (1 != ret) {
-               CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_stmt_step() Fail(%d)", ret);
                ctsvc_stmt_finalize(stmt);
                ctsvc_end_trans(false);
                if (CONTACTS_ERROR_NONE == ret)
                        return CONTACTS_ERROR_NO_DATA;
                else
                        return ret;
+               /* LCOV_EXCL_STOP */
        }
        is_default = ctsvc_stmt_get_int(stmt, 0);
        is_primary_default = ctsvc_stmt_get_int(stmt, 1);
@@ -421,36 +433,39 @@ static int __ctsvc_db_email_delete_record(int id)
 
        ret = ctsvc_db_email_delete(id, false);
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_begin_trans() Fail(%d)", ret);
                ctsvc_end_trans(false);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        snprintf(query, sizeof(query),
                        "SELECT id FROM "CTS_TABLE_DATA" WHERE datatype = %d AND contact_id = %d AND is_my_profile = 0 limit 1",
-                       CTSVC_DATA_EMAIL, contact_id);
+                       CONTACTS_DATA_TYPE_EMAIL, contact_id);
        ret = ctsvc_query_get_first_int_result(query, &email_id);
        if (0 < ret)
                has_email = true;
 
        snprintf(query, sizeof(query),
-               "UPDATE "CTS_TABLE_CONTACTS" SET has_email = %d, changed_ver = %d, changed_time = %d "
+                       "UPDATE "CTS_TABLE_CONTACTS" SET has_email = %d, changed_ver = %d, changed_time = %d "
                        "WHERE contact_id = %d",
                        has_email, ctsvc_get_next_ver(), (int)time(NULL), contact_id);
 
        ret = ctsvc_query_exec(query);
        if (CONTACTS_ERROR_NONE != ret) {
-               CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+               /* LCOV_EXCL_START */
+               ERR("ctsvc_query_exec() Fail(%d)", ret);
                ctsvc_end_trans(false);
                return ret;
+               /* LCOV_EXCL_STOP */
        }
 
        if (is_default) {
 
                if (email_id) {
                        __ctsvc_db_email_update_default(email_id, contact_id, is_default, is_primary_default);
-               }
-               else if (is_primary_default) {
+               } else if (is_primary_default) {
                        int default_email_id = 0;
                        default_email_id = __ctsvc_db_email_get_person_default_email(person_id);
                        if (default_email_id)
@@ -465,11 +480,11 @@ static int __ctsvc_db_email_delete_record(int id)
        ctsvc_set_person_noti();
 
        ret = ctsvc_end_trans(true);
-       RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
+       RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_end_trans() Fail(%d)", ret);
        return CONTACTS_ERROR_NONE;
 }
 
-static int __ctsvc_db_email_get_all_records(int offset, int limit, contacts_list_hout_list)
+static int __ctsvc_db_email_get_all_records(int offset, int limit, contacts_list_h *out_list)
 {
        int len;
        int ret;
@@ -480,10 +495,10 @@ static int __ctsvc_db_email_get_all_records(int offset, int limit, contacts_list
 
        len = snprintf(query, sizeof(query),
                        "SELECT id, data.contact_id, is_default, data1, data2, data3 "
-                               "FROM "CTS_TABLE_DATA", "CTSVC_DB_VIEW_CONTACT" "
-                               "ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
-                               "WHERE datatype = %d AND is_my_profile=0 ",
-                               CTSVC_DATA_EMAIL);
+                       "FROM "CTS_TABLE_DATA", "CTSVC_DB_VIEW_CONTACT" "
+                       "ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
+                       "WHERE datatype = %d AND is_my_profile=0 ",
+                       CONTACTS_DATA_TYPE_EMAIL);
 
        if (0 != limit) {
                len += snprintf(query+len, sizeof(query)-len, " LIMIT %d", limit);
@@ -492,15 +507,17 @@ static int __ctsvc_db_email_get_all_records(int offset, int limit, contacts_list
        }
 
        ret = ctsvc_query_prepare(query, &stmt);
-       RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
+       RETVM_IF(NULL == stmt, ret, "ctsvc_query_prepare() Fail(%d)", ret);
 
        contacts_list_create(&list);
        while ((ret = ctsvc_stmt_step(stmt))) {
                if (1 /*CTS_TRUE */ != ret) {
-                       CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+                       /* LCOV_EXCL_START */
+                       ERR("DB : ctsvc_stmt_step() Fail(%d)", ret);
                        ctsvc_stmt_finalize(stmt);
                        contacts_list_destroy(list, true);
                        return ret;
+                       /* LCOV_EXCL_STOP */
                }
                ctsvc_db_email_get_value_from_stmt(stmt, (contacts_record_h*)&email, 0);
                ctsvc_list_prepend(list, (contacts_record_h)email);
@@ -513,7 +530,7 @@ static int __ctsvc_db_email_get_all_records(int offset, int limit, contacts_list
 }
 
 static int __ctsvc_db_email_get_records_with_query(contacts_query_h query, int offset,
-               int limit, contacts_list_hout_list)
+               int limit, contacts_list_h *out_list)
 {
        int ret;
        int i;
@@ -524,7 +541,7 @@ static int __ctsvc_db_email_get_records_with_query(contacts_query_h query, int o
        ctsvc_email_s *email;
 
        RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
-       s_query = (ctsvc_query_s *)query;
+       s_query = (ctsvc_query_s*)query;
 
        ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
        RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
@@ -533,17 +550,19 @@ static int __ctsvc_db_email_get_records_with_query(contacts_query_h query, int o
        while ((ret = ctsvc_stmt_step(stmt))) {
                contacts_record_h record;
                if (1 /*CTS_TRUE */ != ret) {
-                       CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
+                       /* LCOV_EXCL_START */
+                       ERR("ctsvc_stmt_step() Fail(%d)", ret);
                        ctsvc_stmt_finalize(stmt);
                        contacts_list_destroy(list, true);
                        return ret;
+                       /* LCOV_EXCL_STOP */
                }
 
                contacts_record_create(_contacts_email._uri, &record);
                email = (ctsvc_email_s*)record;
-               if (0 == s_query->projection_count)
+               if (0 == s_query->projection_count) {
                        field_count = s_query->property_count;
-               else {
+               else {
                        field_count = s_query->projection_count;
                        ret = ctsvc_record_set_projection_flags(record, s_query->projection,
                                        s_query->projection_count, s_query->property_count);
@@ -552,7 +571,7 @@ static int __ctsvc_db_email_get_records_with_query(contacts_query_h query, int o
                                ASSERT_NOT_REACHED("To set projection is Fail.\n");
                }
 
-               for (i=0;i<field_count;i++) {
+               for (i = 0; i < field_count; i++) {
                        char *temp;
                        int property_id;
                        if (0 == s_query->projection_count)
@@ -560,7 +579,7 @@ static int __ctsvc_db_email_get_records_with_query(contacts_query_h query, int o
                        else
                                property_id = s_query->projection[i];
 
-                       switch(property_id) {
+                       switch (property_id) {
                        case CTSVC_PROPERTY_EMAIL_ID:
                                email->id = ctsvc_stmt_get_int(stmt, i);
                                break;
@@ -595,3 +614,21 @@ static int __ctsvc_db_email_get_records_with_query(contacts_query_h query, int o
        *out_list = list;
        return CONTACTS_ERROR_NONE;
 }
+
+ctsvc_db_plugin_info_s ctsvc_db_plugin_email = {
+       .is_query_only = false,
+       .insert_record = __ctsvc_db_email_insert_record,
+       .get_record = __ctsvc_db_email_get_record,
+       .update_record = __ctsvc_db_email_update_record,
+       .delete_record = __ctsvc_db_email_delete_record,
+       .get_all_records = __ctsvc_db_email_get_all_records,
+       .get_records_with_query = __ctsvc_db_email_get_records_with_query,
+       .insert_records = NULL,
+       .update_records = NULL,
+       .delete_records = NULL,
+       .get_count = NULL,
+       .get_count_with_query = NULL,
+       .replace_record = NULL,
+       .replace_records = NULL,
+};
+