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