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