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