• 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     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