1/* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#ifndef CONTACT_BUILD_H 17#define CONTACT_BUILD_H 18 19#include "ability.h" 20#include "ability_context.h" 21#include "context.h" 22#include "datashare_helper.h" 23#include "datashare_predicates.h" 24#include "napi/native_common.h" 25#include "napi/native_node_api.h" 26#include "rdb_errno.h" 27#include "rdb_helper.h" 28#include "rdb_open_callback.h" 29#include "rdb_predicates.h" 30#include "rdb_store.h" 31#include "result_set.h" 32 33#include "contacts_napi_common.h" 34#include "contacts_napi_object.h" 35#include "hilog_wrapper_api.h" 36 37namespace OHOS { 38namespace ContactsApi { 39class ContactsBuild { 40public: 41 ContactsBuild(); 42 ~ContactsBuild(); 43 void GetContactDataByObject(napi_env env, napi_value object, Contacts &contacts); 44 int GetInt(napi_env env, napi_value id); 45 void GetContactData(napi_env env, napi_value object, std::vector<DataShare::DataShareValuesBucket> &valueContact, 46 std::vector<DataShare::DataShareValuesBucket> &valueContactData); 47 std::string NapiGetValueString(napi_env env, napi_value value); 48 ContactAttributes GetContactAttributes(napi_env env, napi_value object); 49 Holder GetHolder(napi_env env, napi_value object); 50 void BuildValueContactDataByType( 51 Contacts &contacts, int typeId, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 52 53private: 54 void TypeSwitchSplit(int typeId, Contacts &contacts, 55 std::vector<DataShare::DataShareValuesBucket> &valueContactData); 56 napi_value GetArrayByKey(napi_env env, napi_value valueObject, std::string key); 57 napi_value GetObjectByKey(napi_env env, napi_value object, std::string key); 58 std::string GetStringValueByKey(napi_env env, napi_value valueObject, std::string key); 59 int GetIntValueByKey(napi_env env, napi_value valueObject, std::string key); 60 Name GetName(napi_env env, napi_value object); 61 Portrait GetUri(napi_env env, napi_value object); 62 std::vector<Email> GetEmails(napi_env env, napi_value object); 63 std::vector<Event> GetEvent(napi_env env, napi_value object); 64 std::vector<Group> GetGroup(napi_env env, napi_value object); 65 std::vector<ImAddress> GetImAddress(napi_env env, napi_value object); 66 std::vector<PhoneNumber> GetPhoneNumbers(napi_env env, napi_value object); 67 std::vector<PostalAddress> GetPostalAddress(napi_env env, napi_value object); 68 std::vector<Relation> GetRelation(napi_env env, napi_value object); 69 std::vector<SipAddress> GetSipAddress(napi_env env, napi_value object); 70 std::vector<Website> GetWebsite(napi_env env, napi_value object); 71 NickName GetNickName(napi_env env, napi_value object); 72 Note GetNote(napi_env env, napi_value object); 73 Organization GetOrganization(napi_env env, napi_value object); 74 // structure parameter and ValuesBucket 75 void BuildValueContact(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContact); 76 void BuildValueContactData(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 77 void GetValuesBucketEmail(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 78 void GetValuesBucketEvent(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 79 void GetValuesBucketGroup(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 80 void GetValuesBucketImAddress(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 81 void GetValuesBucketPortrait(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 82 void GetValuesBucketPhoneNumber(Contacts &contacts, 83 std::vector<DataShare::DataShareValuesBucket> &valueContactData); 84 void GetValuesBucketPostalAddress(Contacts &contacts, 85 std::vector<DataShare::DataShareValuesBucket> &valueContactData); 86 void GetValuesBucketRelation(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 87 void GetValuesBucketSipAddress(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 88 void GetValuesBucketWebsite(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 89 void GetValuesBucketName(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 90 void GetValuesBucketNickName(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 91 void GetValuesBucketNote(Contacts &contacts, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 92 void GetValuesBucketOrganization(Contacts &contacts, 93 std::vector<DataShare::DataShareValuesBucket> &valueContactData); 94}; 95} // namespace ContactsApi 96} // namespace OHOS 97#endif // CONTACT_BUILD_H 98