1 /*
2 * Copyright (c) 2021 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 #include "napi_data_ability_predicates.h"
17
18 #include "js_logger.h"
19 #include "js_utils.h"
20 #include "napi_async_proxy.h"
21
22 using namespace OHOS::NativeRdb;
23 using namespace OHOS::AppDataMgrJsKit;
24
25 namespace OHOS {
26 namespace DataAbilityJsKit {
27 static __thread napi_ref constructor_ = nullptr;
28
Init(napi_env env,napi_value exports)29 void DataAbilityPredicatesProxy::Init(napi_env env, napi_value exports)
30 {
31 LOG_INFO("Init DataAbilityPredicatesProxy");
32 napi_property_descriptor descriptors[] = {
33 DECLARE_NAPI_FUNCTION("equalTo", EqualTo),
34 DECLARE_NAPI_FUNCTION("notEqualTo", NotEqualTo),
35 DECLARE_NAPI_FUNCTION("beginWrap", BeginWrap),
36 DECLARE_NAPI_FUNCTION("endWrap", EndWrap),
37 DECLARE_NAPI_FUNCTION("or", Or),
38 DECLARE_NAPI_FUNCTION("and", And),
39 DECLARE_NAPI_FUNCTION("contains", Contains),
40 DECLARE_NAPI_FUNCTION("beginsWith", BeginsWith),
41 DECLARE_NAPI_FUNCTION("endsWith", EndsWith),
42 DECLARE_NAPI_FUNCTION("isNull", IsNull),
43 DECLARE_NAPI_FUNCTION("isNotNull", IsNotNull),
44 DECLARE_NAPI_FUNCTION("like", Like),
45 DECLARE_NAPI_FUNCTION("glob", Glob),
46 DECLARE_NAPI_FUNCTION("between", Between),
47 DECLARE_NAPI_FUNCTION("notBetween", NotBetween),
48 DECLARE_NAPI_FUNCTION("greaterThan", GreaterThan),
49 DECLARE_NAPI_FUNCTION("lessThan", LessThan),
50 DECLARE_NAPI_FUNCTION("greaterThanOrEqualTo", GreaterThanOrEqualTo),
51 DECLARE_NAPI_FUNCTION("lessThanOrEqualTo", LessThanOrEqualTo),
52 DECLARE_NAPI_FUNCTION("orderByAsc", OrderByAsc),
53 DECLARE_NAPI_FUNCTION("orderByDesc", OrderByDesc),
54 DECLARE_NAPI_FUNCTION("distinct", Distinct),
55 DECLARE_NAPI_FUNCTION("limitAs", Limit),
56 DECLARE_NAPI_FUNCTION("offsetAs", Offset),
57 DECLARE_NAPI_FUNCTION("groupBy", GroupBy),
58 DECLARE_NAPI_FUNCTION("indexedBy", IndexedBy),
59 DECLARE_NAPI_FUNCTION("in", In),
60 DECLARE_NAPI_FUNCTION("notIn", NotIn),
61 DECLARE_NAPI_FUNCTION("clear", Clear),
62 DECLARE_NAPI_FUNCTION("isRawSelection", IsRawSelection),
63 DECLARE_NAPI_GETTER_SETTER("whereClause", GetWhereClause, SetWhereClause),
64 DECLARE_NAPI_GETTER_SETTER("whereArgs", GetWhereArgs, SetWhereArgs),
65 DECLARE_NAPI_GETTER_SETTER("order", GetOrder, SetOrder),
66 DECLARE_NAPI_GETTER("limit", GetLimit),
67 DECLARE_NAPI_GETTER("offset", GetOffset),
68 DECLARE_NAPI_GETTER("isDistinct", IsDistinct),
69 DECLARE_NAPI_GETTER("group", GetGroup),
70 DECLARE_NAPI_GETTER("index", GetIndex),
71 DECLARE_NAPI_GETTER("isNeedAnd", IsNeedAnd),
72 DECLARE_NAPI_GETTER("isSorted", IsSorted),
73 };
74
75 napi_value cons;
76 NAPI_CALL_RETURN_VOID(env, napi_define_class(env, "DataAbilityPredicates", NAPI_AUTO_LENGTH, New, nullptr,
77 sizeof(descriptors) / sizeof(napi_property_descriptor), descriptors, &cons));
78
79 NAPI_CALL_RETURN_VOID(env, napi_create_reference(env, cons, 1, &constructor_));
80
81 NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, exports, "DataAbilityPredicates", cons));
82 }
83
New(napi_env env,napi_callback_info info)84 napi_value DataAbilityPredicatesProxy::New(napi_env env, napi_callback_info info)
85 {
86 napi_value new_target;
87 NAPI_CALL(env, napi_get_new_target(env, info, &new_target));
88 bool is_constructor = (new_target != nullptr);
89
90 napi_value thiz;
91 NAPI_CALL(env, napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr));
92
93 if (is_constructor) {
94 auto *proxy = new (std::nothrow) DataAbilityPredicatesProxy();
95 if (proxy == nullptr) {
96 LOG_ERROR("DataAbilityPredicatesProxy::New new failed, proxy is nullptr");
97 return nullptr;
98 }
99 napi_status status = napi_wrap(env, thiz, proxy, DataAbilityPredicatesProxy::Destructor, nullptr, nullptr);
100 if (status != napi_ok) {
101 LOG_ERROR("DataAbilityPredicatesProxy::New napi_wrap failed! napi_status:%{public}d!", status);
102 delete proxy;
103 return nullptr;
104 }
105 return thiz;
106 }
107
108 napi_value cons;
109 NAPI_CALL(env, napi_get_reference_value(env, constructor_, &cons));
110
111 napi_value output;
112 NAPI_CALL(env, napi_new_instance(env, cons, 0, nullptr, &output));
113
114 return output;
115 }
116
NewInstance(napi_env env,std::shared_ptr<NativeRdb::DataAbilityPredicates> value)117 napi_value DataAbilityPredicatesProxy::NewInstance(
118 napi_env env, std::shared_ptr<NativeRdb::DataAbilityPredicates> value)
119 {
120 napi_value cons;
121 napi_status status = napi_get_reference_value(env, constructor_, &cons);
122 if (status != napi_ok) {
123 LOG_ERROR("DataAbilityPredicatesProxy get constructor failed! napi_status:%{public}d!", status);
124 return nullptr;
125 }
126
127 napi_value instance = nullptr;
128 status = napi_new_instance(env, cons, 0, nullptr, &instance);
129 if (status != napi_ok) {
130 LOG_ERROR("DataAbilityPredicatesProxy napi_new_instance failed! napi_status:%{public}d!", status);
131 return nullptr;
132 }
133
134 DataAbilityPredicatesProxy *proxy = nullptr;
135 status = napi_unwrap(env, instance, reinterpret_cast<void **>(&proxy));
136 if (status != napi_ok) {
137 LOG_ERROR("DataAbilityPredicatesProxy native instance is nullptr! napi_status:%{public}d!", status);
138 return instance;
139 }
140 proxy->predicates_ = std::move(value);
141 return instance;
142 }
143
GetNativePredicates(const napi_env & env,const napi_value & arg)144 std::shared_ptr<NativeRdb::DataAbilityPredicates> DataAbilityPredicatesProxy::GetNativePredicates(
145 const napi_env &env, const napi_value &arg)
146 {
147 if (arg == nullptr) {
148 LOG_ERROR("DataAbilityPredicatesProxy arg is null.");
149 return nullptr;
150 }
151 DataAbilityPredicatesProxy *proxy = nullptr;
152 napi_unwrap(env, arg, reinterpret_cast<void **>(&proxy));
153 if (proxy == nullptr) {
154 LOG_ERROR("DataAbilityPredicatesProxy proxy is null.");
155 return nullptr;
156 }
157 return proxy->predicates_;
158 }
159
Destructor(napi_env env,void * nativeObject,void *)160 void DataAbilityPredicatesProxy::Destructor(napi_env env, void *nativeObject, void *)
161 {
162 DataAbilityPredicatesProxy *proxy = static_cast<DataAbilityPredicatesProxy *>(nativeObject);
163 delete proxy;
164 }
165
~DataAbilityPredicatesProxy()166 DataAbilityPredicatesProxy::~DataAbilityPredicatesProxy() {}
167
DataAbilityPredicatesProxy()168 DataAbilityPredicatesProxy::DataAbilityPredicatesProxy() : predicates_(new DataAbilityPredicates()) {}
169
GetNativePredicates(napi_env env,napi_callback_info info)170 std::shared_ptr<NativeRdb::DataAbilityPredicates> DataAbilityPredicatesProxy::GetNativePredicates(
171 napi_env env, napi_callback_info info)
172 {
173 DataAbilityPredicatesProxy *predicatesProxy = nullptr;
174 napi_value thiz;
175 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
176 napi_unwrap(env, thiz, reinterpret_cast<void **>(&predicatesProxy));
177 return predicatesProxy->predicates_;
178 }
179
EqualTo(napi_env env,napi_callback_info info)180 napi_value DataAbilityPredicatesProxy::EqualTo(napi_env env, napi_callback_info info)
181 {
182 napi_value thiz;
183 size_t argc = 2;
184 napi_value args[2] = { 0 };
185 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
186 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::EqualTo Invalid argvs!");
187 std::string field = JSUtils::Convert2String(env, args[0]);
188 std::string value = JSUtils::ConvertAny2String(env, args[1]);
189 GetNativePredicates(env, info)->EqualTo(field, value);
190 return thiz;
191 }
192
NotEqualTo(napi_env env,napi_callback_info info)193 napi_value DataAbilityPredicatesProxy::NotEqualTo(napi_env env, napi_callback_info info)
194 {
195 napi_value thiz;
196 size_t argc = 2;
197 napi_value args[2] = { 0 };
198 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
199 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::NotEqualTo Invalid argvs!");
200 std::string field = JSUtils::Convert2String(env, args[0]);
201 std::string value = JSUtils::ConvertAny2String(env, args[1]);
202 GetNativePredicates(env, info)->NotEqualTo(field, value);
203 return thiz;
204 }
205
BeginWrap(napi_env env,napi_callback_info info)206 napi_value DataAbilityPredicatesProxy::BeginWrap(napi_env env, napi_callback_info info)
207 {
208 napi_value thiz;
209 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
210 GetNativePredicates(env, info)->BeginWrap();
211 return thiz;
212 }
213
EndWrap(napi_env env,napi_callback_info info)214 napi_value DataAbilityPredicatesProxy::EndWrap(napi_env env, napi_callback_info info)
215 {
216 napi_value thiz;
217 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
218 GetNativePredicates(env, info)->EndWrap();
219 return thiz;
220 }
221
Or(napi_env env,napi_callback_info info)222 napi_value DataAbilityPredicatesProxy::Or(napi_env env, napi_callback_info info)
223 {
224 napi_value thiz;
225 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
226 GetNativePredicates(env, info)->Or();
227 return thiz;
228 }
229
And(napi_env env,napi_callback_info info)230 napi_value DataAbilityPredicatesProxy::And(napi_env env, napi_callback_info info)
231 {
232 napi_value thiz;
233 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
234 GetNativePredicates(env, info)->And();
235 return thiz;
236 }
237
Contains(napi_env env,napi_callback_info info)238 napi_value DataAbilityPredicatesProxy::Contains(napi_env env, napi_callback_info info)
239 {
240 napi_value thiz;
241 size_t argc = 2;
242 napi_value args[2] = { 0 };
243 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
244 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Contains Invalid argvs!");
245 std::string field = JSUtils::Convert2String(env, args[0]);
246 std::string value = JSUtils::ConvertAny2String(env, args[1]);
247
248 GetNativePredicates(env, info)->Contains(field, value);
249 return thiz;
250 }
251
BeginsWith(napi_env env,napi_callback_info info)252 napi_value DataAbilityPredicatesProxy::BeginsWith(napi_env env, napi_callback_info info)
253 {
254 napi_value thiz;
255 size_t argc = 2;
256 napi_value args[2] = { 0 };
257 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
258 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::BeginsWith Invalid argvs!");
259 std::string field = JSUtils::Convert2String(env, args[0]);
260 std::string value = JSUtils::ConvertAny2String(env, args[1]);
261 GetNativePredicates(env, info)->BeginsWith(field, value);
262 return thiz;
263 }
264
EndsWith(napi_env env,napi_callback_info info)265 napi_value DataAbilityPredicatesProxy::EndsWith(napi_env env, napi_callback_info info)
266 {
267 napi_value thiz;
268 size_t argc = 2;
269 napi_value args[2] = { 0 };
270 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
271 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::EndsWith Invalid argvs!");
272 std::string field = JSUtils::Convert2String(env, args[0]);
273 std::string value = JSUtils::ConvertAny2String(env, args[1]);
274 GetNativePredicates(env, info)->EndsWith(field, value);
275 return thiz;
276 }
277
IsNull(napi_env env,napi_callback_info info)278 napi_value DataAbilityPredicatesProxy::IsNull(napi_env env, napi_callback_info info)
279 {
280 napi_value thiz;
281 size_t argc = 1;
282 napi_value args[1] = { 0 };
283 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
284 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::IsNull Invalid argvs!");
285 std::string field = JSUtils::Convert2String(env, args[0]);
286 GetNativePredicates(env, info)->IsNull(field);
287 return thiz;
288 }
289
IsNotNull(napi_env env,napi_callback_info info)290 napi_value DataAbilityPredicatesProxy::IsNotNull(napi_env env, napi_callback_info info)
291 {
292 napi_value thiz;
293 size_t argc = 1;
294 napi_value args[1] = { 0 };
295 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
296 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::IsNotNull Invalid argvs!");
297 std::string field = JSUtils::Convert2String(env, args[0]);
298 GetNativePredicates(env, info)->IsNotNull(field);
299 return thiz;
300 }
301
Like(napi_env env,napi_callback_info info)302 napi_value DataAbilityPredicatesProxy::Like(napi_env env, napi_callback_info info)
303 {
304 napi_value thiz;
305 size_t argc = 2;
306 napi_value args[2] = { 0 };
307 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
308 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Like Invalid argvs!");
309 std::string field = JSUtils::Convert2String(env, args[0]);
310 std::string value = JSUtils::ConvertAny2String(env, args[1]);
311 GetNativePredicates(env, info)->Like(field, value);
312 return thiz;
313 }
314
Glob(napi_env env,napi_callback_info info)315 napi_value DataAbilityPredicatesProxy::Glob(napi_env env, napi_callback_info info)
316 {
317 napi_value thiz;
318 size_t argc = 2;
319 napi_value args[2] = { 0 };
320 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
321 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Glob Invalid argvs!");
322 std::string field = JSUtils::Convert2String(env, args[0]);
323 std::string value = JSUtils::ConvertAny2String(env, args[1]);
324 GetNativePredicates(env, info)->Glob(field, value);
325 return thiz;
326 }
327
Between(napi_env env,napi_callback_info info)328 napi_value DataAbilityPredicatesProxy::Between(napi_env env, napi_callback_info info)
329 {
330 napi_value thiz;
331 size_t argc = 3;
332 napi_value args[3] = { 0 };
333 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
334 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Between Invalid argvs!");
335 std::string field = JSUtils::Convert2String(env, args[0]);
336 std::string low = JSUtils::ConvertAny2String(env, args[1]);
337 std::string high = JSUtils::ConvertAny2String(env, args[2]);
338 GetNativePredicates(env, info)->Between(field, low, high);
339 return thiz;
340 }
341
NotBetween(napi_env env,napi_callback_info info)342 napi_value DataAbilityPredicatesProxy::NotBetween(napi_env env, napi_callback_info info)
343 {
344 napi_value thiz;
345 size_t argc = 3;
346 napi_value args[3] = { 0 };
347 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
348 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::NotBetween Invalid argvs!");
349 std::string field = JSUtils::Convert2String(env, args[0]);
350 std::string low = JSUtils::ConvertAny2String(env, args[1]);
351 std::string high = JSUtils::ConvertAny2String(env, args[2]);
352 GetNativePredicates(env, info)->NotBetween(field, low, high);
353 return thiz;
354 }
355
GreaterThan(napi_env env,napi_callback_info info)356 napi_value DataAbilityPredicatesProxy::GreaterThan(napi_env env, napi_callback_info info)
357 {
358 napi_value thiz;
359 size_t argc = 2;
360 napi_value args[2] = { 0 };
361 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
362 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::GreaterThan Invalid argvs!");
363 std::string field = JSUtils::Convert2String(env, args[0]);
364 std::string value = JSUtils::ConvertAny2String(env, args[1]);
365 GetNativePredicates(env, info)->GreaterThan(field, value);
366 return thiz;
367 }
368
LessThan(napi_env env,napi_callback_info info)369 napi_value DataAbilityPredicatesProxy::LessThan(napi_env env, napi_callback_info info)
370 {
371 napi_value thiz;
372 size_t argc = 2;
373 napi_value args[2] = { 0 };
374 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
375 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::LessThan Invalid argvs!");
376 std::string field = JSUtils::Convert2String(env, args[0]);
377 std::string value = JSUtils::ConvertAny2String(env, args[1]);
378 GetNativePredicates(env, info)->LessThan(field, value);
379 return thiz;
380 }
381
GreaterThanOrEqualTo(napi_env env,napi_callback_info info)382 napi_value DataAbilityPredicatesProxy::GreaterThanOrEqualTo(napi_env env, napi_callback_info info)
383 {
384 napi_value thiz;
385 size_t argc = 2;
386 napi_value args[2] = { 0 };
387 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
388 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::GreaterThanOrEqualTo Invalid argvs!");
389 std::string field = JSUtils::Convert2String(env, args[0]);
390 std::string value = JSUtils::ConvertAny2String(env, args[1]);
391 GetNativePredicates(env, info)->GreaterThanOrEqualTo(field, value);
392 return thiz;
393 }
394
LessThanOrEqualTo(napi_env env,napi_callback_info info)395 napi_value DataAbilityPredicatesProxy::LessThanOrEqualTo(napi_env env, napi_callback_info info)
396 {
397 napi_value thiz;
398 size_t argc = 2;
399 napi_value args[2] = { 0 };
400 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
401 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::LessThanOrEqualTo Invalid argvs!");
402 std::string field = JSUtils::Convert2String(env, args[0]);
403 std::string value = JSUtils::ConvertAny2String(env, args[1]);
404 GetNativePredicates(env, info)->LessThanOrEqualTo(field, value);
405 return thiz;
406 }
407
OrderByAsc(napi_env env,napi_callback_info info)408 napi_value DataAbilityPredicatesProxy::OrderByAsc(napi_env env, napi_callback_info info)
409 {
410 napi_value thiz;
411 size_t argc = 1;
412 napi_value args[1] = { 0 };
413 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
414 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::OrderByAsc Invalid argvs!");
415 std::string field = JSUtils::Convert2String(env, args[0]);
416 GetNativePredicates(env, info)->OrderByAsc(field);
417 return thiz;
418 }
419
OrderByDesc(napi_env env,napi_callback_info info)420 napi_value DataAbilityPredicatesProxy::OrderByDesc(napi_env env, napi_callback_info info)
421 {
422 napi_value thiz;
423 size_t argc = 1;
424 napi_value args[1] = { 0 };
425 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
426 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::OrderByDesc Invalid argvs!");
427 std::string field = JSUtils::Convert2String(env, args[0]);
428 GetNativePredicates(env, info)->OrderByDesc(field);
429 return thiz;
430 }
431
Distinct(napi_env env,napi_callback_info info)432 napi_value DataAbilityPredicatesProxy::Distinct(napi_env env, napi_callback_info info)
433 {
434 napi_value thiz;
435 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
436 GetNativePredicates(env, info)->Distinct();
437 return thiz;
438 }
439
Limit(napi_env env,napi_callback_info info)440 napi_value DataAbilityPredicatesProxy::Limit(napi_env env, napi_callback_info info)
441 {
442 napi_value thiz;
443 size_t argc = 1;
444 napi_value args[1] = { 0 };
445 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
446 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Limit Invalid argvs!");
447 int32_t limit = 0;
448 napi_get_value_int32(env, args[0], &limit);
449 GetNativePredicates(env, info)->Limit(limit);
450 return thiz;
451 }
452
Offset(napi_env env,napi_callback_info info)453 napi_value DataAbilityPredicatesProxy::Offset(napi_env env, napi_callback_info info)
454 {
455 napi_value thiz;
456 size_t argc = 1;
457 napi_value args[1] = { 0 };
458 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
459 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Offset Invalid argvs!");
460 int32_t offset = 0;
461 napi_get_value_int32(env, args[0], &offset);
462 GetNativePredicates(env, info)->Offset(offset);
463 return thiz;
464 }
465
GroupBy(napi_env env,napi_callback_info info)466 napi_value DataAbilityPredicatesProxy::GroupBy(napi_env env, napi_callback_info info)
467 {
468 napi_value thiz;
469 size_t argc = 1;
470 napi_value args[1] = { 0 };
471 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
472 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::GroupBy Invalid argvs!");
473 std::vector<std::string> fields = JSUtils::Convert2StrVector(env, args[0]);
474 GetNativePredicates(env, info)->GroupBy(fields);
475 return thiz;
476 }
477
IndexedBy(napi_env env,napi_callback_info info)478 napi_value DataAbilityPredicatesProxy::IndexedBy(napi_env env, napi_callback_info info)
479 {
480 napi_value thiz;
481 size_t argc = 1;
482 napi_value args[1] = { 0 };
483 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
484 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::IndexedBy Invalid argvs!");
485 std::string indexName = JSUtils::Convert2String(env, args[0]);
486 GetNativePredicates(env, info)->IndexedBy(indexName);
487 return thiz;
488 }
489
In(napi_env env,napi_callback_info info)490 napi_value DataAbilityPredicatesProxy::In(napi_env env, napi_callback_info info)
491 {
492 napi_value thiz;
493 size_t argc = 2;
494 napi_value args[2] = { 0 };
495 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
496 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::In Invalid argvs!");
497 std::string field = JSUtils::Convert2String(env, args[0]);
498 std::vector<std::string> values = JSUtils::Convert2StrVector(env, args[1]);
499 GetNativePredicates(env, info)->In(field, values);
500 return thiz;
501 }
502
NotIn(napi_env env,napi_callback_info info)503 napi_value DataAbilityPredicatesProxy::NotIn(napi_env env, napi_callback_info info)
504 {
505 napi_value thiz;
506 size_t argc = 2;
507 napi_value args[2] = { 0 };
508 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
509 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::NotIn Invalid argvs!");
510 std::string field = JSUtils::Convert2String(env, args[0]);
511 std::vector<std::string> values = JSUtils::Convert2StrVector(env, args[1]);
512 GetNativePredicates(env, info)->NotIn(field, values);
513 return thiz;
514 }
515
Clear(napi_env env,napi_callback_info info)516 napi_value DataAbilityPredicatesProxy::Clear(napi_env env, napi_callback_info info)
517 {
518 napi_value thiz = nullptr;
519 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
520 GetNativePredicates(env, info)->Clear();
521 return thiz;
522 }
523
IsRawSelection(napi_env env,napi_callback_info info)524 napi_value DataAbilityPredicatesProxy::IsRawSelection(napi_env env, napi_callback_info info)
525 {
526 napi_value thiz = nullptr;
527 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
528 bool out = GetNativePredicates(env, info)->IsRawSelection();
529 return JSUtils::Convert2JSValue(env, out);
530 }
531
GetPredicates() const532 std::shared_ptr<NativeRdb::DataAbilityPredicates> DataAbilityPredicatesProxy::GetPredicates() const
533 {
534 return this->predicates_;
535 }
536
GetWhereClause(napi_env env,napi_callback_info info)537 napi_value DataAbilityPredicatesProxy::GetWhereClause(napi_env env, napi_callback_info info)
538 {
539 auto ret = GetNativePredicates(env, info)->GetWhereClause();
540 return JSUtils::Convert2JSValue(env, ret);
541 }
542
SetWhereClause(napi_env env,napi_callback_info info)543 napi_value DataAbilityPredicatesProxy::SetWhereClause(napi_env env, napi_callback_info info)
544 {
545 napi_value thiz;
546 size_t argc = 1;
547 napi_value args[1] = { 0 };
548 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
549 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::SetWhereClause Invalid argvs!");
550
551 std::string whereClause = JSUtils::Convert2String(env, args[0]);
552 GetNativePredicates(env, info)->SetWhereClause(whereClause);
553
554 return thiz;
555 }
556
GetWhereArgs(napi_env env,napi_callback_info info)557 napi_value DataAbilityPredicatesProxy::GetWhereArgs(napi_env env, napi_callback_info info)
558 {
559 auto ret = GetNativePredicates(env, info)->GetWhereArgs();
560 return JSUtils::Convert2JSValue(env, ret);
561 }
562
SetWhereArgs(napi_env env,napi_callback_info info)563 napi_value DataAbilityPredicatesProxy::SetWhereArgs(napi_env env, napi_callback_info info)
564 {
565 napi_value thiz;
566 size_t argc = 1;
567 napi_value args[1] = { 0 };
568 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
569 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::SetWhereArgs Invalid argvs!");
570
571 std::vector<std::string> whereArgs = JSUtils::Convert2StrVector(env, args[0]);
572 GetNativePredicates(env, info)->SetWhereArgs(whereArgs);
573
574 return thiz;
575 }
576
GetOrder(napi_env env,napi_callback_info info)577 napi_value DataAbilityPredicatesProxy::GetOrder(napi_env env, napi_callback_info info)
578 {
579 auto ret = GetNativePredicates(env, info)->GetOrder();
580 return JSUtils::Convert2JSValue(env, ret);
581 }
582
SetOrder(napi_env env,napi_callback_info info)583 napi_value DataAbilityPredicatesProxy::SetOrder(napi_env env, napi_callback_info info)
584 {
585 napi_value thiz;
586 size_t argc = 1;
587 napi_value args[1] = { 0 };
588 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
589 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::SetOrder Invalid argvs!");
590
591 std::string order = JSUtils::Convert2String(env, args[0]);
592 GetNativePredicates(env, info)->SetOrder(order);
593
594 return thiz;
595 }
596
GetLimit(napi_env env,napi_callback_info info)597 napi_value DataAbilityPredicatesProxy::GetLimit(napi_env env, napi_callback_info info)
598 {
599 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->GetLimit());
600 }
601
GetOffset(napi_env env,napi_callback_info info)602 napi_value DataAbilityPredicatesProxy::GetOffset(napi_env env, napi_callback_info info)
603 {
604 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->GetOffset());
605 }
606
IsDistinct(napi_env env,napi_callback_info info)607 napi_value DataAbilityPredicatesProxy::IsDistinct(napi_env env, napi_callback_info info)
608 {
609 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->IsDistinct());
610 }
611
GetGroup(napi_env env,napi_callback_info info)612 napi_value DataAbilityPredicatesProxy::GetGroup(napi_env env, napi_callback_info info)
613 {
614 auto ret = GetNativePredicates(env, info)->GetGroup();
615 return JSUtils::Convert2JSValue(env, ret);
616 }
617
GetIndex(napi_env env,napi_callback_info info)618 napi_value DataAbilityPredicatesProxy::GetIndex(napi_env env, napi_callback_info info)
619 {
620 auto ret = GetNativePredicates(env, info)->GetIndex();
621 return JSUtils::Convert2JSValue(env, ret);
622 }
623
IsNeedAnd(napi_env env,napi_callback_info info)624 napi_value DataAbilityPredicatesProxy::IsNeedAnd(napi_env env, napi_callback_info info)
625 {
626 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->IsNeedAnd());
627 }
628
IsSorted(napi_env env,napi_callback_info info)629 napi_value DataAbilityPredicatesProxy::IsSorted(napi_env env, napi_callback_info info)
630 {
631 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->IsSorted());
632 }
633 } // namespace DataAbilityJsKit
634 } // namespace OHOS
635
636 EXTERN_C_START
NAPI_OHOS_Data_DataAbilityJsKit_DataAbilityPredicatesProxy_NewInstance(napi_env env,OHOS::NativeRdb::DataAbilityPredicates * predicates)637 __attribute__((visibility("default"))) napi_value NAPI_OHOS_Data_DataAbilityJsKit_DataAbilityPredicatesProxy_NewInstance(
638 napi_env env, OHOS::NativeRdb::DataAbilityPredicates *predicates)
639 {
640 return OHOS::DataAbilityJsKit::DataAbilityPredicatesProxy::NewInstance(
641 env, std::shared_ptr<OHOS::NativeRdb::DataAbilityPredicates>(predicates));
642 }
643
644 __attribute__((visibility("default"))) OHOS::NativeRdb::DataAbilityPredicates *
NAPI_OHOS_Data_DataAbilityJsKit_DataAbilityPredicatesProxy_GetNativeObject(const napi_env & env,const napi_value & arg)645 NAPI_OHOS_Data_DataAbilityJsKit_DataAbilityPredicatesProxy_GetNativeObject(const napi_env &env, const napi_value &arg)
646 {
647 auto predicates = OHOS::DataAbilityJsKit::DataAbilityPredicatesProxy::GetNativePredicates(env, arg);
648 return predicates.get();
649 }
650 EXTERN_C_END