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 return proxy->predicates_;
154 }
155
Destructor(napi_env env,void * nativeObject,void *)156 void DataAbilityPredicatesProxy::Destructor(napi_env env, void *nativeObject, void *)
157 {
158 DataAbilityPredicatesProxy *proxy = static_cast<DataAbilityPredicatesProxy *>(nativeObject);
159 delete proxy;
160 }
161
~DataAbilityPredicatesProxy()162 DataAbilityPredicatesProxy::~DataAbilityPredicatesProxy() {}
163
DataAbilityPredicatesProxy()164 DataAbilityPredicatesProxy::DataAbilityPredicatesProxy() : predicates_(new DataAbilityPredicates()) {}
165
GetNativePredicates(napi_env env,napi_callback_info info)166 std::shared_ptr<NativeRdb::DataAbilityPredicates> DataAbilityPredicatesProxy::GetNativePredicates(
167 napi_env env, napi_callback_info info)
168 {
169 DataAbilityPredicatesProxy *predicatesProxy = nullptr;
170 napi_value thiz;
171 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
172 napi_unwrap(env, thiz, reinterpret_cast<void **>(&predicatesProxy));
173 return predicatesProxy->predicates_;
174 }
175
EqualTo(napi_env env,napi_callback_info info)176 napi_value DataAbilityPredicatesProxy::EqualTo(napi_env env, napi_callback_info info)
177 {
178 napi_value thiz;
179 size_t argc = 2;
180 napi_value args[2] = { 0 };
181 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
182 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::EqualTo Invalid argvs!");
183 std::string field = JSUtils::Convert2String(env, args[0]);
184 std::string value = JSUtils::ConvertAny2String(env, args[1]);
185 GetNativePredicates(env, info)->EqualTo(field, value);
186 return thiz;
187 }
188
NotEqualTo(napi_env env,napi_callback_info info)189 napi_value DataAbilityPredicatesProxy::NotEqualTo(napi_env env, napi_callback_info info)
190 {
191 napi_value thiz;
192 size_t argc = 2;
193 napi_value args[2] = { 0 };
194 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
195 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::NotEqualTo Invalid argvs!");
196 std::string field = JSUtils::Convert2String(env, args[0]);
197 std::string value = JSUtils::ConvertAny2String(env, args[1]);
198 GetNativePredicates(env, info)->NotEqualTo(field, value);
199 return thiz;
200 }
201
BeginWrap(napi_env env,napi_callback_info info)202 napi_value DataAbilityPredicatesProxy::BeginWrap(napi_env env, napi_callback_info info)
203 {
204 napi_value thiz;
205 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
206 GetNativePredicates(env, info)->BeginWrap();
207 return thiz;
208 }
209
EndWrap(napi_env env,napi_callback_info info)210 napi_value DataAbilityPredicatesProxy::EndWrap(napi_env env, napi_callback_info info)
211 {
212 napi_value thiz;
213 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
214 GetNativePredicates(env, info)->EndWrap();
215 return thiz;
216 }
217
Or(napi_env env,napi_callback_info info)218 napi_value DataAbilityPredicatesProxy::Or(napi_env env, napi_callback_info info)
219 {
220 napi_value thiz;
221 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
222 GetNativePredicates(env, info)->Or();
223 return thiz;
224 }
225
And(napi_env env,napi_callback_info info)226 napi_value DataAbilityPredicatesProxy::And(napi_env env, napi_callback_info info)
227 {
228 napi_value thiz;
229 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
230 GetNativePredicates(env, info)->And();
231 return thiz;
232 }
233
Contains(napi_env env,napi_callback_info info)234 napi_value DataAbilityPredicatesProxy::Contains(napi_env env, napi_callback_info info)
235 {
236 napi_value thiz;
237 size_t argc = 2;
238 napi_value args[2] = { 0 };
239 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
240 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Contains Invalid argvs!");
241 std::string field = JSUtils::Convert2String(env, args[0]);
242 std::string value = JSUtils::ConvertAny2String(env, args[1]);
243
244 GetNativePredicates(env, info)->Contains(field, value);
245 return thiz;
246 }
247
BeginsWith(napi_env env,napi_callback_info info)248 napi_value DataAbilityPredicatesProxy::BeginsWith(napi_env env, napi_callback_info info)
249 {
250 napi_value thiz;
251 size_t argc = 2;
252 napi_value args[2] = { 0 };
253 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
254 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::BeginsWith Invalid argvs!");
255 std::string field = JSUtils::Convert2String(env, args[0]);
256 std::string value = JSUtils::ConvertAny2String(env, args[1]);
257 GetNativePredicates(env, info)->BeginsWith(field, value);
258 return thiz;
259 }
260
EndsWith(napi_env env,napi_callback_info info)261 napi_value DataAbilityPredicatesProxy::EndsWith(napi_env env, napi_callback_info info)
262 {
263 napi_value thiz;
264 size_t argc = 2;
265 napi_value args[2] = { 0 };
266 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
267 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::EndsWith Invalid argvs!");
268 std::string field = JSUtils::Convert2String(env, args[0]);
269 std::string value = JSUtils::ConvertAny2String(env, args[1]);
270 GetNativePredicates(env, info)->EndsWith(field, value);
271 return thiz;
272 }
273
IsNull(napi_env env,napi_callback_info info)274 napi_value DataAbilityPredicatesProxy::IsNull(napi_env env, napi_callback_info info)
275 {
276 napi_value thiz;
277 size_t argc = 1;
278 napi_value args[1] = { 0 };
279 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
280 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::IsNull Invalid argvs!");
281 std::string field = JSUtils::Convert2String(env, args[0]);
282 GetNativePredicates(env, info)->IsNull(field);
283 return thiz;
284 }
285
IsNotNull(napi_env env,napi_callback_info info)286 napi_value DataAbilityPredicatesProxy::IsNotNull(napi_env env, napi_callback_info info)
287 {
288 napi_value thiz;
289 size_t argc = 1;
290 napi_value args[1] = { 0 };
291 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
292 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::IsNotNull Invalid argvs!");
293 std::string field = JSUtils::Convert2String(env, args[0]);
294 GetNativePredicates(env, info)->IsNotNull(field);
295 return thiz;
296 }
297
Like(napi_env env,napi_callback_info info)298 napi_value DataAbilityPredicatesProxy::Like(napi_env env, napi_callback_info info)
299 {
300 napi_value thiz;
301 size_t argc = 2;
302 napi_value args[2] = { 0 };
303 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
304 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Like Invalid argvs!");
305 std::string field = JSUtils::Convert2String(env, args[0]);
306 std::string value = JSUtils::ConvertAny2String(env, args[1]);
307 GetNativePredicates(env, info)->Like(field, value);
308 return thiz;
309 }
310
Glob(napi_env env,napi_callback_info info)311 napi_value DataAbilityPredicatesProxy::Glob(napi_env env, napi_callback_info info)
312 {
313 napi_value thiz;
314 size_t argc = 2;
315 napi_value args[2] = { 0 };
316 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
317 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Glob Invalid argvs!");
318 std::string field = JSUtils::Convert2String(env, args[0]);
319 std::string value = JSUtils::ConvertAny2String(env, args[1]);
320 GetNativePredicates(env, info)->Glob(field, value);
321 return thiz;
322 }
323
Between(napi_env env,napi_callback_info info)324 napi_value DataAbilityPredicatesProxy::Between(napi_env env, napi_callback_info info)
325 {
326 napi_value thiz;
327 size_t argc = 3;
328 napi_value args[3] = { 0 };
329 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
330 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Between Invalid argvs!");
331 std::string field = JSUtils::Convert2String(env, args[0]);
332 std::string low = JSUtils::ConvertAny2String(env, args[1]);
333 std::string high = JSUtils::ConvertAny2String(env, args[2]);
334 GetNativePredicates(env, info)->Between(field, low, high);
335 return thiz;
336 }
337
NotBetween(napi_env env,napi_callback_info info)338 napi_value DataAbilityPredicatesProxy::NotBetween(napi_env env, napi_callback_info info)
339 {
340 napi_value thiz;
341 size_t argc = 3;
342 napi_value args[3] = { 0 };
343 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
344 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::NotBetween Invalid argvs!");
345 std::string field = JSUtils::Convert2String(env, args[0]);
346 std::string low = JSUtils::ConvertAny2String(env, args[1]);
347 std::string high = JSUtils::ConvertAny2String(env, args[2]);
348 GetNativePredicates(env, info)->NotBetween(field, low, high);
349 return thiz;
350 }
351
GreaterThan(napi_env env,napi_callback_info info)352 napi_value DataAbilityPredicatesProxy::GreaterThan(napi_env env, napi_callback_info info)
353 {
354 napi_value thiz;
355 size_t argc = 2;
356 napi_value args[2] = { 0 };
357 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
358 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::GreaterThan Invalid argvs!");
359 std::string field = JSUtils::Convert2String(env, args[0]);
360 std::string value = JSUtils::ConvertAny2String(env, args[1]);
361 GetNativePredicates(env, info)->GreaterThan(field, value);
362 return thiz;
363 }
364
LessThan(napi_env env,napi_callback_info info)365 napi_value DataAbilityPredicatesProxy::LessThan(napi_env env, napi_callback_info info)
366 {
367 napi_value thiz;
368 size_t argc = 2;
369 napi_value args[2] = { 0 };
370 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
371 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::LessThan Invalid argvs!");
372 std::string field = JSUtils::Convert2String(env, args[0]);
373 std::string value = JSUtils::ConvertAny2String(env, args[1]);
374 GetNativePredicates(env, info)->LessThan(field, value);
375 return thiz;
376 }
377
GreaterThanOrEqualTo(napi_env env,napi_callback_info info)378 napi_value DataAbilityPredicatesProxy::GreaterThanOrEqualTo(napi_env env, napi_callback_info info)
379 {
380 napi_value thiz;
381 size_t argc = 2;
382 napi_value args[2] = { 0 };
383 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
384 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::GreaterThanOrEqualTo Invalid argvs!");
385 std::string field = JSUtils::Convert2String(env, args[0]);
386 std::string value = JSUtils::ConvertAny2String(env, args[1]);
387 GetNativePredicates(env, info)->GreaterThanOrEqualTo(field, value);
388 return thiz;
389 }
390
LessThanOrEqualTo(napi_env env,napi_callback_info info)391 napi_value DataAbilityPredicatesProxy::LessThanOrEqualTo(napi_env env, napi_callback_info info)
392 {
393 napi_value thiz;
394 size_t argc = 2;
395 napi_value args[2] = { 0 };
396 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
397 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::LessThanOrEqualTo Invalid argvs!");
398 std::string field = JSUtils::Convert2String(env, args[0]);
399 std::string value = JSUtils::ConvertAny2String(env, args[1]);
400 GetNativePredicates(env, info)->LessThanOrEqualTo(field, value);
401 return thiz;
402 }
403
OrderByAsc(napi_env env,napi_callback_info info)404 napi_value DataAbilityPredicatesProxy::OrderByAsc(napi_env env, napi_callback_info info)
405 {
406 napi_value thiz;
407 size_t argc = 1;
408 napi_value args[1] = { 0 };
409 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
410 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::OrderByAsc Invalid argvs!");
411 std::string field = JSUtils::Convert2String(env, args[0]);
412 GetNativePredicates(env, info)->OrderByAsc(field);
413 return thiz;
414 }
415
OrderByDesc(napi_env env,napi_callback_info info)416 napi_value DataAbilityPredicatesProxy::OrderByDesc(napi_env env, napi_callback_info info)
417 {
418 napi_value thiz;
419 size_t argc = 1;
420 napi_value args[1] = { 0 };
421 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
422 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::OrderByDesc Invalid argvs!");
423 std::string field = JSUtils::Convert2String(env, args[0]);
424 GetNativePredicates(env, info)->OrderByDesc(field);
425 return thiz;
426 }
427
Distinct(napi_env env,napi_callback_info info)428 napi_value DataAbilityPredicatesProxy::Distinct(napi_env env, napi_callback_info info)
429 {
430 napi_value thiz;
431 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
432 GetNativePredicates(env, info)->Distinct();
433 return thiz;
434 }
435
Limit(napi_env env,napi_callback_info info)436 napi_value DataAbilityPredicatesProxy::Limit(napi_env env, napi_callback_info info)
437 {
438 napi_value thiz;
439 size_t argc = 1;
440 napi_value args[1] = { 0 };
441 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
442 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Limit Invalid argvs!");
443 int32_t limit = 0;
444 napi_get_value_int32(env, args[0], &limit);
445 GetNativePredicates(env, info)->Limit(limit);
446 return thiz;
447 }
448
Offset(napi_env env,napi_callback_info info)449 napi_value DataAbilityPredicatesProxy::Offset(napi_env env, napi_callback_info info)
450 {
451 napi_value thiz;
452 size_t argc = 1;
453 napi_value args[1] = { 0 };
454 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
455 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::Offset Invalid argvs!");
456 int32_t offset = 0;
457 napi_get_value_int32(env, args[0], &offset);
458 GetNativePredicates(env, info)->Offset(offset);
459 return thiz;
460 }
461
GroupBy(napi_env env,napi_callback_info info)462 napi_value DataAbilityPredicatesProxy::GroupBy(napi_env env, napi_callback_info info)
463 {
464 napi_value thiz;
465 size_t argc = 1;
466 napi_value args[1] = { 0 };
467 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
468 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::GroupBy Invalid argvs!");
469 std::vector<std::string> fields = JSUtils::Convert2StrVector(env, args[0]);
470 GetNativePredicates(env, info)->GroupBy(fields);
471 return thiz;
472 }
473
IndexedBy(napi_env env,napi_callback_info info)474 napi_value DataAbilityPredicatesProxy::IndexedBy(napi_env env, napi_callback_info info)
475 {
476 napi_value thiz;
477 size_t argc = 1;
478 napi_value args[1] = { 0 };
479 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
480 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::IndexedBy Invalid argvs!");
481 std::string indexName = JSUtils::Convert2String(env, args[0]);
482 GetNativePredicates(env, info)->IndexedBy(indexName);
483 return thiz;
484 }
485
In(napi_env env,napi_callback_info info)486 napi_value DataAbilityPredicatesProxy::In(napi_env env, napi_callback_info info)
487 {
488 napi_value thiz;
489 size_t argc = 2;
490 napi_value args[2] = { 0 };
491 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
492 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::In Invalid argvs!");
493 std::string field = JSUtils::Convert2String(env, args[0]);
494 std::vector<std::string> values = JSUtils::Convert2StrVector(env, args[1]);
495 GetNativePredicates(env, info)->In(field, values);
496 return thiz;
497 }
498
NotIn(napi_env env,napi_callback_info info)499 napi_value DataAbilityPredicatesProxy::NotIn(napi_env env, napi_callback_info info)
500 {
501 napi_value thiz;
502 size_t argc = 2;
503 napi_value args[2] = { 0 };
504 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
505 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::NotIn Invalid argvs!");
506 std::string field = JSUtils::Convert2String(env, args[0]);
507 std::vector<std::string> values = JSUtils::Convert2StrVector(env, args[1]);
508 GetNativePredicates(env, info)->NotIn(field, values);
509 return thiz;
510 }
511
Clear(napi_env env,napi_callback_info info)512 napi_value DataAbilityPredicatesProxy::Clear(napi_env env, napi_callback_info info)
513 {
514 napi_value thiz = nullptr;
515 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
516 GetNativePredicates(env, info)->Clear();
517 return thiz;
518 }
519
IsRawSelection(napi_env env,napi_callback_info info)520 napi_value DataAbilityPredicatesProxy::IsRawSelection(napi_env env, napi_callback_info info)
521 {
522 napi_value thiz = nullptr;
523 napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
524 bool out = GetNativePredicates(env, info)->IsRawSelection();
525 return JSUtils::Convert2JSValue(env, out);
526 }
527
GetPredicates() const528 std::shared_ptr<NativeRdb::DataAbilityPredicates> DataAbilityPredicatesProxy::GetPredicates() const
529 {
530 return this->predicates_;
531 }
532
GetWhereClause(napi_env env,napi_callback_info info)533 napi_value DataAbilityPredicatesProxy::GetWhereClause(napi_env env, napi_callback_info info)
534 {
535 auto ret = GetNativePredicates(env, info)->GetWhereClause();
536 return JSUtils::Convert2JSValue(env, ret);
537 }
538
SetWhereClause(napi_env env,napi_callback_info info)539 napi_value DataAbilityPredicatesProxy::SetWhereClause(napi_env env, napi_callback_info info)
540 {
541 napi_value thiz;
542 size_t argc = 1;
543 napi_value args[1] = { 0 };
544 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
545 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::SetWhereClause Invalid argvs!");
546
547 std::string whereClause = JSUtils::Convert2String(env, args[0]);
548 GetNativePredicates(env, info)->SetWhereClause(whereClause);
549
550 return thiz;
551 }
552
GetWhereArgs(napi_env env,napi_callback_info info)553 napi_value DataAbilityPredicatesProxy::GetWhereArgs(napi_env env, napi_callback_info info)
554 {
555 auto ret = GetNativePredicates(env, info)->GetWhereArgs();
556 return JSUtils::Convert2JSValue(env, ret);
557 }
558
SetWhereArgs(napi_env env,napi_callback_info info)559 napi_value DataAbilityPredicatesProxy::SetWhereArgs(napi_env env, napi_callback_info info)
560 {
561 napi_value thiz;
562 size_t argc = 1;
563 napi_value args[1] = { 0 };
564 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
565 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::SetWhereArgs Invalid argvs!");
566
567 std::vector<std::string> whereArgs = JSUtils::Convert2StrVector(env, args[0]);
568 GetNativePredicates(env, info)->SetWhereArgs(whereArgs);
569
570 return thiz;
571 }
572
GetOrder(napi_env env,napi_callback_info info)573 napi_value DataAbilityPredicatesProxy::GetOrder(napi_env env, napi_callback_info info)
574 {
575 auto ret = GetNativePredicates(env, info)->GetOrder();
576 return JSUtils::Convert2JSValue(env, ret);
577 }
578
SetOrder(napi_env env,napi_callback_info info)579 napi_value DataAbilityPredicatesProxy::SetOrder(napi_env env, napi_callback_info info)
580 {
581 napi_value thiz;
582 size_t argc = 1;
583 napi_value args[1] = { 0 };
584 napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
585 NAPI_ASSERT(env, argc > 0, "DataAbilityPredicatesProxy::SetOrder Invalid argvs!");
586
587 std::string order = JSUtils::Convert2String(env, args[0]);
588 GetNativePredicates(env, info)->SetOrder(order);
589
590 return thiz;
591 }
592
GetLimit(napi_env env,napi_callback_info info)593 napi_value DataAbilityPredicatesProxy::GetLimit(napi_env env, napi_callback_info info)
594 {
595 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->GetLimit());
596 }
597
GetOffset(napi_env env,napi_callback_info info)598 napi_value DataAbilityPredicatesProxy::GetOffset(napi_env env, napi_callback_info info)
599 {
600 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->GetOffset());
601 }
602
IsDistinct(napi_env env,napi_callback_info info)603 napi_value DataAbilityPredicatesProxy::IsDistinct(napi_env env, napi_callback_info info)
604 {
605 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->IsDistinct());
606 }
607
GetGroup(napi_env env,napi_callback_info info)608 napi_value DataAbilityPredicatesProxy::GetGroup(napi_env env, napi_callback_info info)
609 {
610 auto ret = GetNativePredicates(env, info)->GetGroup();
611 return JSUtils::Convert2JSValue(env, ret);
612 }
613
GetIndex(napi_env env,napi_callback_info info)614 napi_value DataAbilityPredicatesProxy::GetIndex(napi_env env, napi_callback_info info)
615 {
616 auto ret = GetNativePredicates(env, info)->GetIndex();
617 return JSUtils::Convert2JSValue(env, ret);
618 }
619
IsNeedAnd(napi_env env,napi_callback_info info)620 napi_value DataAbilityPredicatesProxy::IsNeedAnd(napi_env env, napi_callback_info info)
621 {
622 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->IsNeedAnd());
623 }
624
IsSorted(napi_env env,napi_callback_info info)625 napi_value DataAbilityPredicatesProxy::IsSorted(napi_env env, napi_callback_info info)
626 {
627 return JSUtils::Convert2JSValue(env, GetNativePredicates(env, info)->IsSorted());
628 }
629 } // namespace DataAbilityJsKit
630 } // namespace OHOS
631
632 EXTERN_C_START
NAPI_OHOS_Data_DataAbilityJsKit_DataAbilityPredicatesProxy_NewInstance(napi_env env,OHOS::NativeRdb::DataAbilityPredicates * predicates)633 __attribute__((visibility("default"))) napi_value NAPI_OHOS_Data_DataAbilityJsKit_DataAbilityPredicatesProxy_NewInstance(
634 napi_env env, OHOS::NativeRdb::DataAbilityPredicates *predicates)
635 {
636 return OHOS::DataAbilityJsKit::DataAbilityPredicatesProxy::NewInstance(
637 env, std::shared_ptr<OHOS::NativeRdb::DataAbilityPredicates>(predicates));
638 }
639
640 __attribute__((visibility("default"))) OHOS::NativeRdb::DataAbilityPredicates *
NAPI_OHOS_Data_DataAbilityJsKit_DataAbilityPredicatesProxy_GetNativeObject(const napi_env & env,const napi_value & arg)641 NAPI_OHOS_Data_DataAbilityJsKit_DataAbilityPredicatesProxy_GetNativeObject(const napi_env &env, const napi_value &arg)
642 {
643 auto predicates = OHOS::DataAbilityJsKit::DataAbilityPredicatesProxy::GetNativePredicates(env, arg);
644 return predicates.get();
645 }
646 EXTERN_C_END