• 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_rdb_predicates.h"
17 
18 #include "js_logger.h"
19 #include "js_utils.h"
20 
21 using namespace OHOS::NativeRdb;
22 using namespace OHOS::AppDataMgrJsKit;
23 
24 namespace OHOS {
25 namespace RdbJsKit {
26 static __thread napi_ref constructor_ = nullptr;
27 
Init(napi_env env,napi_value exports)28 void RdbPredicatesProxy::Init(napi_env env, napi_value exports)
29 {
30     LOG_INFO("RdbPredicatesProxy::Init");
31     napi_property_descriptor descriptors[] = {
32         DECLARE_NAPI_FUNCTION("equalTo", EqualTo),
33         DECLARE_NAPI_FUNCTION("notEqualTo", NotEqualTo),
34         DECLARE_NAPI_FUNCTION("beginWrap", BeginWrap),
35         DECLARE_NAPI_FUNCTION("endWrap", EndWrap),
36         DECLARE_NAPI_FUNCTION("or", Or),
37         DECLARE_NAPI_FUNCTION("and", And),
38         DECLARE_NAPI_FUNCTION("contains", Contains),
39         DECLARE_NAPI_FUNCTION("beginsWith", BeginsWith),
40         DECLARE_NAPI_FUNCTION("endsWith", EndsWith),
41         DECLARE_NAPI_FUNCTION("isNull", IsNull),
42         DECLARE_NAPI_FUNCTION("isNotNull", IsNotNull),
43         DECLARE_NAPI_FUNCTION("like", Like),
44         DECLARE_NAPI_FUNCTION("glob", Glob),
45         DECLARE_NAPI_FUNCTION("between", Between),
46         DECLARE_NAPI_FUNCTION("notBetween", NotBetween),
47         DECLARE_NAPI_FUNCTION("greaterThan", GreaterThan),
48         DECLARE_NAPI_FUNCTION("lessThan", LessThan),
49         DECLARE_NAPI_FUNCTION("greaterThanOrEqualTo", GreaterThanOrEqualTo),
50         DECLARE_NAPI_FUNCTION("lessThanOrEqualTo", LessThanOrEqualTo),
51         DECLARE_NAPI_FUNCTION("orderByAsc", OrderByAsc),
52         DECLARE_NAPI_FUNCTION("orderByDesc", OrderByDesc),
53         DECLARE_NAPI_FUNCTION("distinct", Distinct),
54         DECLARE_NAPI_FUNCTION("limitAs", Limit),
55         DECLARE_NAPI_FUNCTION("offsetAs", Offset),
56         DECLARE_NAPI_FUNCTION("groupBy", GroupBy),
57         DECLARE_NAPI_FUNCTION("indexedBy", IndexedBy),
58         DECLARE_NAPI_FUNCTION("in", In),
59         DECLARE_NAPI_FUNCTION("notIn", NotIn),
60         DECLARE_NAPI_FUNCTION("using", Using),
61         DECLARE_NAPI_FUNCTION("leftOuterJoin", LeftOuterJoin),
62         DECLARE_NAPI_FUNCTION("innerJoin", InnerJoin),
63         DECLARE_NAPI_FUNCTION("on", On),
64         DECLARE_NAPI_FUNCTION("clear", Clear),
65         DECLARE_NAPI_FUNCTION("crossJoin", CrossJoin),
66         DECLARE_NAPI_GETTER_SETTER("joinCount", GetJoinCount, SetJoinCount),
67         DECLARE_NAPI_GETTER_SETTER("joinConditions", GetJoinConditions, SetJoinConditions),
68         DECLARE_NAPI_GETTER_SETTER("joinNames", GetJoinTableNames, SetJoinTableNames),
69         DECLARE_NAPI_GETTER_SETTER("joinTypes", GetJoinTypes, SetJoinTypes),
70         DECLARE_NAPI_FUNCTION("inDevices", InDevices),
71         DECLARE_NAPI_FUNCTION("inAllDevices", InAllDevices),
72     };
73 
74     napi_value cons;
75     NAPI_CALL_RETURN_VOID(env, napi_define_class(env, "RdbPredicates", NAPI_AUTO_LENGTH, New, nullptr,
76                                    sizeof(descriptors) / sizeof(napi_property_descriptor), descriptors, &cons));
77 
78     NAPI_CALL_RETURN_VOID(env, napi_create_reference(env, cons, 1, &constructor_));
79 
80     NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, exports, "RdbPredicates", cons));
81     LOG_DEBUG("RdbPredicatesProxy::Init end");
82 }
83 
New(napi_env env,napi_callback_info info)84 napi_value RdbPredicatesProxy::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     size_t argc = 1;
91     napi_value args[1] = { 0 };
92     napi_value thiz;
93     NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, &thiz, nullptr));
94 
95     if (is_constructor) {
96         napi_valuetype valueType;
97         NAPI_CALL(env, napi_typeof(env, args[0], &valueType));
98         NAPI_ASSERT(env, valueType == napi_string, "Table name should be a string.");
99         std::string tableName = JSUtils::Convert2String(env, args[0]);
100         auto *proxy = new RdbPredicatesProxy(tableName);
101         napi_status status = napi_wrap(env, thiz, proxy, RdbPredicatesProxy::Destructor, nullptr, nullptr);
102         if (status != napi_ok) {
103             LOG_ERROR("RdbPredicatesProxy::InnerNew napi_wrap failed! napi_status:%{public}d!", status);
104             delete proxy;
105             return nullptr;
106         }
107         return thiz;
108     }
109 
110     argc = 1;
111     napi_value argv[1] = { args[0] };
112 
113     napi_value cons;
114     NAPI_CALL(env, napi_get_reference_value(env, constructor_, &cons));
115 
116     napi_value output;
117     NAPI_CALL(env, napi_new_instance(env, cons, argc, argv, &output));
118     LOG_DEBUG("RdbPredicatesProxy::New end");
119     return output;
120 }
121 
NewInstance(napi_env env,std::shared_ptr<NativeRdb::RdbPredicates> value)122 napi_value RdbPredicatesProxy::NewInstance(napi_env env, std::shared_ptr<NativeRdb::RdbPredicates> value)
123 {
124     napi_value cons;
125     napi_status status = napi_get_reference_value(env, constructor_, &cons);
126     if (status != napi_ok) {
127         LOG_ERROR("RdbPredicatesProxy::NewInstance get constructor failed! napi_status:%{public}d!", status);
128         return nullptr;
129     }
130 
131     size_t argc = 1;
132     napi_value args[1] = { JSUtils::Convert2JSValue(env, value->GetTableName()) };
133     napi_value instance = nullptr;
134     status = napi_new_instance(env, cons, argc, args, &instance);
135     if (status != napi_ok) {
136         LOG_ERROR("RdbPredicatesProxy::NewInstance napi_new_instance failed! napi_status:%{public}d!", status);
137         return nullptr;
138     }
139 
140     RdbPredicatesProxy *proxy = nullptr;
141     status = napi_unwrap(env, instance, reinterpret_cast<void **>(&proxy));
142     if (status != napi_ok) {
143         LOG_ERROR("RdbPredicatesProxy::NewInstance native instance is nullptr! napi_status:%{public}d!", status);
144         return instance;
145     }
146     proxy->predicates_ = std::move(value);
147     LOG_DEBUG("RdbPredicatesProxy::NewInstance end");
148     return instance;
149 }
150 
Destructor(napi_env env,void * nativeObject,void *)151 void RdbPredicatesProxy::Destructor(napi_env env, void *nativeObject, void *)
152 {
153     RdbPredicatesProxy *proxy = static_cast<RdbPredicatesProxy *>(nativeObject);
154     delete proxy;
155 }
156 
~RdbPredicatesProxy()157 RdbPredicatesProxy::~RdbPredicatesProxy()
158 {
159     LOG_DEBUG("RdbPredicatesProxy destructor");
160 }
161 
RdbPredicatesProxy(std::string & tableName)162 RdbPredicatesProxy::RdbPredicatesProxy(std::string &tableName)
163     : predicates_(std::make_shared<NativeRdb::RdbPredicates>(tableName))
164 {
165 }
166 
GetNativePredicates(napi_env env,napi_callback_info info)167 std::shared_ptr<NativeRdb::RdbPredicates> RdbPredicatesProxy::GetNativePredicates(napi_env env, napi_callback_info info)
168 {
169     RdbPredicatesProxy *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     LOG_DEBUG("RdbPredicatesProxy::GetNativePredicates end");
174     return predicatesProxy->predicates_;
175 }
176 
EqualTo(napi_env env,napi_callback_info info)177 napi_value RdbPredicatesProxy::EqualTo(napi_env env, napi_callback_info info)
178 {
179     napi_value thiz;
180     size_t argc = 2;
181     napi_value args[2] = { 0 };
182     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
183     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::EqualTo Invalid argvs!");
184     std::string field = JSUtils::Convert2String(env, args[0]);
185     std::string value = JSUtils::ConvertAny2String(env, args[1]);
186     GetNativePredicates(env, info)->EqualTo(field, value);
187     LOG_DEBUG("RdbPredicatesProxy::EqualTo end");
188     return thiz;
189 }
190 
NotEqualTo(napi_env env,napi_callback_info info)191 napi_value RdbPredicatesProxy::NotEqualTo(napi_env env, napi_callback_info info)
192 {
193     napi_value thiz;
194     size_t argc = 2;
195     napi_value args[2] = { 0 };
196     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
197     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::NotEqualTo Invalid argvs!");
198     std::string field = JSUtils::Convert2String(env, args[0]);
199     std::string value = JSUtils::ConvertAny2String(env, args[1]);
200     GetNativePredicates(env, info)->NotEqualTo(field, value);
201     LOG_DEBUG("RdbPredicatesProxy::NotEqualTo end");
202     return thiz;
203 }
204 
BeginWrap(napi_env env,napi_callback_info info)205 napi_value RdbPredicatesProxy::BeginWrap(napi_env env, napi_callback_info info)
206 {
207     napi_value thiz;
208     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
209     GetNativePredicates(env, info)->BeginWrap();
210     LOG_DEBUG("RdbPredicatesProxy::BeginWrap end");
211     return thiz;
212 }
213 
EndWrap(napi_env env,napi_callback_info info)214 napi_value RdbPredicatesProxy::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     LOG_DEBUG("RdbPredicatesProxy::EndWrap end");
220     return thiz;
221 }
222 
Or(napi_env env,napi_callback_info info)223 napi_value RdbPredicatesProxy::Or(napi_env env, napi_callback_info info)
224 {
225     napi_value thiz;
226     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
227     GetNativePredicates(env, info)->Or();
228     LOG_DEBUG("RdbPredicatesProxy::Or end");
229     return thiz;
230 }
231 
And(napi_env env,napi_callback_info info)232 napi_value RdbPredicatesProxy::And(napi_env env, napi_callback_info info)
233 {
234     napi_value thiz;
235     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
236     GetNativePredicates(env, info)->And();
237     LOG_DEBUG("RdbPredicatesProxy::And end");
238     return thiz;
239 }
240 
Contains(napi_env env,napi_callback_info info)241 napi_value RdbPredicatesProxy::Contains(napi_env env, napi_callback_info info)
242 {
243     napi_value thiz;
244     size_t argc = 2;
245     napi_value args[2] = { 0 };
246     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
247     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::Contains Invalid argvs!");
248     std::string field = JSUtils::Convert2String(env, args[0]);
249     std::string value = JSUtils::ConvertAny2String(env, args[1]);
250     GetNativePredicates(env, info)->Contains(field, value);
251     LOG_DEBUG("RdbPredicatesProxy::Contains end");
252     return thiz;
253 }
254 
BeginsWith(napi_env env,napi_callback_info info)255 napi_value RdbPredicatesProxy::BeginsWith(napi_env env, napi_callback_info info)
256 {
257     napi_value thiz;
258     size_t argc = 2;
259     napi_value args[2] = { 0 };
260     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
261     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::BeginsWith Invalid argvs!");
262     std::string field = JSUtils::Convert2String(env, args[0]);
263     std::string value = JSUtils::ConvertAny2String(env, args[1]);
264     GetNativePredicates(env, info)->BeginsWith(field, value);
265     LOG_DEBUG("RdbPredicatesProxy::BeginsWith end");
266     return thiz;
267 }
268 
EndsWith(napi_env env,napi_callback_info info)269 napi_value RdbPredicatesProxy::EndsWith(napi_env env, napi_callback_info info)
270 {
271     napi_value thiz;
272     size_t argc = 2;
273     napi_value args[2] = { 0 };
274     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
275     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::EndsWith Invalid argvs!");
276     std::string field = JSUtils::Convert2String(env, args[0]);
277     std::string value = JSUtils::ConvertAny2String(env, args[1]);
278     GetNativePredicates(env, info)->EndsWith(field, value);
279     LOG_DEBUG("RdbPredicatesProxy::EndsWith end");
280     return thiz;
281 }
282 
IsNull(napi_env env,napi_callback_info info)283 napi_value RdbPredicatesProxy::IsNull(napi_env env, napi_callback_info info)
284 {
285     napi_value thiz;
286     size_t argc = 1;
287     napi_value args[1] = { 0 };
288     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
289     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::IsNull Invalid argvs!");
290     std::string field = JSUtils::Convert2String(env, args[0]);
291     GetNativePredicates(env, info)->IsNull(field);
292     LOG_DEBUG("RdbPredicatesProxy::IsNull end");
293     return thiz;
294 }
295 
IsNotNull(napi_env env,napi_callback_info info)296 napi_value RdbPredicatesProxy::IsNotNull(napi_env env, napi_callback_info info)
297 {
298     napi_value thiz;
299     size_t argc = 1;
300     napi_value args[1] = { 0 };
301     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
302     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::IsNotNull Invalid argvs!");
303     std::string field = JSUtils::Convert2String(env, args[0]);
304     GetNativePredicates(env, info)->IsNotNull(field);
305     LOG_DEBUG("RdbPredicatesProxy::IsNotNull end");
306     return thiz;
307 }
308 
Like(napi_env env,napi_callback_info info)309 napi_value RdbPredicatesProxy::Like(napi_env env, napi_callback_info info)
310 {
311     napi_value thiz;
312     size_t argc = 2;
313     napi_value args[2] = { 0 };
314     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
315     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::Like Invalid argvs!");
316     std::string field = JSUtils::Convert2String(env, args[0]);
317     std::string value = JSUtils::ConvertAny2String(env, args[1]);
318     GetNativePredicates(env, info)->Like(field, value);
319     LOG_DEBUG("RdbPredicatesProxy::Like end");
320     return thiz;
321 }
322 
Glob(napi_env env,napi_callback_info info)323 napi_value RdbPredicatesProxy::Glob(napi_env env, napi_callback_info info)
324 {
325     napi_value thiz;
326     size_t argc = 2;
327     napi_value args[2] = { 0 };
328     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
329     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::Glob Invalid argvs!");
330     std::string field = JSUtils::Convert2String(env, args[0]);
331     std::string value = JSUtils::ConvertAny2String(env, args[1]);
332     GetNativePredicates(env, info)->Glob(field, value);
333     LOG_DEBUG("RdbPredicatesProxy::Glob end");
334     return thiz;
335 }
336 
Between(napi_env env,napi_callback_info info)337 napi_value RdbPredicatesProxy::Between(napi_env env, napi_callback_info info)
338 {
339     napi_value thiz;
340     size_t argc = 3;
341     napi_value args[3] = { 0 };
342     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
343     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::Between Invalid argvs!");
344     std::string field = JSUtils::Convert2String(env, args[0]);
345     std::string low = JSUtils::ConvertAny2String(env, args[1]);
346     std::string high = JSUtils::ConvertAny2String(env, args[2]);
347     GetNativePredicates(env, info)->Between(field, low, high);
348     LOG_DEBUG("RdbPredicatesProxy::Between end");
349     return thiz;
350 }
351 
NotBetween(napi_env env,napi_callback_info info)352 napi_value RdbPredicatesProxy::NotBetween(napi_env env, napi_callback_info info)
353 {
354     napi_value thiz;
355     size_t argc = 3;
356     napi_value args[3] = { 0 };
357     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
358     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::NotBetween Invalid argvs!");
359     std::string field = JSUtils::Convert2String(env, args[0]);
360     std::string low = JSUtils::ConvertAny2String(env, args[1]);
361     std::string high = JSUtils::ConvertAny2String(env, args[2]);
362     GetNativePredicates(env, info)->NotBetween(field, low, high);
363     LOG_DEBUG("RdbPredicatesProxy::NotBetween end");
364     return thiz;
365 }
366 
GreaterThan(napi_env env,napi_callback_info info)367 napi_value RdbPredicatesProxy::GreaterThan(napi_env env, napi_callback_info info)
368 {
369     napi_value thiz;
370     size_t argc = 2;
371     napi_value args[2] = { 0 };
372     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
373     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::GreaterThan Invalid argvs!");
374     std::string field = JSUtils::Convert2String(env, args[0]);
375     std::string value = JSUtils::ConvertAny2String(env, args[1]);
376     GetNativePredicates(env, info)->GreaterThan(field, value);
377     LOG_DEBUG("RdbPredicatesProxy::GreaterThan end");
378     return thiz;
379 }
380 
LessThan(napi_env env,napi_callback_info info)381 napi_value RdbPredicatesProxy::LessThan(napi_env env, napi_callback_info info)
382 {
383     napi_value thiz;
384     size_t argc = 2;
385     napi_value args[2] = { 0 };
386     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
387     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::LessThan Invalid argvs!");
388     std::string field = JSUtils::Convert2String(env, args[0]);
389     std::string value = JSUtils::ConvertAny2String(env, args[1]);
390     GetNativePredicates(env, info)->LessThan(field, value);
391     LOG_DEBUG("RdbPredicatesProxy::LessThan end");
392     return thiz;
393 }
394 
GreaterThanOrEqualTo(napi_env env,napi_callback_info info)395 napi_value RdbPredicatesProxy::GreaterThanOrEqualTo(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, "RdbPredicatesProxy::GreaterThanOrEqualTo Invalid argvs!");
402     std::string field = JSUtils::Convert2String(env, args[0]);
403     std::string value = JSUtils::ConvertAny2String(env, args[1]);
404     GetNativePredicates(env, info)->GreaterThanOrEqualTo(field, value);
405     LOG_DEBUG("RdbPredicatesProxy::GreaterThanOrEqualTo end");
406     return thiz;
407 }
408 
LessThanOrEqualTo(napi_env env,napi_callback_info info)409 napi_value RdbPredicatesProxy::LessThanOrEqualTo(napi_env env, napi_callback_info info)
410 {
411     napi_value thiz;
412     size_t argc = 2;
413     napi_value args[2] = { 0 };
414     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
415     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::LessThanOrEqualTo Invalid argvs!");
416     std::string field = JSUtils::Convert2String(env, args[0]);
417     std::string value = JSUtils::ConvertAny2String(env, args[1]);
418     GetNativePredicates(env, info)->LessThanOrEqualTo(field, value);
419     LOG_DEBUG("RdbPredicatesProxy::LessThanOrEqualTo end");
420     return thiz;
421 }
422 
OrderByAsc(napi_env env,napi_callback_info info)423 napi_value RdbPredicatesProxy::OrderByAsc(napi_env env, napi_callback_info info)
424 {
425     napi_value thiz;
426     size_t argc = 1;
427     napi_value args[1] = { 0 };
428     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
429     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::OrderByAsc Invalid argvs!");
430     std::string field = JSUtils::Convert2String(env, args[0]);
431     GetNativePredicates(env, info)->OrderByAsc(field);
432     LOG_DEBUG("RdbPredicatesProxy::OrderByAsc end");
433     return thiz;
434 }
435 
OrderByDesc(napi_env env,napi_callback_info info)436 napi_value RdbPredicatesProxy::OrderByDesc(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, "RdbPredicatesProxy::OrderByDesc Invalid argvs!");
443     std::string field = JSUtils::Convert2String(env, args[0]);
444     GetNativePredicates(env, info)->OrderByDesc(field);
445     LOG_DEBUG("RdbPredicatesProxy::OrderByDesc end");
446     return thiz;
447 }
448 
Distinct(napi_env env,napi_callback_info info)449 napi_value RdbPredicatesProxy::Distinct(napi_env env, napi_callback_info info)
450 {
451     napi_value thiz;
452     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
453     GetNativePredicates(env, info)->Distinct();
454     LOG_DEBUG("RdbPredicatesProxy::Distinct end");
455     return thiz;
456 }
457 
Limit(napi_env env,napi_callback_info info)458 napi_value RdbPredicatesProxy::Limit(napi_env env, napi_callback_info info)
459 {
460     napi_value thiz;
461     size_t argc = 1;
462     napi_value args[1] = { 0 };
463     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
464     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::Limit Invalid argvs!");
465     int32_t limit = 0;
466     napi_get_value_int32(env, args[0], &limit);
467     GetNativePredicates(env, info)->Limit(limit);
468     LOG_DEBUG("RdbPredicatesProxy::Limit end");
469     return thiz;
470 }
471 
Offset(napi_env env,napi_callback_info info)472 napi_value RdbPredicatesProxy::Offset(napi_env env, napi_callback_info info)
473 {
474     napi_value thiz;
475     size_t argc = 1;
476     napi_value args[1] = { 0 };
477     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
478     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::Offset Invalid argvs!");
479     int32_t offset = 0;
480     napi_get_value_int32(env, args[0], &offset);
481     GetNativePredicates(env, info)->Offset(offset);
482     LOG_DEBUG("RdbPredicatesProxy::Offset end");
483     return thiz;
484 }
485 
GroupBy(napi_env env,napi_callback_info info)486 napi_value RdbPredicatesProxy::GroupBy(napi_env env, napi_callback_info info)
487 {
488     napi_value thiz;
489     size_t argc = 1;
490     napi_value args[1] = { 0 };
491     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
492     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::GroupBy Invalid argvs!");
493     std::vector<std::string> fields = JSUtils::Convert2StrVector(env, args[0]);
494     GetNativePredicates(env, info)->GroupBy(fields);
495     LOG_DEBUG("RdbPredicatesProxy::GroupBy end");
496     return thiz;
497 }
498 
IndexedBy(napi_env env,napi_callback_info info)499 napi_value RdbPredicatesProxy::IndexedBy(napi_env env, napi_callback_info info)
500 {
501     napi_value thiz;
502     size_t argc = 1;
503     napi_value args[1] = { 0 };
504     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
505     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::IndexedBy Invalid argvs!");
506     std::string indexName = JSUtils::Convert2String(env, args[0]);
507     GetNativePredicates(env, info)->IndexedBy(indexName);
508     LOG_DEBUG("RdbPredicatesProxy::IndexedBy end");
509     return thiz;
510 }
511 
In(napi_env env,napi_callback_info info)512 napi_value RdbPredicatesProxy::In(napi_env env, napi_callback_info info)
513 {
514     napi_value thiz;
515     size_t argc = 2;
516     napi_value args[2] = { 0 };
517     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
518     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::In Invalid argvs!");
519     std::string field = JSUtils::Convert2String(env, args[0]);
520     std::vector<std::string> values = JSUtils::Convert2StrVector(env, args[1]);
521     GetNativePredicates(env, info)->In(field, values);
522     LOG_DEBUG("RdbPredicatesProxy::In end");
523     return thiz;
524 }
525 
NotIn(napi_env env,napi_callback_info info)526 napi_value RdbPredicatesProxy::NotIn(napi_env env, napi_callback_info info)
527 {
528     napi_value thiz;
529     size_t argc = 2;
530     napi_value args[2] = { 0 };
531     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
532     NAPI_ASSERT(env, argc > 0, "RdbPredicatesProxy::NotIn Invalid argvs!");
533     std::string field = JSUtils::Convert2String(env, args[0]);
534     std::vector<std::string> values = JSUtils::Convert2StrVector(env, args[1]);
535     GetNativePredicates(env, info)->NotIn(field, values);
536     LOG_DEBUG("RdbPredicatesProxy::NotIn end");
537     return thiz;
538 }
539 
Using(napi_env env,napi_callback_info info)540 napi_value RdbPredicatesProxy::Using(napi_env env, napi_callback_info info)
541 {
542     napi_value thiz = nullptr;
543     size_t argc = 1;
544     napi_value args[1] = { 0 };
545     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
546     NAPI_ASSERT(env, argc == 1, "RdbPredicatesProxy::Using Invalid argvs!");
547     auto fields = JSUtils::Convert2StrVector(env, args[0]);
548     GetNativePredicates(env, info)->Using(fields);
549     LOG_DEBUG("RdbPredicatesProxy::Using end");
550     return thiz;
551 }
552 
LeftOuterJoin(napi_env env,napi_callback_info info)553 napi_value RdbPredicatesProxy::LeftOuterJoin(napi_env env, napi_callback_info info)
554 {
555     napi_value thiz = nullptr;
556     size_t argc = 1;
557     napi_value args[1] = { 0 };
558     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
559     NAPI_ASSERT(env, argc == 1, "RdbPredicatesProxy::LeftOuterJoin Invalid argvs!");
560     std::string tablename = JSUtils::Convert2String(env, args[0]);
561     GetNativePredicates(env, info)->LeftOuterJoin(tablename);
562     LOG_DEBUG("RdbPredicatesProxy::LeftOuterJoin end");
563     return thiz;
564 }
565 
InnerJoin(napi_env env,napi_callback_info info)566 napi_value RdbPredicatesProxy::InnerJoin(napi_env env, napi_callback_info info)
567 {
568     napi_value thiz = nullptr;
569     size_t argc = 1;
570     napi_value args[1] = { 0 };
571     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
572     NAPI_ASSERT(env, argc == 1, "RdbPredicatesProxy::InnerJoin Invalid argvs!");
573     std::string tablename = JSUtils::Convert2String(env, args[0]);
574     GetNativePredicates(env, info)->InnerJoin(tablename);
575     LOG_DEBUG("RdbPredicatesProxy::InnerJoin end");
576     return thiz;
577 }
578 
On(napi_env env,napi_callback_info info)579 napi_value RdbPredicatesProxy::On(napi_env env, napi_callback_info info)
580 {
581     napi_value thiz = nullptr;
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 == 1, "RdbPredicatesProxy::On Invalid argvs!");
586     auto clauses = JSUtils::Convert2StrVector(env, args[0]);
587     GetNativePredicates(env, info)->On(clauses);
588     LOG_DEBUG("RdbPredicatesProxy::On end");
589     return thiz;
590 }
591 
Clear(napi_env env,napi_callback_info info)592 napi_value RdbPredicatesProxy::Clear(napi_env env, napi_callback_info info)
593 {
594     napi_value thiz = nullptr;
595     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
596     GetNativePredicates(env, info)->Clear();
597     LOG_DEBUG("RdbPredicatesProxy::Clear end");
598     return thiz;
599 }
600 
CrossJoin(napi_env env,napi_callback_info info)601 napi_value RdbPredicatesProxy::CrossJoin(napi_env env, napi_callback_info info)
602 {
603     napi_value thiz = nullptr;
604     size_t argc = 1;
605     napi_value args[1] = { 0 };
606     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
607     NAPI_ASSERT(env, argc == 1, "RdbPredicatesProxy::CrossJoin Invalid argvs!");
608     std::string tablename = JSUtils::Convert2String(env, args[0]);
609     GetNativePredicates(env, info)->CrossJoin(tablename);
610     LOG_DEBUG("RdbPredicatesProxy::CrossJoin end");
611     return thiz;
612 }
613 
GetJoinCount(napi_env env,napi_callback_info info)614 napi_value RdbPredicatesProxy::GetJoinCount(napi_env env, napi_callback_info info)
615 {
616     napi_value thiz = nullptr;
617     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
618     int errCode = GetNativePredicates(env, info)->GetJoinCount();
619     LOG_DEBUG("RdbPredicatesProxy::GetJoinCount end");
620     return JSUtils::Convert2JSValue(env, errCode);
621 }
622 
SetJoinCount(napi_env env,napi_callback_info info)623 napi_value RdbPredicatesProxy::SetJoinCount(napi_env env, napi_callback_info info)
624 {
625     napi_value thiz = nullptr;
626     size_t argc = 1;
627     napi_value args[1] = { 0 };
628     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
629     NAPI_ASSERT(env, argc == 1, "RdbPredicatesProxy::SetJoinCount Invalid argvs!");
630     int32_t joinCount = 0;
631     napi_get_value_int32(env, args[0], &joinCount);
632     GetNativePredicates(env, info)->SetJoinCount(joinCount);
633     LOG_DEBUG("RdbPredicatesProxy::SetJoinCount end");
634     return thiz;
635 }
636 
GetJoinTypes(napi_env env,napi_callback_info info)637 napi_value RdbPredicatesProxy::GetJoinTypes(napi_env env, napi_callback_info info)
638 {
639     napi_value thiz = nullptr;
640     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
641     auto joinTypes = GetNativePredicates(env, info)->GetJoinTypes();
642     LOG_DEBUG("RdbPredicatesProxy::GetJoinTypes end");
643     return JSUtils::Convert2JSValue(env, joinTypes);
644 }
645 
GetJoinTableNames(napi_env env,napi_callback_info info)646 napi_value RdbPredicatesProxy::GetJoinTableNames(napi_env env, napi_callback_info info)
647 {
648     napi_value thiz = nullptr;
649     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
650     auto joinTableNames = GetNativePredicates(env, info)->GetJoinTableNames();
651     LOG_DEBUG("RdbPredicatesProxy::GetJoinTableNames end");
652     return JSUtils::Convert2JSValue(env, joinTableNames);
653 }
654 
GetJoinConditions(napi_env env,napi_callback_info info)655 napi_value RdbPredicatesProxy::GetJoinConditions(napi_env env, napi_callback_info info)
656 {
657     napi_value thiz = nullptr;
658     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
659     auto joinConditions = GetNativePredicates(env, info)->GetJoinConditions();
660     LOG_DEBUG("RdbPredicatesProxy::GetJoinConditions end");
661     return JSUtils::Convert2JSValue(env, joinConditions);
662 }
663 
SetJoinConditions(napi_env env,napi_callback_info info)664 napi_value RdbPredicatesProxy::SetJoinConditions(napi_env env, napi_callback_info info)
665 {
666     napi_value thiz = nullptr;
667     size_t argc = 1;
668     napi_value args[1] = { 0 };
669     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
670     NAPI_ASSERT(env, argc == 1, "RdbPredicatesProxy::SetJoinConditions Invalid argvs!");
671     auto joinConditions = JSUtils::Convert2StrVector(env, args[0]);
672     GetNativePredicates(env, info)->SetJoinConditions(joinConditions);
673     LOG_DEBUG("RdbPredicatesProxy::SetJoinConditions end");
674     return thiz;
675 }
676 
SetJoinTableNames(napi_env env,napi_callback_info info)677 napi_value RdbPredicatesProxy::SetJoinTableNames(napi_env env, napi_callback_info info)
678 {
679     napi_value thiz = nullptr;
680     size_t argc = 1;
681     napi_value args[1] = { 0 };
682     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
683     NAPI_ASSERT(env, argc == 1, "RdbPredicatesProxy::SetJoinTableNames Invalid argvs!");
684     auto joinNames = JSUtils::Convert2StrVector(env, args[0]);
685     GetNativePredicates(env, info)->SetJoinTableNames(joinNames);
686     LOG_DEBUG("RdbPredicatesProxy::SetJoinTableNames end");
687     return thiz;
688 }
689 
SetJoinTypes(napi_env env,napi_callback_info info)690 napi_value RdbPredicatesProxy::SetJoinTypes(napi_env env, napi_callback_info info)
691 {
692     napi_value thiz = nullptr;
693     size_t argc = 1;
694     napi_value args[1] = { 0 };
695     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
696     NAPI_ASSERT(env, argc == 1, "RdbPredicatesProxy::SetJoinTypes Invalid argvs!");
697     auto joinTypes = JSUtils::Convert2StrVector(env, args[0]);
698     GetNativePredicates(env, info)->SetJoinTypes(joinTypes);
699     LOG_DEBUG("RdbPredicatesProxy::SetJoinTypes end");
700     return thiz;
701 }
702 
GetPredicates() const703 std::shared_ptr<NativeRdb::RdbPredicates> RdbPredicatesProxy::GetPredicates() const
704 {
705     return this->predicates_;
706 }
707 
InDevices(napi_env env,napi_callback_info info)708 napi_value RdbPredicatesProxy::InDevices(napi_env env, napi_callback_info info)
709 {
710     napi_value thiz = nullptr;
711     size_t argc = 1;
712     napi_value args[1] = { nullptr };
713     napi_get_cb_info(env, info, &argc, args, &thiz, nullptr);
714     NAPI_ASSERT(env, argc == 1, "RdbPredicatesProxy::InDevices Invalid args!");
715     auto devices = JSUtils::Convert2StrVector(env, args[0]);
716     GetNativePredicates(env, info)->InDevices(devices);
717     LOG_DEBUG("RdbPredicatesProxy::InDevices end");
718     return thiz;
719 }
720 
InAllDevices(napi_env env,napi_callback_info info)721 napi_value RdbPredicatesProxy::InAllDevices(napi_env env, napi_callback_info info)
722 {
723     napi_value thiz = nullptr;
724     napi_get_cb_info(env, info, nullptr, nullptr, &thiz, nullptr);
725     GetNativePredicates(env, info)->InAllDevices();
726     LOG_DEBUG("RdbPredicatesProxy::InAllDevices end");
727     return thiz;
728 }
729 } // namespace RdbJsKit
730 } // namespace OHOS
731