1115cd2caSopenharmony_ci/*
2115cd2caSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3115cd2caSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4115cd2caSopenharmony_ci * you may not use this file except in compliance with the License.
5115cd2caSopenharmony_ci * You may obtain a copy of the License at
6115cd2caSopenharmony_ci *
7115cd2caSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8115cd2caSopenharmony_ci *
9115cd2caSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10115cd2caSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11115cd2caSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12115cd2caSopenharmony_ci * See the License for the specific language governing permissions and
13115cd2caSopenharmony_ci * limitations under the License.
14115cd2caSopenharmony_ci */
15115cd2caSopenharmony_ci
16115cd2caSopenharmony_ci#include "result_convert.h"
17115cd2caSopenharmony_ci
18115cd2caSopenharmony_ci#include "hilog_wrapper_api.h"
19115cd2caSopenharmony_ci
20115cd2caSopenharmony_cinamespace OHOS {
21115cd2caSopenharmony_cinamespace ContactsApi {
22115cd2caSopenharmony_ciResultConvert::ResultConvert(void)
23115cd2caSopenharmony_ci{
24115cd2caSopenharmony_ci}
25115cd2caSopenharmony_ci
26115cd2caSopenharmony_ciResultConvert::~ResultConvert()
27115cd2caSopenharmony_ci{
28115cd2caSopenharmony_ci}
29115cd2caSopenharmony_ci
30115cd2caSopenharmony_ci/**
31115cd2caSopenharmony_ci * @brief Get object array by resultSet
32115cd2caSopenharmony_ci *
33115cd2caSopenharmony_ci * @param env Conditions for convert operation
34115cd2caSopenharmony_ci * @param resultSet Conditions for convert operation
35115cd2caSopenharmony_ci *
36115cd2caSopenharmony_ci * @return The result returned by convert operation
37115cd2caSopenharmony_ci */
38115cd2caSopenharmony_cinapi_value ResultConvert::ResultSetToObject(
39115cd2caSopenharmony_ci    napi_env env, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
40115cd2caSopenharmony_ci{
41115cd2caSopenharmony_ci    if (resultSet == nullptr) {
42115cd2caSopenharmony_ci        HILOG_ERROR("ResultConvert::ResultSetToObject resultSet is nullptr");
43115cd2caSopenharmony_ci        napi_value array;
44115cd2caSopenharmony_ci        napi_create_array(env, &array);
45115cd2caSopenharmony_ci        return array;
46115cd2caSopenharmony_ci    }
47115cd2caSopenharmony_ci    int rowCount = 0;
48115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
49115cd2caSopenharmony_ci    HILOG_INFO("ResultSetToObject GetRowCount is %{public}d", rowCount);
50115cd2caSopenharmony_ci    if (rowCount == 0) {
51115cd2caSopenharmony_ci        napi_value array;
52115cd2caSopenharmony_ci        napi_create_array(env, &array);
53115cd2caSopenharmony_ci        resultSet->Close();
54115cd2caSopenharmony_ci        return array;
55115cd2caSopenharmony_ci    }
56115cd2caSopenharmony_ci    std::map<int, napi_value> resultSetMap;
57115cd2caSopenharmony_ci    std::map<int, std::string> quickSearchMap;
58115cd2caSopenharmony_ci    int resultSetNum = resultSet->GoToFirstRow();
59115cd2caSopenharmony_ci    while (resultSetNum == 0) {
60115cd2caSopenharmony_ci        int contactIdValue = 0;
61115cd2caSopenharmony_ci        std::string contactIdKey = "contact_id";
62115cd2caSopenharmony_ci        int contactIndex = 0;
63115cd2caSopenharmony_ci        resultSet->GetColumnIndex(contactIdKey, contactIndex);
64115cd2caSopenharmony_ci        resultSet->GetInt(contactIndex, contactIdValue);
65115cd2caSopenharmony_ci        napi_value napiObject = GetResultMapValue(env, resultSetMap, contactIdValue);
66115cd2caSopenharmony_ci        PutQuickSearchKey(env, resultSet, quickSearchMap, contactIdValue);
67115cd2caSopenharmony_ci        ConvertContactObject(env, napiObject, resultSet);
68115cd2caSopenharmony_ci        resultSetNum = resultSet->GoToNextRow();
69115cd2caSopenharmony_ci    }
70115cd2caSopenharmony_ci    resultSet->Close();
71115cd2caSopenharmony_ci    napi_value array = ConvertContactArray(env, resultSetMap, quickSearchMap);
72115cd2caSopenharmony_ci    return array;
73115cd2caSopenharmony_ci}
74115cd2caSopenharmony_ci
75115cd2caSopenharmony_civoid ResultConvert::PutQuickSearchKey(napi_env env, std::shared_ptr<DataShare::DataShareResultSet> &resultSet,
76115cd2caSopenharmony_ci    std::map<int, std::string> &quickSearchMap, int contactIdValue)
77115cd2caSopenharmony_ci{
78115cd2caSopenharmony_ci    std::string quickSearchValue = "";
79115cd2caSopenharmony_ci    std::string quickSearchKey = "quick_search_key";
80115cd2caSopenharmony_ci    int columnIndex = 0;
81115cd2caSopenharmony_ci    resultSet->GetColumnIndex(quickSearchKey, columnIndex);
82115cd2caSopenharmony_ci    resultSet->GetString(columnIndex, quickSearchValue);
83115cd2caSopenharmony_ci    if (quickSearchMap.count(contactIdValue) <= 0) {
84115cd2caSopenharmony_ci        napi_value napiQuickSearchValue;
85115cd2caSopenharmony_ci        napi_create_string_utf8(env, quickSearchValue.c_str(), NAPI_AUTO_LENGTH, &napiQuickSearchValue);
86115cd2caSopenharmony_ci        quickSearchMap.insert(std::pair<int, std::string>(contactIdValue, quickSearchValue));
87115cd2caSopenharmony_ci    }
88115cd2caSopenharmony_ci}
89115cd2caSopenharmony_ci
90115cd2caSopenharmony_cinapi_value ResultConvert::ConvertContactArray(
91115cd2caSopenharmony_ci    napi_env env, std::map<int, napi_value> &resultSetMap, std::map<int, std::string> &quickSearchMap)
92115cd2caSopenharmony_ci{
93115cd2caSopenharmony_ci    napi_value array;
94115cd2caSopenharmony_ci    napi_create_array(env, &array);
95115cd2caSopenharmony_ci    int count = 0;
96115cd2caSopenharmony_ci    std::map<int, napi_value>::iterator it;
97115cd2caSopenharmony_ci    for (it = resultSetMap.begin(); it != resultSetMap.end(); ++it) {
98115cd2caSopenharmony_ci        napi_value elementObject = it->second;
99115cd2caSopenharmony_ci        if (quickSearchMap.count(it->first) > 0) {
100115cd2caSopenharmony_ci            napi_value keyValue;
101115cd2caSopenharmony_ci            napi_create_string_utf8(env, quickSearchMap[it->first].c_str(), NAPI_AUTO_LENGTH, &keyValue);
102115cd2caSopenharmony_ci            napi_value napiQuickKey;
103115cd2caSopenharmony_ci            napi_create_string_utf8(env, "key", NAPI_AUTO_LENGTH, &napiQuickKey);
104115cd2caSopenharmony_ci            napi_set_property(env, elementObject, napiQuickKey, keyValue);
105115cd2caSopenharmony_ci        }
106115cd2caSopenharmony_ci        napi_value keyValue;
107115cd2caSopenharmony_ci        napi_create_int64(env, it->first, &keyValue);
108115cd2caSopenharmony_ci        napi_value napiIdKey;
109115cd2caSopenharmony_ci        napi_create_string_utf8(env, "id", NAPI_AUTO_LENGTH, &napiIdKey);
110115cd2caSopenharmony_ci        napi_set_property(env, elementObject, napiIdKey, keyValue);
111115cd2caSopenharmony_ci        napi_set_element(env, array, count, elementObject);
112115cd2caSopenharmony_ci        ++count;
113115cd2caSopenharmony_ci    }
114115cd2caSopenharmony_ci    return array;
115115cd2caSopenharmony_ci}
116115cd2caSopenharmony_ci
117115cd2caSopenharmony_ci/**
118115cd2caSopenharmony_ci * @brief Converting NaPi objects to C++ objects
119115cd2caSopenharmony_ci *
120115cd2caSopenharmony_ci * @param env Conditions for convert operation
121115cd2caSopenharmony_ci * @param napiObject Conditions for convert operation
122115cd2caSopenharmony_ci * @param resultSet Target of convert operation
123115cd2caSopenharmony_ci */
124115cd2caSopenharmony_civoid ResultConvert::ConvertContactObject(
125115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
126115cd2caSopenharmony_ci{
127115cd2caSopenharmony_ci    int typeIdValue = 0;
128115cd2caSopenharmony_ci    std::string typeId = "type_id";
129115cd2caSopenharmony_ci    int columnIndexType = 0;
130115cd2caSopenharmony_ci    resultSet->GetColumnIndex(typeId, columnIndexType);
131115cd2caSopenharmony_ci    resultSet->GetInt(columnIndexType, typeIdValue);
132115cd2caSopenharmony_ci    ConvertEmail(env, napiObject, typeIdValue, resultSet);
133115cd2caSopenharmony_ci    ConvertName(env, napiObject, typeIdValue, resultSet);
134115cd2caSopenharmony_ci    ConvertUri(env, napiObject, typeIdValue, resultSet);
135115cd2caSopenharmony_ci    ConvertEvent(env, napiObject, typeIdValue, resultSet);
136115cd2caSopenharmony_ci    ConvertGroup(env, napiObject, typeIdValue, resultSet);
137115cd2caSopenharmony_ci    ConvertImAddress(env, napiObject, typeIdValue, resultSet);
138115cd2caSopenharmony_ci    ConvertPhoneNumber(env, napiObject, typeIdValue, resultSet);
139115cd2caSopenharmony_ci    ConvertPostalAddress(env, napiObject, typeIdValue, resultSet);
140115cd2caSopenharmony_ci    ConvertRelation(env, napiObject, typeIdValue, resultSet);
141115cd2caSopenharmony_ci    ConvertSipAddress(env, napiObject, typeIdValue, resultSet);
142115cd2caSopenharmony_ci    ConvertWebsite(env, napiObject, typeIdValue, resultSet);
143115cd2caSopenharmony_ci    ConvertNickName(env, napiObject, typeIdValue, resultSet);
144115cd2caSopenharmony_ci    ConvertNote(env, napiObject, typeIdValue, resultSet);
145115cd2caSopenharmony_ci    ConvertOrganization(env, napiObject, typeIdValue, resultSet);
146115cd2caSopenharmony_ci}
147115cd2caSopenharmony_ci
148115cd2caSopenharmony_cibool ResultConvert::IsEmpty(std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
149115cd2caSopenharmony_ci{
150115cd2caSopenharmony_ci    if (resultSet == nullptr) {
151115cd2caSopenharmony_ci        HILOG_ERROR("ResultSetToHolder resultSet is nullptr");
152115cd2caSopenharmony_ci        return true;
153115cd2caSopenharmony_ci    }
154115cd2caSopenharmony_ci    int rowCount = 0;
155115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
156115cd2caSopenharmony_ci    if (rowCount == 0) {
157115cd2caSopenharmony_ci        resultSet->Close();
158115cd2caSopenharmony_ci        return true;
159115cd2caSopenharmony_ci    }
160115cd2caSopenharmony_ci    return false;
161115cd2caSopenharmony_ci}
162115cd2caSopenharmony_ci
163115cd2caSopenharmony_cinapi_value ResultConvert::ResultSetToHolder(
164115cd2caSopenharmony_ci    napi_env env, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
165115cd2caSopenharmony_ci{
166115cd2caSopenharmony_ci    napi_value array;
167115cd2caSopenharmony_ci    napi_create_array(env, &array);
168115cd2caSopenharmony_ci    if (IsEmpty(resultSet)) {
169115cd2caSopenharmony_ci        return array;
170115cd2caSopenharmony_ci    }
171115cd2caSopenharmony_ci    int resultSetNum = resultSet->GoToFirstRow();
172115cd2caSopenharmony_ci    int count = 0;
173115cd2caSopenharmony_ci    while (resultSetNum == 0) {
174115cd2caSopenharmony_ci        napi_value elementObject;
175115cd2caSopenharmony_ci        napi_create_object(env, &elementObject);
176115cd2caSopenharmony_ci        int idValue;
177115cd2caSopenharmony_ci        std::string id = "id";
178115cd2caSopenharmony_ci        int idIndex = 0;
179115cd2caSopenharmony_ci        resultSet->GetColumnIndex(id, idIndex);
180115cd2caSopenharmony_ci        resultSet->GetInt(idIndex, idValue);
181115cd2caSopenharmony_ci        napi_value napiIdKey;
182115cd2caSopenharmony_ci        napi_create_string_utf8(env, "holderId", NAPI_AUTO_LENGTH, &napiIdKey);
183115cd2caSopenharmony_ci        napi_value napiValue;
184115cd2caSopenharmony_ci        napi_create_int64(env, idValue, &napiValue);
185115cd2caSopenharmony_ci        napi_set_property(env, elementObject, napiIdKey, napiValue);
186115cd2caSopenharmony_ci        std::string displayName = "account_name";
187115cd2caSopenharmony_ci        std::string displayNameValue;
188115cd2caSopenharmony_ci        int displayNameIndex = 0;
189115cd2caSopenharmony_ci        resultSet->GetColumnIndex(displayName, displayNameIndex);
190115cd2caSopenharmony_ci        resultSet->GetString(displayNameIndex, displayNameValue);
191115cd2caSopenharmony_ci        napi_value napiDisplayNameKey;
192115cd2caSopenharmony_ci        napi_create_string_utf8(env, "displayName", NAPI_AUTO_LENGTH, &napiDisplayNameKey);
193115cd2caSopenharmony_ci        napi_value napiDisplayNameValue;
194115cd2caSopenharmony_ci        napi_create_string_utf8(env, displayNameValue.c_str(), NAPI_AUTO_LENGTH, &napiDisplayNameValue);
195115cd2caSopenharmony_ci        napi_set_property(env, elementObject, napiDisplayNameKey, napiDisplayNameValue);
196115cd2caSopenharmony_ci        std::string bundleName = "account_type";
197115cd2caSopenharmony_ci        std::string bundleNameValue;
198115cd2caSopenharmony_ci        int bundleNameIndex = 0;
199115cd2caSopenharmony_ci        resultSet->GetColumnIndex(bundleName, bundleNameIndex);
200115cd2caSopenharmony_ci        resultSet->GetString(bundleNameIndex, bundleNameValue);
201115cd2caSopenharmony_ci        napi_value napiBundleNameKey;
202115cd2caSopenharmony_ci        napi_create_string_utf8(env, "bundleName", NAPI_AUTO_LENGTH, &napiBundleNameKey);
203115cd2caSopenharmony_ci        napi_value napiBundleNameValue;
204115cd2caSopenharmony_ci        napi_create_string_utf8(env, bundleNameValue.c_str(), NAPI_AUTO_LENGTH, &napiBundleNameValue);
205115cd2caSopenharmony_ci        napi_set_property(env, elementObject, napiBundleNameKey, napiBundleNameValue);
206115cd2caSopenharmony_ci        napi_set_element(env, array, count, elementObject);
207115cd2caSopenharmony_ci        ++count;
208115cd2caSopenharmony_ci        resultSetNum = resultSet->GoToNextRow();
209115cd2caSopenharmony_ci    }
210115cd2caSopenharmony_ci    resultSet->Close();
211115cd2caSopenharmony_ci    return array;
212115cd2caSopenharmony_ci}
213115cd2caSopenharmony_ci
214115cd2caSopenharmony_cinapi_value ResultConvert::ResultSetToGroup(
215115cd2caSopenharmony_ci    napi_env env, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
216115cd2caSopenharmony_ci{
217115cd2caSopenharmony_ci    napi_value array;
218115cd2caSopenharmony_ci    NAPI_CALL(env, napi_create_array(env, &array));
219115cd2caSopenharmony_ci    if (resultSet == nullptr) {
220115cd2caSopenharmony_ci        HILOG_ERROR("ResultSetToGroup resultSet is nullptr");
221115cd2caSopenharmony_ci        return array;
222115cd2caSopenharmony_ci    }
223115cd2caSopenharmony_ci    int rowCount = 0;
224115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
225115cd2caSopenharmony_ci    HILOG_INFO("ResultSetToGroup GetRowCount is %{public}d", rowCount);
226115cd2caSopenharmony_ci    if (rowCount == 0) {
227115cd2caSopenharmony_ci        resultSet->Close();
228115cd2caSopenharmony_ci        return array;
229115cd2caSopenharmony_ci    }
230115cd2caSopenharmony_ci    int resultSetNum = resultSet->GoToFirstRow();
231115cd2caSopenharmony_ci    HILOG_INFO("ResultSetToGroup resultSetNum is %{public}d", resultSetNum);
232115cd2caSopenharmony_ci    int count = 0;
233115cd2caSopenharmony_ci    while (resultSetNum == 0) {
234115cd2caSopenharmony_ci        napi_value elementObject;
235115cd2caSopenharmony_ci        napi_create_object(env, &elementObject);
236115cd2caSopenharmony_ci        int idValue;
237115cd2caSopenharmony_ci        std::string id = "id";
238115cd2caSopenharmony_ci        int idIndex = 0;
239115cd2caSopenharmony_ci        resultSet->GetColumnIndex(id, idIndex);
240115cd2caSopenharmony_ci        resultSet->GetInt(idIndex, idValue);
241115cd2caSopenharmony_ci        napi_value napiIdKey;
242115cd2caSopenharmony_ci        napi_create_string_utf8(env, "id", NAPI_AUTO_LENGTH, &napiIdKey);
243115cd2caSopenharmony_ci        napi_value napiValue;
244115cd2caSopenharmony_ci        napi_create_int64(env, idValue, &napiValue);
245115cd2caSopenharmony_ci        napi_set_property(env, elementObject, napiIdKey, napiValue);
246115cd2caSopenharmony_ci        std::string title = "group_name";
247115cd2caSopenharmony_ci        std::string titleValue;
248115cd2caSopenharmony_ci        int titleIndex = 0;
249115cd2caSopenharmony_ci        resultSet->GetColumnIndex(title, titleIndex);
250115cd2caSopenharmony_ci        resultSet->GetString(titleIndex, titleValue);
251115cd2caSopenharmony_ci        napi_value napiTitleKey;
252115cd2caSopenharmony_ci        napi_create_string_utf8(env, "title", NAPI_AUTO_LENGTH, &napiTitleKey);
253115cd2caSopenharmony_ci        napi_value napiTitleValue;
254115cd2caSopenharmony_ci        napi_create_string_utf8(env, titleValue.c_str(), NAPI_AUTO_LENGTH, &napiTitleValue);
255115cd2caSopenharmony_ci        napi_set_property(env, elementObject, napiTitleKey, napiTitleValue);
256115cd2caSopenharmony_ci        napi_set_element(env, array, count, elementObject);
257115cd2caSopenharmony_ci        ++count;
258115cd2caSopenharmony_ci        resultSetNum = resultSet->GoToNextRow();
259115cd2caSopenharmony_ci    }
260115cd2caSopenharmony_ci    resultSet->Close();
261115cd2caSopenharmony_ci    return array;
262115cd2caSopenharmony_ci}
263115cd2caSopenharmony_ci
264115cd2caSopenharmony_cinapi_value ResultConvert::GetResultMapValue(napi_env env, std::map<int, napi_value> &resultSetMap, int &contactId)
265115cd2caSopenharmony_ci{
266115cd2caSopenharmony_ci    napi_value napiObject;
267115cd2caSopenharmony_ci    if (resultSetMap.count(contactId) > 0) {
268115cd2caSopenharmony_ci        std::map<int, napi_value>::iterator it = resultSetMap.find(contactId);
269115cd2caSopenharmony_ci        napiObject = it->second;
270115cd2caSopenharmony_ci    } else {
271115cd2caSopenharmony_ci        napi_create_object(env, &napiObject);
272115cd2caSopenharmony_ci        resultSetMap.insert(std::pair<int, napi_value>(contactId, napiObject));
273115cd2caSopenharmony_ci        std::map<int, napi_value>::iterator it = resultSetMap.find(contactId);
274115cd2caSopenharmony_ci        napiObject = it->second;
275115cd2caSopenharmony_ci    }
276115cd2caSopenharmony_ci    return napiObject;
277115cd2caSopenharmony_ci}
278115cd2caSopenharmony_ci
279115cd2caSopenharmony_cinapi_value ResultConvert::GetNapiValue(napi_env env, const std::string keyChar, napi_value napiObject)
280115cd2caSopenharmony_ci{
281115cd2caSopenharmony_ci    if (napiObject == nullptr) {
282115cd2caSopenharmony_ci        HILOG_ERROR("ResultConvert::GetNapiValue object is nullptr");
283115cd2caSopenharmony_ci        return nullptr;
284115cd2caSopenharmony_ci    }
285115cd2caSopenharmony_ci    napi_value key;
286115cd2caSopenharmony_ci    napi_create_string_utf8(env, keyChar.c_str(), NAPI_AUTO_LENGTH, &key);
287115cd2caSopenharmony_ci    bool result = false;
288115cd2caSopenharmony_ci    napi_has_property(env, napiObject, key, &result);
289115cd2caSopenharmony_ci    if (result) {
290115cd2caSopenharmony_ci        napi_value value = nullptr;
291115cd2caSopenharmony_ci        napi_get_property(env, napiObject, key, &value);
292115cd2caSopenharmony_ci        return value;
293115cd2caSopenharmony_ci    }
294115cd2caSopenharmony_ci    return nullptr;
295115cd2caSopenharmony_ci}
296115cd2caSopenharmony_ci
297115cd2caSopenharmony_cinapi_value ResultConvert::GetNapiElementObject(napi_env env, napi_value napiObject, const std::string valueChar)
298115cd2caSopenharmony_ci{
299115cd2caSopenharmony_ci    napi_value objectElement = GetNapiValue(env, valueChar, napiObject);
300115cd2caSopenharmony_ci    if (objectElement == nullptr) {
301115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
302115cd2caSopenharmony_ci    }
303115cd2caSopenharmony_ci    return objectElement;
304115cd2caSopenharmony_ci}
305115cd2caSopenharmony_ci
306115cd2caSopenharmony_cinapi_value ResultConvert::GetNapiElementArray(napi_env env, napi_value napiObject, const std::string valueChar)
307115cd2caSopenharmony_ci{
308115cd2caSopenharmony_ci    napi_value emailArray = GetNapiValue(env, valueChar, napiObject);
309115cd2caSopenharmony_ci    if (emailArray == nullptr) {
310115cd2caSopenharmony_ci        napi_create_array(env, &emailArray);
311115cd2caSopenharmony_ci    }
312115cd2caSopenharmony_ci    return emailArray;
313115cd2caSopenharmony_ci}
314115cd2caSopenharmony_ci
315115cd2caSopenharmony_cinapi_value ResultConvert::GetResultValue(
316115cd2caSopenharmony_ci    napi_env env, std::string &contentKey, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
317115cd2caSopenharmony_ci{
318115cd2caSopenharmony_ci    int columnIndex = ERROR;
319115cd2caSopenharmony_ci    resultSet->GetColumnIndex(contentKey, columnIndex);
320115cd2caSopenharmony_ci    OHOS::DataShare::DataType columnType;
321115cd2caSopenharmony_ci    resultSet->GetDataType(columnIndex, columnType);
322115cd2caSopenharmony_ci    napi_value napiValue = nullptr;
323115cd2caSopenharmony_ci    if (columnType == OHOS::DataShare::DataType::TYPE_NULL) {
324115cd2caSopenharmony_ci        return napiValue;
325115cd2caSopenharmony_ci    } else if (columnType == OHOS::DataShare::DataType::TYPE_BLOB) {
326115cd2caSopenharmony_ci        return napiValue;
327115cd2caSopenharmony_ci    } else if (columnType == OHOS::DataShare::DataType::TYPE_INTEGER) {
328115cd2caSopenharmony_ci        int intValue = 0;
329115cd2caSopenharmony_ci        resultSet->GetInt(columnIndex, intValue);
330115cd2caSopenharmony_ci        napi_create_int64(env, intValue, &napiValue);
331115cd2caSopenharmony_ci    } else if (columnType == OHOS::DataShare::DataType::TYPE_FLOAT) {
332115cd2caSopenharmony_ci        double doubleValue = 0;
333115cd2caSopenharmony_ci        resultSet->GetDouble(columnIndex, doubleValue);
334115cd2caSopenharmony_ci        napi_create_double(env, doubleValue, &napiValue);
335115cd2caSopenharmony_ci    } else if (columnType == OHOS::DataShare::DataType::TYPE_STRING) {
336115cd2caSopenharmony_ci        std::string stringValue;
337115cd2caSopenharmony_ci        resultSet->GetString(columnIndex, stringValue);
338115cd2caSopenharmony_ci        napi_create_string_utf8(env, stringValue.c_str(), NAPI_AUTO_LENGTH, &napiValue);
339115cd2caSopenharmony_ci    }
340115cd2caSopenharmony_ci    return napiValue;
341115cd2caSopenharmony_ci}
342115cd2caSopenharmony_ci
343115cd2caSopenharmony_cinapi_value ResultConvert::CreateNapiStringValue(napi_env env, const std::string key)
344115cd2caSopenharmony_ci{
345115cd2caSopenharmony_ci    napi_value keyValue;
346115cd2caSopenharmony_ci    napi_create_string_utf8(env, key.c_str(), NAPI_AUTO_LENGTH, &keyValue);
347115cd2caSopenharmony_ci    return keyValue;
348115cd2caSopenharmony_ci}
349115cd2caSopenharmony_ci
350115cd2caSopenharmony_civoid ResultConvert::ConvertEmail(
351115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
352115cd2caSopenharmony_ci{
353115cd2caSopenharmony_ci    if (typeId == EMAIL) {
354115cd2caSopenharmony_ci        const std::string emails = "emails";
355115cd2caSopenharmony_ci        napi_value emailArray = GetNapiElementArray(env, napiObject, emails);
356115cd2caSopenharmony_ci        uint32_t count = 0;
357115cd2caSopenharmony_ci        napi_get_array_length(env, emailArray, &count);
358115cd2caSopenharmony_ci        napi_value objectElement;
359115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
360115cd2caSopenharmony_ci        std::string detailInfoKey = "detail_info";
361115cd2caSopenharmony_ci        std::string customDataKey = "custom_data";
362115cd2caSopenharmony_ci        std::string extend7Key = "extend7";
363115cd2caSopenharmony_ci        std::string aliasDetailInfoKey = "alias_detail_info";
364115cd2caSopenharmony_ci        napi_value detailInfoValue = GetResultValue(env, detailInfoKey, resultSet);
365115cd2caSopenharmony_ci        napi_value customValue = GetResultValue(env, customDataKey, resultSet);
366115cd2caSopenharmony_ci        napi_value extend7Value = GetResultValue(env, extend7Key, resultSet);
367115cd2caSopenharmony_ci        napi_value aliasDetailInfoValue = GetResultValue(env, aliasDetailInfoKey, resultSet);
368115cd2caSopenharmony_ci        napi_value napiDetailInfoKey = CreateNapiStringValue(env, "email");
369115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDetailInfoKey, detailInfoValue);
370115cd2caSopenharmony_ci        napi_value napiLabelNameKey = CreateNapiStringValue(env, "labelName");
371115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelNameKey, customValue);
372115cd2caSopenharmony_ci        napi_value napiLabelIdKey = CreateNapiStringValue(env, "labelId");
373115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelIdKey, extend7Value);
374115cd2caSopenharmony_ci        napi_value napiDisplayNameIdKey = CreateNapiStringValue(env, "displayName");
375115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDisplayNameIdKey, aliasDetailInfoValue);
376115cd2caSopenharmony_ci        napi_set_element(env, emailArray, count, objectElement);
377115cd2caSopenharmony_ci        napi_value napiElementKey;
378115cd2caSopenharmony_ci        napi_create_string_utf8(env, emails.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
379115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, emailArray);
380115cd2caSopenharmony_ci    }
381115cd2caSopenharmony_ci}
382115cd2caSopenharmony_ci
383115cd2caSopenharmony_civoid ResultConvert::ConvertName(
384115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
385115cd2caSopenharmony_ci{
386115cd2caSopenharmony_ci    if (typeId == NAME) {
387115cd2caSopenharmony_ci        const std::string name = "name";
388115cd2caSopenharmony_ci        napi_value objectElement = GetNapiElementObject(env, napiObject, name);
389115cd2caSopenharmony_ci        std::string fullNameKey = "detail_info";
390115cd2caSopenharmony_ci        std::string familyNameKey = "family_name";
391115cd2caSopenharmony_ci        std::string familyNamePhoneticKey = "phonetic_name";
392115cd2caSopenharmony_ci        std::string givenNameKey = "given_name";
393115cd2caSopenharmony_ci        std::string givenNamePhoneticKey = "given_name_phonetic";
394115cd2caSopenharmony_ci        std::string middleNamePhoneticKey = "middle_name_phonetic";
395115cd2caSopenharmony_ci        std::string middleNameKey = "other_lan_last_name";
396115cd2caSopenharmony_ci        std::string namePrefixKey = "alpha_name";
397115cd2caSopenharmony_ci        std::string nameSuffixKey = "other_lan_first_name";
398115cd2caSopenharmony_ci        napi_value fullNameValue = GetResultValue(env, fullNameKey, resultSet);
399115cd2caSopenharmony_ci        napi_value familyNameValue = GetResultValue(env, familyNameKey, resultSet);
400115cd2caSopenharmony_ci        napi_value familyNamePhoneticValue = GetResultValue(env, familyNamePhoneticKey, resultSet);
401115cd2caSopenharmony_ci        napi_value givenNameValue = GetResultValue(env, givenNameKey, resultSet);
402115cd2caSopenharmony_ci        napi_value givenNamePhoneticValue = GetResultValue(env, givenNamePhoneticKey, resultSet);
403115cd2caSopenharmony_ci        napi_value middleNamePhoneticValue = GetResultValue(env, middleNamePhoneticKey, resultSet);
404115cd2caSopenharmony_ci        napi_value middleNameValue = GetResultValue(env, middleNameKey, resultSet);
405115cd2caSopenharmony_ci        napi_value namePrefixValue = GetResultValue(env, namePrefixKey, resultSet);
406115cd2caSopenharmony_ci        napi_value nameSuffixValue = GetResultValue(env, nameSuffixKey, resultSet);
407115cd2caSopenharmony_ci        napi_value napiFullNameKey = CreateNapiStringValue(env, "fullName");
408115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiFullNameKey, fullNameValue);
409115cd2caSopenharmony_ci        napi_value napiFamilyNameKey = CreateNapiStringValue(env, "familyName");
410115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiFamilyNameKey, familyNameValue);
411115cd2caSopenharmony_ci        napi_value napiFamilyNamePhoneticKey = CreateNapiStringValue(env, "familyNamePhonetic");
412115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiFamilyNamePhoneticKey, familyNamePhoneticValue);
413115cd2caSopenharmony_ci        napi_value napiGivenNameKey = CreateNapiStringValue(env, "givenName");
414115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiGivenNameKey, givenNameValue);
415115cd2caSopenharmony_ci        napi_value napiGivenNamePhoneticKey = CreateNapiStringValue(env, "givenNamePhonetic");
416115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiGivenNamePhoneticKey, givenNamePhoneticValue);
417115cd2caSopenharmony_ci        napi_value napiMiddleNamePhoneticKey = CreateNapiStringValue(env, "middleNamePhonetic");
418115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiMiddleNamePhoneticKey, middleNamePhoneticValue);
419115cd2caSopenharmony_ci        napi_value napiMiddleNameKey = CreateNapiStringValue(env, "middleName");
420115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiMiddleNameKey, middleNameValue);
421115cd2caSopenharmony_ci        napi_value napiNamePrefixKey = CreateNapiStringValue(env, "namePrefix");
422115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiNamePrefixKey, namePrefixValue);
423115cd2caSopenharmony_ci        napi_value napiNameSuffixKey = CreateNapiStringValue(env, "nameSuffix");
424115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiNameSuffixKey, nameSuffixValue);
425115cd2caSopenharmony_ci        napi_value napiElementKey;
426115cd2caSopenharmony_ci        napi_create_string_utf8(env, name.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
427115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, objectElement);
428115cd2caSopenharmony_ci    }
429115cd2caSopenharmony_ci}
430115cd2caSopenharmony_ci
431115cd2caSopenharmony_civoid ResultConvert::ConvertUri(
432115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
433115cd2caSopenharmony_ci{
434115cd2caSopenharmony_ci    if (typeId == PHOTO) {
435115cd2caSopenharmony_ci        const std::string portrait = "portrait";
436115cd2caSopenharmony_ci        napi_value objectElement = GetNapiElementObject(env, napiObject, portrait);
437115cd2caSopenharmony_ci        std::string uri = "detail_info";
438115cd2caSopenharmony_ci        napi_value uriValue = GetResultValue(env, uri, resultSet);
439115cd2caSopenharmony_ci        napi_value napiUri = CreateNapiStringValue(env, "uri");
440115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiUri, uriValue);
441115cd2caSopenharmony_ci        napi_value napiElementKey;
442115cd2caSopenharmony_ci        napi_create_string_utf8(env, portrait.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
443115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, objectElement);
444115cd2caSopenharmony_ci    }
445115cd2caSopenharmony_ci}
446115cd2caSopenharmony_ci
447115cd2caSopenharmony_civoid ResultConvert::ConvertEvent(
448115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
449115cd2caSopenharmony_ci{
450115cd2caSopenharmony_ci    if (typeId == CONTACT_EVENT) {
451115cd2caSopenharmony_ci        const std::string events = "events";
452115cd2caSopenharmony_ci        napi_value emailArray = GetNapiElementArray(env, napiObject, events);
453115cd2caSopenharmony_ci        uint32_t count = 0;
454115cd2caSopenharmony_ci        napi_get_array_length(env, emailArray, &count);
455115cd2caSopenharmony_ci        napi_value objectElement;
456115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
457115cd2caSopenharmony_ci        std::string detailInfoKey = "detail_info";
458115cd2caSopenharmony_ci        std::string customDataKey = "custom_data";
459115cd2caSopenharmony_ci        std::string extend7Key = "extend7";
460115cd2caSopenharmony_ci        napi_value detailInfoValue = GetResultValue(env, detailInfoKey, resultSet);
461115cd2caSopenharmony_ci        napi_value customValue = GetResultValue(env, customDataKey, resultSet);
462115cd2caSopenharmony_ci        napi_value extend7Value = GetResultValue(env, extend7Key, resultSet);
463115cd2caSopenharmony_ci        napi_value napiDetailInfoKey = CreateNapiStringValue(env, "eventDate");
464115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDetailInfoKey, detailInfoValue);
465115cd2caSopenharmony_ci        napi_value napiLabelNameKey = CreateNapiStringValue(env, "labelName");
466115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelNameKey, customValue);
467115cd2caSopenharmony_ci        napi_value napiLabelIdKey = CreateNapiStringValue(env, "labelId");
468115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelIdKey, extend7Value);
469115cd2caSopenharmony_ci        napi_set_element(env, emailArray, count, objectElement);
470115cd2caSopenharmony_ci        napi_value napiElementKey;
471115cd2caSopenharmony_ci        napi_create_string_utf8(env, events.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
472115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, emailArray);
473115cd2caSopenharmony_ci    }
474115cd2caSopenharmony_ci}
475115cd2caSopenharmony_ci
476115cd2caSopenharmony_civoid ResultConvert::ConvertGroup(
477115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
478115cd2caSopenharmony_ci{
479115cd2caSopenharmony_ci    if (typeId == GROUP_MEMBERSHIP) {
480115cd2caSopenharmony_ci        const std::string groups = "groups";
481115cd2caSopenharmony_ci        napi_value emailArray = GetNapiElementArray(env, napiObject, groups);
482115cd2caSopenharmony_ci        uint32_t count = 0;
483115cd2caSopenharmony_ci        napi_get_array_length(env, emailArray, &count);
484115cd2caSopenharmony_ci        napi_value objectElement;
485115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
486115cd2caSopenharmony_ci        std::string groupNameKey = "group_name";
487115cd2caSopenharmony_ci        napi_value groupNameValue = GetResultValue(env, groupNameKey, resultSet);
488115cd2caSopenharmony_ci        napi_value napiGroupNameKey = CreateNapiStringValue(env, "title");
489115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiGroupNameKey, groupNameValue);
490115cd2caSopenharmony_ci        std::string detailInfoKey = "detail_info";
491115cd2caSopenharmony_ci        napi_value detailInfoValue = GetResultValue(env, detailInfoKey, resultSet);
492115cd2caSopenharmony_ci        napi_value napiDetailInfoKey = CreateNapiStringValue(env, "groupId");
493115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDetailInfoKey, detailInfoValue);
494115cd2caSopenharmony_ci        napi_value napiElementKey;
495115cd2caSopenharmony_ci        napi_create_string_utf8(env, groups.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
496115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, emailArray);
497115cd2caSopenharmony_ci    }
498115cd2caSopenharmony_ci}
499115cd2caSopenharmony_ci
500115cd2caSopenharmony_civoid ResultConvert::ConvertImAddress(
501115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
502115cd2caSopenharmony_ci{
503115cd2caSopenharmony_ci    if (typeId == IM) {
504115cd2caSopenharmony_ci        const std::string imAddresses = "imAddresses";
505115cd2caSopenharmony_ci        napi_value imAddressArray = GetNapiElementArray(env, napiObject, imAddresses);
506115cd2caSopenharmony_ci        uint32_t count = 0;
507115cd2caSopenharmony_ci        napi_get_array_length(env, imAddressArray, &count);
508115cd2caSopenharmony_ci        napi_value objectElement;
509115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
510115cd2caSopenharmony_ci        std::string detailInfoKey = "detail_info";
511115cd2caSopenharmony_ci        std::string customDataKey = "custom_data";
512115cd2caSopenharmony_ci        std::string extend7Key = "extend7";
513115cd2caSopenharmony_ci        napi_value detailInfoValue = GetResultValue(env, detailInfoKey, resultSet);
514115cd2caSopenharmony_ci        napi_value customValue = GetResultValue(env, customDataKey, resultSet);
515115cd2caSopenharmony_ci        napi_value extend7Value = GetResultValue(env, extend7Key, resultSet);
516115cd2caSopenharmony_ci        napi_value napiDetailInfoKey = CreateNapiStringValue(env, "imAddress");
517115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDetailInfoKey, detailInfoValue);
518115cd2caSopenharmony_ci        napi_value napiLabelNameKey = CreateNapiStringValue(env, "labelName");
519115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelNameKey, customValue);
520115cd2caSopenharmony_ci        napi_value napiLabelIdKey = CreateNapiStringValue(env, "labelId");
521115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelIdKey, extend7Value);
522115cd2caSopenharmony_ci        napi_set_element(env, imAddressArray, count, objectElement);
523115cd2caSopenharmony_ci        napi_value napiElementKey;
524115cd2caSopenharmony_ci        napi_create_string_utf8(env, imAddresses.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
525115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, imAddressArray);
526115cd2caSopenharmony_ci    }
527115cd2caSopenharmony_ci}
528115cd2caSopenharmony_ci
529115cd2caSopenharmony_civoid ResultConvert::ConvertPhoneNumber(
530115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
531115cd2caSopenharmony_ci{
532115cd2caSopenharmony_ci    if (typeId == PHONE) {
533115cd2caSopenharmony_ci        const std::string phoneNumbers = "phoneNumbers";
534115cd2caSopenharmony_ci        napi_value phoneNumbersArray = GetNapiElementArray(env, napiObject, phoneNumbers);
535115cd2caSopenharmony_ci        uint32_t count = 0;
536115cd2caSopenharmony_ci        napi_get_array_length(env, phoneNumbersArray, &count);
537115cd2caSopenharmony_ci        napi_value objectElement;
538115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
539115cd2caSopenharmony_ci        std::string detailInfoKey = "detail_info";
540115cd2caSopenharmony_ci        std::string customDataKey = "custom_data";
541115cd2caSopenharmony_ci        std::string extend7Key = "extend7";
542115cd2caSopenharmony_ci        napi_value detailInfoValue = GetResultValue(env, detailInfoKey, resultSet);
543115cd2caSopenharmony_ci        napi_value customValue = GetResultValue(env, customDataKey, resultSet);
544115cd2caSopenharmony_ci        napi_value extend7Value = GetResultValue(env, extend7Key, resultSet);
545115cd2caSopenharmony_ci        napi_value napiDetailInfoKey = CreateNapiStringValue(env, "phoneNumber");
546115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDetailInfoKey, detailInfoValue);
547115cd2caSopenharmony_ci        napi_value napiLabelNameKey = CreateNapiStringValue(env, "labelName");
548115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelNameKey, customValue);
549115cd2caSopenharmony_ci        napi_value napiLabelIdKey = CreateNapiStringValue(env, "labelId");
550115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelIdKey, extend7Value);
551115cd2caSopenharmony_ci        napi_set_element(env, phoneNumbersArray, count, objectElement);
552115cd2caSopenharmony_ci        napi_value napiElementKey;
553115cd2caSopenharmony_ci        napi_create_string_utf8(env, phoneNumbers.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
554115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, phoneNumbersArray);
555115cd2caSopenharmony_ci    }
556115cd2caSopenharmony_ci}
557115cd2caSopenharmony_ci
558115cd2caSopenharmony_civoid ResultConvert::ConvertPostalAddress(
559115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
560115cd2caSopenharmony_ci{
561115cd2caSopenharmony_ci    if (typeId == POSTAL_ADDRESS) {
562115cd2caSopenharmony_ci        const std::string postalAddresses = "postalAddresses";
563115cd2caSopenharmony_ci        napi_value postalAddressArray = GetNapiElementArray(env, napiObject, postalAddresses);
564115cd2caSopenharmony_ci        uint32_t count = 0;
565115cd2caSopenharmony_ci        napi_get_array_length(env, postalAddressArray, &count);
566115cd2caSopenharmony_ci        napi_value objectElement;
567115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
568115cd2caSopenharmony_ci        std::string detailInfoKey = "detail_info";
569115cd2caSopenharmony_ci        std::string customDataKey = "custom_data";
570115cd2caSopenharmony_ci        std::string extend7Key = "extend7";
571115cd2caSopenharmony_ci        napi_value detailInfoValue = GetResultValue(env, detailInfoKey, resultSet);
572115cd2caSopenharmony_ci        napi_value customValue = GetResultValue(env, customDataKey, resultSet);
573115cd2caSopenharmony_ci        napi_value extend7Value = GetResultValue(env, extend7Key, resultSet);
574115cd2caSopenharmony_ci        std::string neighborhoodKey = "neighborhood";
575115cd2caSopenharmony_ci        std::string poboxKey = "pobox";
576115cd2caSopenharmony_ci        std::string postcodeKey = "postcode";
577115cd2caSopenharmony_ci        std::string regionKey = "region";
578115cd2caSopenharmony_ci        std::string streetKey = "street";
579115cd2caSopenharmony_ci        std::string cityKey = "city";
580115cd2caSopenharmony_ci        std::string countryKey = "country";
581115cd2caSopenharmony_ci        napi_value neighborhoodKeyValue = GetResultValue(env, neighborhoodKey, resultSet);
582115cd2caSopenharmony_ci        napi_value cityKeyValue = GetResultValue(env, cityKey, resultSet);
583115cd2caSopenharmony_ci        napi_value countryKeyValue = GetResultValue(env, countryKey, resultSet);
584115cd2caSopenharmony_ci        napi_value poboxKeyValue = GetResultValue(env, poboxKey, resultSet);
585115cd2caSopenharmony_ci        napi_value postcodeKeyValue = GetResultValue(env, postcodeKey, resultSet);
586115cd2caSopenharmony_ci        napi_value regionKeyValue = GetResultValue(env, regionKey, resultSet);
587115cd2caSopenharmony_ci        napi_value streetKeyValue = GetResultValue(env, streetKey, resultSet);
588115cd2caSopenharmony_ci        napi_value napiDetailInfoKey = CreateNapiStringValue(env, "postalAddress");
589115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDetailInfoKey, detailInfoValue);
590115cd2caSopenharmony_ci        napi_value napiLabelNameKey = CreateNapiStringValue(env, "labelName");
591115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelNameKey, customValue);
592115cd2caSopenharmony_ci        napi_value napiLabelIdKey = CreateNapiStringValue(env, "labelId");
593115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelIdKey, extend7Value);
594115cd2caSopenharmony_ci        napi_set_property(
595115cd2caSopenharmony_ci            env, objectElement, CreateNapiStringValue(env, neighborhoodKey.c_str()), neighborhoodKeyValue);
596115cd2caSopenharmony_ci        napi_set_property(env, objectElement, CreateNapiStringValue(env, cityKey.c_str()), cityKeyValue);
597115cd2caSopenharmony_ci        napi_set_property(env, objectElement, CreateNapiStringValue(env, countryKey.c_str()), countryKeyValue);
598115cd2caSopenharmony_ci        napi_set_property(env, objectElement, CreateNapiStringValue(env, poboxKey.c_str()), poboxKeyValue);
599115cd2caSopenharmony_ci        napi_set_property(env, objectElement, CreateNapiStringValue(env, postcodeKey.c_str()), postcodeKeyValue);
600115cd2caSopenharmony_ci        napi_set_property(env, objectElement, CreateNapiStringValue(env, regionKey.c_str()), regionKeyValue);
601115cd2caSopenharmony_ci        napi_set_property(env, objectElement, CreateNapiStringValue(env, streetKey.c_str()), streetKeyValue);
602115cd2caSopenharmony_ci        napi_set_element(env, postalAddressArray, count, objectElement);
603115cd2caSopenharmony_ci        napi_value napiElementKey = CreateNapiStringValue(env, postalAddresses);
604115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, postalAddressArray);
605115cd2caSopenharmony_ci    }
606115cd2caSopenharmony_ci}
607115cd2caSopenharmony_ci
608115cd2caSopenharmony_civoid ResultConvert::ConvertRelation(
609115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
610115cd2caSopenharmony_ci{
611115cd2caSopenharmony_ci    if (typeId == RELATION) {
612115cd2caSopenharmony_ci        const std::string relations = "relations";
613115cd2caSopenharmony_ci        napi_value relationsArray = GetNapiElementArray(env, napiObject, relations);
614115cd2caSopenharmony_ci        uint32_t count = 0;
615115cd2caSopenharmony_ci        napi_get_array_length(env, relationsArray, &count);
616115cd2caSopenharmony_ci        napi_value objectElement;
617115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
618115cd2caSopenharmony_ci        std::string detailInfoKey = "detail_info";
619115cd2caSopenharmony_ci        std::string customDataKey = "custom_data";
620115cd2caSopenharmony_ci        std::string extend7Key = "extend7";
621115cd2caSopenharmony_ci        napi_value detailInfoValue = GetResultValue(env, detailInfoKey, resultSet);
622115cd2caSopenharmony_ci        napi_value customValue = GetResultValue(env, customDataKey, resultSet);
623115cd2caSopenharmony_ci        napi_value extend7Value = GetResultValue(env, extend7Key, resultSet);
624115cd2caSopenharmony_ci        napi_value napiDetailInfoKey = CreateNapiStringValue(env, "sipAddress");
625115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDetailInfoKey, detailInfoValue);
626115cd2caSopenharmony_ci        napi_value napiLabelNameKey = CreateNapiStringValue(env, "labelName");
627115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelNameKey, customValue);
628115cd2caSopenharmony_ci        napi_value napiLabelIdKey = CreateNapiStringValue(env, "labelId");
629115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelIdKey, extend7Value);
630115cd2caSopenharmony_ci        napi_set_element(env, relationsArray, count, objectElement);
631115cd2caSopenharmony_ci        napi_value napiElementKey;
632115cd2caSopenharmony_ci        napi_create_string_utf8(env, relations.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
633115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, relationsArray);
634115cd2caSopenharmony_ci    }
635115cd2caSopenharmony_ci}
636115cd2caSopenharmony_ci
637115cd2caSopenharmony_civoid ResultConvert::ConvertSipAddress(
638115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
639115cd2caSopenharmony_ci{
640115cd2caSopenharmony_ci    if (typeId == SIP_ADDRESS) {
641115cd2caSopenharmony_ci        const std::string sipAddresses = "sipAddresses";
642115cd2caSopenharmony_ci        napi_value sipAddressArray = GetNapiElementArray(env, napiObject, sipAddresses);
643115cd2caSopenharmony_ci        uint32_t count = 0;
644115cd2caSopenharmony_ci        napi_get_array_length(env, sipAddressArray, &count);
645115cd2caSopenharmony_ci        napi_value objectElement;
646115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
647115cd2caSopenharmony_ci        std::string detailInfoKey = "detail_info";
648115cd2caSopenharmony_ci        std::string customDataKey = "custom_data";
649115cd2caSopenharmony_ci        std::string extend7Key = "extend7";
650115cd2caSopenharmony_ci        napi_value detailInfoValue = GetResultValue(env, detailInfoKey, resultSet);
651115cd2caSopenharmony_ci        napi_value customValue = GetResultValue(env, customDataKey, resultSet);
652115cd2caSopenharmony_ci        napi_value extend7Value = GetResultValue(env, extend7Key, resultSet);
653115cd2caSopenharmony_ci        napi_value napiDetailInfoKey = CreateNapiStringValue(env, "relationName");
654115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDetailInfoKey, detailInfoValue);
655115cd2caSopenharmony_ci        napi_value napiLabelNameKey = CreateNapiStringValue(env, "labelName");
656115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelNameKey, customValue);
657115cd2caSopenharmony_ci        napi_value napiLabelIdKey = CreateNapiStringValue(env, "labelId");
658115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelIdKey, extend7Value);
659115cd2caSopenharmony_ci        napi_set_element(env, sipAddressArray, count, objectElement);
660115cd2caSopenharmony_ci        napi_value napiElementKey;
661115cd2caSopenharmony_ci        napi_create_string_utf8(env, sipAddresses.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
662115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, sipAddressArray);
663115cd2caSopenharmony_ci    }
664115cd2caSopenharmony_ci}
665115cd2caSopenharmony_ci
666115cd2caSopenharmony_civoid ResultConvert::ConvertWebsite(
667115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
668115cd2caSopenharmony_ci{
669115cd2caSopenharmony_ci    if (typeId == WEBSITE) {
670115cd2caSopenharmony_ci        const std::string websites = "websites";
671115cd2caSopenharmony_ci        napi_value websitesArray = GetNapiElementArray(env, napiObject, websites);
672115cd2caSopenharmony_ci        uint32_t count = 0;
673115cd2caSopenharmony_ci        napi_get_array_length(env, websitesArray, &count);
674115cd2caSopenharmony_ci        napi_value objectElement;
675115cd2caSopenharmony_ci        napi_create_object(env, &objectElement);
676115cd2caSopenharmony_ci        std::string detailInfoKey = "detail_info";
677115cd2caSopenharmony_ci        std::string customDataKey = "custom_data";
678115cd2caSopenharmony_ci        std::string extend7Key = "extend7";
679115cd2caSopenharmony_ci        napi_value detailInfoValue = GetResultValue(env, detailInfoKey, resultSet);
680115cd2caSopenharmony_ci        napi_value customValue = GetResultValue(env, customDataKey, resultSet);
681115cd2caSopenharmony_ci        napi_value extend7Value = GetResultValue(env, extend7Key, resultSet);
682115cd2caSopenharmony_ci        napi_value napiDetailInfoKey = CreateNapiStringValue(env, "website");
683115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiDetailInfoKey, detailInfoValue);
684115cd2caSopenharmony_ci        napi_value napiLabelNameKey = CreateNapiStringValue(env, "labelName");
685115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelNameKey, customValue);
686115cd2caSopenharmony_ci        napi_value napiLabelIdKey = CreateNapiStringValue(env, "labelId");
687115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiLabelIdKey, extend7Value);
688115cd2caSopenharmony_ci        napi_set_element(env, websitesArray, count, objectElement);
689115cd2caSopenharmony_ci        napi_value napiElementKey;
690115cd2caSopenharmony_ci        napi_create_string_utf8(env, websites.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
691115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, websitesArray);
692115cd2caSopenharmony_ci    }
693115cd2caSopenharmony_ci}
694115cd2caSopenharmony_ci
695115cd2caSopenharmony_civoid ResultConvert::ConvertNickName(
696115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
697115cd2caSopenharmony_ci{
698115cd2caSopenharmony_ci    if (typeId == NICKNAME) {
699115cd2caSopenharmony_ci        const std::string nickName = "nickName";
700115cd2caSopenharmony_ci        napi_value objectElement = GetNapiElementObject(env, napiObject, nickName);
701115cd2caSopenharmony_ci        std::string name = "detail_info";
702115cd2caSopenharmony_ci        napi_value uriValue = GetResultValue(env, name, resultSet);
703115cd2caSopenharmony_ci        napi_value napiUri = CreateNapiStringValue(env, "nickName");
704115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiUri, uriValue);
705115cd2caSopenharmony_ci        napi_value napiElementKey;
706115cd2caSopenharmony_ci        napi_create_string_utf8(env, nickName.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
707115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, objectElement);
708115cd2caSopenharmony_ci    }
709115cd2caSopenharmony_ci}
710115cd2caSopenharmony_ci
711115cd2caSopenharmony_civoid ResultConvert::ConvertNote(
712115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
713115cd2caSopenharmony_ci{
714115cd2caSopenharmony_ci    if (typeId == NOTE) {
715115cd2caSopenharmony_ci        const std::string note = "note";
716115cd2caSopenharmony_ci        napi_value objectElement = GetNapiElementObject(env, napiObject, note);
717115cd2caSopenharmony_ci        std::string name = "detail_info";
718115cd2caSopenharmony_ci        napi_value noteValue = GetResultValue(env, name, resultSet);
719115cd2caSopenharmony_ci        napi_value noteKey = CreateNapiStringValue(env, "noteContent");
720115cd2caSopenharmony_ci        napi_set_property(env, objectElement, noteKey, noteValue);
721115cd2caSopenharmony_ci        napi_value napiElementKey;
722115cd2caSopenharmony_ci        napi_create_string_utf8(env, note.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
723115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, objectElement);
724115cd2caSopenharmony_ci    }
725115cd2caSopenharmony_ci}
726115cd2caSopenharmony_ci
727115cd2caSopenharmony_civoid ResultConvert::ConvertOrganization(
728115cd2caSopenharmony_ci    napi_env env, napi_value napiObject, int &typeId, std::shared_ptr<DataShare::DataShareResultSet> &resultSet)
729115cd2caSopenharmony_ci{
730115cd2caSopenharmony_ci    if (typeId == ORGANIZATION) {
731115cd2caSopenharmony_ci        const std::string organization = "organization";
732115cd2caSopenharmony_ci        napi_value objectElement = GetNapiElementObject(env, napiObject, organization);
733115cd2caSopenharmony_ci        std::string company = "detail_info";
734115cd2caSopenharmony_ci        std::string position = "position";
735115cd2caSopenharmony_ci        napi_value companyValue = GetResultValue(env, company, resultSet);
736115cd2caSopenharmony_ci        napi_value positionValue = GetResultValue(env, position, resultSet);
737115cd2caSopenharmony_ci        napi_value napiNameValueKey = CreateNapiStringValue(env, "name");
738115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiNameValueKey, companyValue);
739115cd2caSopenharmony_ci        napi_value napiTitleValueKey = CreateNapiStringValue(env, "title");
740115cd2caSopenharmony_ci        napi_set_property(env, objectElement, napiTitleValueKey, positionValue);
741115cd2caSopenharmony_ci        napi_value napiElementKey;
742115cd2caSopenharmony_ci        napi_create_string_utf8(env, organization.c_str(), NAPI_AUTO_LENGTH, &napiElementKey);
743115cd2caSopenharmony_ci        napi_set_property(env, napiObject, napiElementKey, objectElement);
744115cd2caSopenharmony_ci    }
745115cd2caSopenharmony_ci}
746115cd2caSopenharmony_ci} // namespace ContactsApi
747115cd2caSopenharmony_ci} // namespace OHOS