1 /* 2 * Copyright (c) 2021-2023 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_API_H 17 #define CONTACT_API_H 18 19 #include "contacts_build.h" 20 #include "contacts_napi_object.h" 21 #include "napi_base_context.h" 22 23 namespace OHOS { 24 namespace ContactsApi { 25 void Init(napi_env env, napi_value exports); 26 napi_value DeclareContactConst(napi_env env, napi_value exports); 27 napi_value DeclareEmailConst(napi_env env, napi_value exports); 28 napi_value DeclareEventConst(napi_env env, napi_value exports); 29 napi_value DeclareImAddressConst(napi_env env, napi_value exports); 30 napi_value DeclarePhoneNumberConst(napi_env env, napi_value exports); 31 napi_value DeclarePostalAddressConst(napi_env env, napi_value exports); 32 napi_value DeclareRelationConst(napi_env env, napi_value exports); 33 napi_value DeclareSipAddressConst(napi_env env, napi_value exports); 34 napi_value DeclareAttributeConst(napi_env env, napi_value exports); 35 napi_value AddContact(napi_env env, napi_callback_info info); 36 napi_value DeleteContact(napi_env env, napi_callback_info info); 37 napi_value UpdateContact(napi_env env, napi_callback_info info); 38 napi_value QueryContact(napi_env env, napi_callback_info info); 39 napi_value QueryContacts(napi_env env, napi_callback_info info); 40 napi_value QueryContactsByEmail(napi_env env, napi_callback_info info); 41 napi_value QueryContactsByPhoneNumber(napi_env env, napi_callback_info info); 42 napi_value QueryGroups(napi_env env, napi_callback_info info); 43 napi_value QueryHolders(napi_env env, napi_callback_info info); 44 napi_value QueryKey(napi_env env, napi_callback_info info); 45 napi_value QueryMyCard(napi_env env, napi_callback_info info); 46 napi_value IsMyCard(napi_env env, napi_callback_info info); 47 napi_value IsLocalContact(napi_env env, napi_callback_info info); 48 void Execute(napi_env env, void *data); 49 void ExecuteAsync(napi_env env, void *data); 50 void ExecuteDone(napi_env env, napi_status status, void *data); 51 void ExecuteSyncDone(napi_env env, napi_status status, void *data); 52 void HandleExecuteErrorCode(napi_env env, ExecuteHelper *executeHelper, napi_value &errorCode); 53 void HandleExecuteResult(napi_env env, ExecuteHelper *executeHelper, napi_value &result); 54 int GetRawIdByResultSet(const std::shared_ptr<DataShare::DataShareResultSet> &resultSet); 55 napi_value CreateAsyncWork(napi_env env, ExecuteHelper *executeHelper); 56 void LocalExecute(napi_env env, ExecuteHelper *executeHelper); 57 void LocalExecuteSplit(napi_env env, ExecuteHelper *executeHelper); 58 void LocalExecuteAddContact(napi_env env, ExecuteHelper *executeHelper); 59 void LocalExecuteDeleteContact(napi_env env, ExecuteHelper *executeHelper); 60 void LocalExecuteQueryContact(napi_env env, ExecuteHelper *executeHelper); 61 void LocalExecuteQueryContactsOrKey(napi_env env, ExecuteHelper *executeHelper); 62 void LocalExecuteQueryContactsByData(napi_env env, ExecuteHelper *executeHelper); 63 void LocalExecuteQueryGroup(napi_env env, ExecuteHelper *executeHelper); 64 void LocalExecuteQueryHolders(napi_env env, ExecuteHelper *executeHelper); 65 void LocalExecuteQueryMyCard(napi_env env, ExecuteHelper *executeHelper); 66 void LocalExecuteUpdateContact(napi_env env, ExecuteHelper *executeHelper); 67 void LocalExecuteIsLocalContact(napi_env env, ExecuteHelper *executeHelper); 68 void LocalExecuteIsMyCard(napi_env env, ExecuteHelper *executeHelper); 69 napi_value Scheduling(napi_env env, napi_callback_info info, ExecuteHelper *executeHelper, int actionCode); 70 void VerificationParameterId(napi_env env, napi_value id, ExecuteHelper *executeHelper, napi_value hold); 71 void VerificationParameterHolderId(napi_env env, ExecuteHelper *executeHelper, napi_value hold); 72 void SetChildActionCodeAndConvertParams(napi_env env, ExecuteHelper *executeHelper); 73 DataShare::DataSharePredicates ConvertParamsSwitchSplit(int code, napi_env env, const napi_value &key, 74 const napi_value &hold, const napi_value &attr, ExecuteHelper *executeHelper); 75 bool GetDataShareHelper(napi_env env, napi_callback_info info, ExecuteHelper *executeHelper); 76 void HolderPredicates(const Holder &holder, DataShare::DataSharePredicates &predicates); 77 void HoldersStructure(std::map<std::string, std::string> &holders, Holder &holder); 78 void AttributesPredicates(bool isBegin, ContactAttributes &attrs, DataShare::DataSharePredicates &predicates); 79 void CheckAttributes(ContactAttributes &attrs); 80 DataShare::DataSharePredicates BuildQueryContactPredicates( 81 napi_env env, std::string key, napi_value hold, napi_value attr); 82 DataShare::DataSharePredicates BuildUpdateContactPredicates(napi_env env, napi_value contacts, napi_value attr); 83 DataShare::DataSharePredicates BuildQueryContactData(napi_env env, napi_value &contactsObject, 84 napi_value &attrObject, std::vector<DataShare::DataShareValuesBucket> &valueContactData); 85 std::vector<std::string> BuildUpdateContactColumns(); 86 DataShare::DataSharePredicates BuildUpdateContactConvertParams( 87 napi_env env, napi_value &contacts, napi_value &attr, ExecuteHelper &executeHelper); 88 DataShare::DataSharePredicates BuildQueryContactsPredicates(napi_env env, napi_value hold, napi_value attr); 89 DataShare::DataSharePredicates BuildQueryContactsByEmailPredicates( 90 napi_env env, std::string email, napi_value hold, napi_value attr); 91 DataShare::DataSharePredicates BuildQueryContactsByPhoneNumberPredicates( 92 napi_env env, std::string phoneNumber, napi_value hold, napi_value attr); 93 DataShare::DataSharePredicates BuildQueryGroupsPredicates(napi_env env, napi_value hold); 94 DataShare::DataSharePredicates BuildQueryKeyPredicates(napi_env env, int id, napi_value hold); 95 DataShare::DataSharePredicates BuildQueryMyCardPredicates(napi_env env, napi_value attr); 96 DataShare::DataSharePredicates BuildIsLocalContactPredicates(napi_env env, napi_value id); 97 DataShare::DataSharePredicates BuildIsMyCardPredicates(napi_env env, napi_value id); 98 DataShare::DataSharePredicates BuildDeleteContactDataPredicates(napi_env env, napi_value attr); 99 DataShare::DataSharePredicates BuildDeleteContactPredicates(napi_env env, ExecuteHelper &executeHelper); 100 void ObjectInit(napi_env env, napi_value object, napi_value &hold, napi_value &attr, napi_value &contacts); 101 void ObjectInitId(napi_env env, napi_value object, napi_value &id); 102 void ObjectInitString(napi_env env, napi_value object, napi_value &key); 103 int GetType(napi_env env, napi_value value); 104 } // namespace ContactsApi 105 } // namespace OHOS 106 107 #endif // CONTACT_API_H 108