• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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