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