1115cd2caSopenharmony_ci/*
2115cd2caSopenharmony_ci * Copyright (c) 2021-2023 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#ifndef CONTACT_NAPI_COMMON_H
17115cd2caSopenharmony_ci#define CONTACT_NAPI_COMMON_H
18115cd2caSopenharmony_ci
19115cd2caSopenharmony_ci#include "datashare_predicates.h"
20115cd2caSopenharmony_ci#include "datashare_helper.h"
21115cd2caSopenharmony_ci#include "napi/native_api.h"
22115cd2caSopenharmony_ci#include "napi/native_common.h"
23115cd2caSopenharmony_ci#include "napi/native_node_api.h"
24115cd2caSopenharmony_ci#include "rdb_helper.h"
25115cd2caSopenharmony_ci#include "rdb_open_callback.h"
26115cd2caSopenharmony_ci#include "rdb_predicates.h"
27115cd2caSopenharmony_ci#include "rdb_store.h"
28115cd2caSopenharmony_ci
29115cd2caSopenharmony_cinamespace OHOS {
30115cd2caSopenharmony_cinamespace ContactsApi {
31115cd2caSopenharmony_ciconstexpr int MAX_PARAMS = 10;
32115cd2caSopenharmony_ciconstexpr int ERROR = -1;
33115cd2caSopenharmony_ciconstexpr int SUCCESS = 0;
34115cd2caSopenharmony_ciconstexpr int RESULT_DATA_SIZE = 2;
35115cd2caSopenharmony_ciconstexpr int RDB_PERMISSION_ERROR = -2;
36115cd2caSopenharmony_ciconstexpr int RDB_PARAMETER_ERROR = -3;
37115cd2caSopenharmony_ciconstexpr int VERIFICATION_PERMISSION_ERROR = -4;
38115cd2caSopenharmony_ciconstexpr int PERMISSION_ERROR = 201;
39115cd2caSopenharmony_ciconstexpr int PARAMETER_ERROR = 401;
40115cd2caSopenharmony_ci
41115cd2caSopenharmony_ciconstexpr int NAPI_GET_STRING_SIZE = 256;
42115cd2caSopenharmony_ciconstexpr int REQUEST_PARAMS_COUNT_ONE = 1;
43115cd2caSopenharmony_ci
44115cd2caSopenharmony_ci// NAPI callback type
45115cd2caSopenharmony_ciconstexpr int NAPI_CALL_TYPE_CALLBACK = 0;
46115cd2caSopenharmony_ciconstexpr int NAPI_CALL_TYPE_PROMISE = 1;
47115cd2caSopenharmony_ci
48115cd2caSopenharmony_ci// NAPI type
49115cd2caSopenharmony_ciconstexpr int TYPE_NAPI_ERROR = -1;
50115cd2caSopenharmony_ciconstexpr int TYPE_NAPI_NUMBER = 0;
51115cd2caSopenharmony_ciconstexpr int TYPE_NAPI_STRING = 1;
52115cd2caSopenharmony_ciconstexpr int TYPE_HOLDER = 2;
53115cd2caSopenharmony_ciconstexpr int TYPE_ATTR = 3;
54115cd2caSopenharmony_ciconstexpr int TYPE_CONTACT = 4;
55115cd2caSopenharmony_ci
56115cd2caSopenharmony_ci// Execute action code
57115cd2caSopenharmony_ciconstexpr int ADD_CONTACT = 1001;
58115cd2caSopenharmony_ciconstexpr int DELETE_CONTACT = 2001;
59115cd2caSopenharmony_ciconstexpr int UPDATE_CONTACT = 3001;
60115cd2caSopenharmony_ci
61115cd2caSopenharmony_ciconstexpr int QUERY_CONTACTS = 4001;
62115cd2caSopenharmony_ciconstexpr int QUERY_CONTACT = 4008;
63115cd2caSopenharmony_ci
64115cd2caSopenharmony_ciconstexpr int QUERY_CONTACTS_BY_EMAIL = 4002;
65115cd2caSopenharmony_ciconstexpr int QUERY_CONTACTS_BY_PHONE_NUMBER = 4003;
66115cd2caSopenharmony_ciconstexpr int QUERY_GROUPS = 4004;
67115cd2caSopenharmony_ciconstexpr int QUERY_HOLDERS = 4005;
68115cd2caSopenharmony_ciconstexpr int QUERY_KEY = 4006;
69115cd2caSopenharmony_ciconstexpr int QUERY_MY_CARD = 4007;
70115cd2caSopenharmony_ciconstexpr int IS_LOCAL_CONTACT = 5008;
71115cd2caSopenharmony_ciconstexpr int IS_MY_CARD = 5009;
72115cd2caSopenharmony_ci
73115cd2caSopenharmony_ciconstexpr int SELECT_CONTACT = 6001;
74115cd2caSopenharmony_ci
75115cd2caSopenharmony_ci// contactsData type
76115cd2caSopenharmony_ciconstexpr int EMAIL = 1;
77115cd2caSopenharmony_ciconstexpr int IM = 2;
78115cd2caSopenharmony_ciconstexpr int NICKNAME = 3;
79115cd2caSopenharmony_ciconstexpr int ORGANIZATION = 4;
80115cd2caSopenharmony_ciconstexpr int PHONE = 5;
81115cd2caSopenharmony_ciconstexpr int NAME = 6;
82115cd2caSopenharmony_ciconstexpr int POSTAL_ADDRESS = 7;
83115cd2caSopenharmony_ciconstexpr int PHOTO = 8;
84115cd2caSopenharmony_ciconstexpr int GROUP_MEMBERSHIP = 9;
85115cd2caSopenharmony_ciconstexpr int NOTE = 10;
86115cd2caSopenharmony_ciconstexpr int CONTACT_EVENT = 11;
87115cd2caSopenharmony_ciconstexpr int WEBSITE = 12;
88115cd2caSopenharmony_ciconstexpr int RELATION = 13;
89115cd2caSopenharmony_ciconstexpr int CONTACT_MISC = 14;
90115cd2caSopenharmony_ciconstexpr int HICALL_DEVICE = 15;
91115cd2caSopenharmony_ciconstexpr int CAMCARD = 16;
92115cd2caSopenharmony_ciconstexpr int SIP_ADDRESS = 17;
93115cd2caSopenharmony_ci
94115cd2caSopenharmony_ciconstexpr int ARGS_ZERO = 0;
95115cd2caSopenharmony_ciconstexpr int ARGS_ONE = 1;
96115cd2caSopenharmony_ciconstexpr int ARGS_TWO = 2;
97115cd2caSopenharmony_ciconstexpr int ARGS_THREE = 3;
98115cd2caSopenharmony_ciconstexpr int ARGS_FOUR = 4;
99115cd2caSopenharmony_ciconstexpr int ARGS_FIVE = 5;
100115cd2caSopenharmony_ciconst std::string CONTACTS_DATA_URI = "datashare:///com.ohos.contactsdataability";
101115cd2caSopenharmony_ci
102115cd2caSopenharmony_cistruct ExecuteHelper {
103115cd2caSopenharmony_ci    ExecuteHelper()
104115cd2caSopenharmony_ci        : work(nullptr), deferred(nullptr), sync(NAPI_CALL_TYPE_PROMISE),
105115cd2caSopenharmony_ci          argc(0), abilityContext(nullptr), actionCode(-1), callBack(nullptr),
106115cd2caSopenharmony_ci          childActionCode(0), promise(nullptr), resultData(-1), resultSet(nullptr) {}
107115cd2caSopenharmony_ci    napi_async_work work;
108115cd2caSopenharmony_ci    napi_deferred deferred;
109115cd2caSopenharmony_ci    int sync;
110115cd2caSopenharmony_ci    unsigned int argc;
111115cd2caSopenharmony_ci    napi_value argv[MAX_PARAMS] = {0};
112115cd2caSopenharmony_ci    napi_value abilityContext;
113115cd2caSopenharmony_ci    int actionCode;
114115cd2caSopenharmony_ci    napi_ref callBack;
115115cd2caSopenharmony_ci    int childActionCode;
116115cd2caSopenharmony_ci    napi_value promise;
117115cd2caSopenharmony_ci    // query
118115cd2caSopenharmony_ci    std::vector<std::string> columns;
119115cd2caSopenharmony_ci    // condition
120115cd2caSopenharmony_ci    DataShare::DataSharePredicates predicates;
121115cd2caSopenharmony_ci    // delete contact predicates for update contact
122115cd2caSopenharmony_ci    DataShare::DataSharePredicates deletePredicates;
123115cd2caSopenharmony_ci    // update
124115cd2caSopenharmony_ci    std::vector<DataShare::DataShareValuesBucket> valueUpdateContact;
125115cd2caSopenharmony_ci    // insert
126115cd2caSopenharmony_ci    std::vector<DataShare::DataShareValuesBucket> valueContact;
127115cd2caSopenharmony_ci    // insertContactData
128115cd2caSopenharmony_ci    std::vector<DataShare::DataShareValuesBucket> valueContactData;
129115cd2caSopenharmony_ci    // dataShareHelper
130115cd2caSopenharmony_ci    std::shared_ptr<DataShare::DataShareHelper> dataShareHelper;
131115cd2caSopenharmony_ci
132115cd2caSopenharmony_ci    // operation result
133115cd2caSopenharmony_ci    int resultData;
134115cd2caSopenharmony_ci    std::shared_ptr<DataShare::DataShareResultSet> resultSet;
135115cd2caSopenharmony_ci};
136115cd2caSopenharmony_ci} // namespace ContactsApi
137115cd2caSopenharmony_ci} // namespace OHOS
138115cd2caSopenharmony_ci#endif // CONTACT_NAPI_COMMON_H