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