1 /*
2 * Copyright (c) 2024 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 "relational_store_ffi.h"
17
18 #include <cstdint>
19 #include <cstdlib>
20
21 #include "cj_lambda.h"
22 #include "napi_rdb_js_utils.h"
23 #include "rdb_errno.h"
24 #include "relational_store_utils.h"
25
26 using namespace OHOS::FFI;
27
28 namespace OHOS {
29 namespace Relational {
30 extern "C" {
FfiOHOSRelationalStoreGetRdbStore(OHOS::AbilityRuntime::Context * context,StoreConfig config,int32_t * errCode)31 int64_t FfiOHOSRelationalStoreGetRdbStore(OHOS::AbilityRuntime::Context *context, StoreConfig config, int32_t *errCode)
32 {
33 return GetRdbStore(context, config, errCode);
34 }
35
FfiOHOSRelationalStoreGetRdbStoreEx(OHOS::AbilityRuntime::Context * context,const StoreConfigEx * config,int32_t * errCode)36 FFI_EXPORT int64_t FfiOHOSRelationalStoreGetRdbStoreEx(OHOS::AbilityRuntime::Context *context,
37 const StoreConfigEx *config, int32_t *errCode)
38 {
39 return GetRdbStoreEx(context, config, errCode);
40 }
41
FfiOHOSRelationalStoreDeleteRdbStore(OHOS::AbilityRuntime::Context * context,const char * name,int32_t * errCode)42 void FfiOHOSRelationalStoreDeleteRdbStore(OHOS::AbilityRuntime::Context *context, const char *name, int32_t *errCode)
43 {
44 DeleteRdbStore(context, name, errCode);
45 }
46
FfiOHOSRelationalStoreDeleteRdbStoreConfig(OHOS::AbilityRuntime::Context * context,StoreConfig config,int32_t * errCode)47 void FfiOHOSRelationalStoreDeleteRdbStoreConfig(
48 OHOS::AbilityRuntime::Context *context, StoreConfig config, int32_t *errCode)
49 {
50 DeleteRdbStoreConfig(context, config, errCode);
51 }
52
FfiOHOSRelationalStoreDeleteRdbStoreConfigEx(OHOS::AbilityRuntime::Context * context,const StoreConfigEx * config,int32_t * errCode)53 void FfiOHOSRelationalStoreDeleteRdbStoreConfigEx(
54 OHOS::AbilityRuntime::Context *context, const StoreConfigEx *config, int32_t *errCode)
55 {
56 DeleteRdbStoreConfigEx(context, config, errCode);
57 }
58
FfiOHOSRelationalStoreRdbPredicatesConstructor(const char * tableName)59 int64_t FfiOHOSRelationalStoreRdbPredicatesConstructor(const char *tableName)
60 {
61 auto nativeRdbPredicates = FFIData::Create<RdbPredicatesImpl>(tableName);
62 if (nativeRdbPredicates == nullptr) {
63 return -1;
64 }
65 return nativeRdbPredicates->GetID();
66 }
67
FfiOHOSRelationalStoreInDevices(int64_t id,const char ** devicesArray,int64_t devicesSize)68 int32_t FfiOHOSRelationalStoreInDevices(int64_t id, const char **devicesArray, int64_t devicesSize)
69 {
70 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
71 if (nativeRdbPredicates == nullptr) {
72 return -1;
73 }
74 nativeRdbPredicates->InDevices(devicesArray, devicesSize);
75 return 0;
76 }
77
FfiOHOSRelationalStoreInAllDevices(int64_t id)78 int32_t FfiOHOSRelationalStoreInAllDevices(int64_t id)
79 {
80 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
81 if (nativeRdbPredicates == nullptr) {
82 return -1;
83 }
84 nativeRdbPredicates->InAllDevices();
85 return 0;
86 }
87
FfiOHOSRelationalStoreBeginWrap(int64_t id)88 int32_t FfiOHOSRelationalStoreBeginWrap(int64_t id)
89 {
90 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
91 if (nativeRdbPredicates == nullptr) {
92 return -1;
93 }
94 nativeRdbPredicates->BeginWrap();
95 return 0;
96 }
97
FfiOHOSRelationalStoreEndWrap(int64_t id)98 int32_t FfiOHOSRelationalStoreEndWrap(int64_t id)
99 {
100 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
101 if (nativeRdbPredicates == nullptr) {
102 return -1;
103 }
104 nativeRdbPredicates->EndWrap();
105 return 0;
106 }
107
FfiOHOSRelationalStoreOr(int64_t id)108 int32_t FfiOHOSRelationalStoreOr(int64_t id)
109 {
110 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
111 if (nativeRdbPredicates == nullptr) {
112 return -1;
113 }
114 nativeRdbPredicates->Or();
115 return 0;
116 }
117
FfiOHOSRelationalStoreAnd(int64_t id)118 int32_t FfiOHOSRelationalStoreAnd(int64_t id)
119 {
120 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
121 if (nativeRdbPredicates == nullptr) {
122 return -1;
123 }
124 nativeRdbPredicates->And();
125 return 0;
126 }
127
FfiOHOSRelationalStoreContains(int64_t id,const char * field,const char * value)128 int32_t FfiOHOSRelationalStoreContains(int64_t id, const char *field, const char *value)
129 {
130 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
131 if (nativeRdbPredicates == nullptr) {
132 return -1;
133 }
134 nativeRdbPredicates->Contains(field, value);
135 return 0;
136 }
137
FfiOHOSRelationalStoreBeginsWith(int64_t id,const char * field,const char * value)138 int32_t FfiOHOSRelationalStoreBeginsWith(int64_t id, const char *field, const char *value)
139 {
140 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
141 if (nativeRdbPredicates == nullptr) {
142 return -1;
143 }
144 nativeRdbPredicates->BeginsWith(field, value);
145 return 0;
146 }
147
FfiOHOSRelationalStoreEndsWith(int64_t id,const char * field,const char * value)148 int32_t FfiOHOSRelationalStoreEndsWith(int64_t id, const char *field, const char *value)
149 {
150 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
151 if (nativeRdbPredicates == nullptr) {
152 return -1;
153 }
154 nativeRdbPredicates->EndsWith(field, value);
155 return 0;
156 }
157
FfiOHOSRelationalStoreIsNull(int64_t id,const char * field)158 int32_t FfiOHOSRelationalStoreIsNull(int64_t id, const char *field)
159 {
160 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
161 if (nativeRdbPredicates == nullptr) {
162 return -1;
163 }
164 nativeRdbPredicates->IsNull(field);
165 return 0;
166 }
167
FfiOHOSRelationalStoreIsNotNull(int64_t id,const char * field)168 int32_t FfiOHOSRelationalStoreIsNotNull(int64_t id, const char *field)
169 {
170 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
171 if (nativeRdbPredicates == nullptr) {
172 return -1;
173 }
174 nativeRdbPredicates->IsNotNull(field);
175 return 0;
176 }
177
FfiOHOSRelationalStoreLike(int64_t id,const char * field,const char * value)178 int32_t FfiOHOSRelationalStoreLike(int64_t id, const char *field, const char *value)
179 {
180 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
181 if (nativeRdbPredicates == nullptr) {
182 return -1;
183 }
184 nativeRdbPredicates->Like(field, value);
185 return 0;
186 }
187
FfiOHOSRelationalStoreGlob(int64_t id,const char * field,const char * value)188 int32_t FfiOHOSRelationalStoreGlob(int64_t id, const char *field, const char *value)
189 {
190 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
191 if (nativeRdbPredicates == nullptr) {
192 return -1;
193 }
194 nativeRdbPredicates->Glob(field, value);
195 return 0;
196 }
197
FfiOHOSRelationalStoreOrderByAsc(int64_t id,const char * field)198 int32_t FfiOHOSRelationalStoreOrderByAsc(int64_t id, const char *field)
199 {
200 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
201 if (nativeRdbPredicates == nullptr) {
202 return -1;
203 }
204 nativeRdbPredicates->OrderByAsc(field);
205 return 0;
206 }
207
FfiOHOSRelationalStoreOrderByDesc(int64_t id,const char * field)208 int32_t FfiOHOSRelationalStoreOrderByDesc(int64_t id, const char *field)
209 {
210 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
211 if (nativeRdbPredicates == nullptr) {
212 return -1;
213 }
214 nativeRdbPredicates->OrderByDesc(field);
215 return 0;
216 }
217
FfiOHOSRelationalStoreDistinct(int64_t id)218 int32_t FfiOHOSRelationalStoreDistinct(int64_t id)
219 {
220 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
221 if (nativeRdbPredicates == nullptr) {
222 return -1;
223 }
224 nativeRdbPredicates->Distinct();
225 return 0;
226 }
227
FfiOHOSRelationalStoreLimitAs(int64_t id,int32_t value)228 int32_t FfiOHOSRelationalStoreLimitAs(int64_t id, int32_t value)
229 {
230 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
231 if (nativeRdbPredicates == nullptr) {
232 return -1;
233 }
234 nativeRdbPredicates->LimitAs(value);
235 return 0;
236 }
237
FfiOHOSRelationalStoreOffsetAs(int64_t id,int32_t rowOffset)238 int32_t FfiOHOSRelationalStoreOffsetAs(int64_t id, int32_t rowOffset)
239 {
240 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
241 if (nativeRdbPredicates == nullptr) {
242 return -1;
243 }
244 nativeRdbPredicates->OffsetAs(rowOffset);
245 return 0;
246 }
247
FfiOHOSRelationalStoreGroupBy(int64_t id,const char ** fieldsArray,int64_t fieldsSize)248 int32_t FfiOHOSRelationalStoreGroupBy(int64_t id, const char **fieldsArray, int64_t fieldsSize)
249 {
250 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
251 if (nativeRdbPredicates == nullptr) {
252 return -1;
253 }
254 nativeRdbPredicates->GroupBy(fieldsArray, fieldsSize);
255 return 0;
256 }
257
FfiOHOSRelationalStoreIndexedBy(int64_t id,const char * field)258 int32_t FfiOHOSRelationalStoreIndexedBy(int64_t id, const char *field)
259 {
260 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
261 if (nativeRdbPredicates == nullptr) {
262 return -1;
263 }
264 nativeRdbPredicates->IndexedBy(field);
265 return 0;
266 }
267
FfiOHOSRelationalStoreLessThanOrEqualTo(int64_t id,const char * field,ValueType value)268 int32_t FfiOHOSRelationalStoreLessThanOrEqualTo(int64_t id, const char *field, ValueType value)
269 {
270 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
271 if (nativeRdbPredicates == nullptr) {
272 return -1;
273 }
274 nativeRdbPredicates->LessThanOrEqualTo(field, value);
275 return 0;
276 }
277
FfiOHOSRelationalStoreLessThanOrEqualToEx(int64_t id,const char * field,const ValueTypeEx * value)278 FFI_EXPORT int32_t FfiOHOSRelationalStoreLessThanOrEqualToEx(int64_t id, const char *field, const ValueTypeEx *value)
279 {
280 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
281 if (nativeRdbPredicates == nullptr) {
282 return -1;
283 }
284 nativeRdbPredicates->LessThanOrEqualToEx(field, value);
285 return 0;
286 }
287
FfiOHOSRelationalStoreEqualTo(int64_t id,const char * field,ValueType value)288 int32_t FfiOHOSRelationalStoreEqualTo(int64_t id, const char *field, ValueType value)
289 {
290 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
291 if (nativeRdbPredicates == nullptr) {
292 return -1;
293 }
294 nativeRdbPredicates->EqualTo(field, value);
295 return 0;
296 }
297
FfiOHOSRelationalStoreEqualToEx(int64_t id,const char * field,const ValueTypeEx * value)298 FFI_EXPORT int32_t FfiOHOSRelationalStoreEqualToEx(int64_t id, const char *field, const ValueTypeEx *value)
299 {
300 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
301 if (nativeRdbPredicates == nullptr) {
302 return -1;
303 }
304 nativeRdbPredicates->EqualToEx(field, value);
305 return 0;
306 }
307
FfiOHOSRelationalStoreGreaterThanOrEqualTo(int64_t id,const char * field,ValueType value)308 int32_t FfiOHOSRelationalStoreGreaterThanOrEqualTo(int64_t id, const char *field, ValueType value)
309 {
310 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
311 if (nativeRdbPredicates == nullptr) {
312 return -1;
313 }
314 nativeRdbPredicates->GreaterThanOrEqualTo(field, value);
315 return 0;
316 }
317
FfiOHOSRelationalStoreGreaterThanOrEqualToEx(int64_t id,const char * field,const ValueTypeEx * value)318 FFI_EXPORT int32_t FfiOHOSRelationalStoreGreaterThanOrEqualToEx(int64_t id, const char *field, const ValueTypeEx *value)
319 {
320 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
321 if (nativeRdbPredicates == nullptr) {
322 return -1;
323 }
324 nativeRdbPredicates->GreaterThanOrEqualToEx(field, value);
325 return 0;
326 }
327
FfiOHOSRelationalStoreGreaterThan(int64_t id,const char * field,ValueType value)328 int32_t FfiOHOSRelationalStoreGreaterThan(int64_t id, const char *field, ValueType value)
329 {
330 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
331 if (nativeRdbPredicates == nullptr) {
332 return -1;
333 }
334 nativeRdbPredicates->GreaterThan(field, value);
335 return 0;
336 }
337
FfiOHOSRelationalStoreGreaterThanEx(int64_t id,const char * field,const ValueTypeEx * value)338 FFI_EXPORT int32_t FfiOHOSRelationalStoreGreaterThanEx(int64_t id, const char *field, const ValueTypeEx *value)
339 {
340 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
341 if (nativeRdbPredicates == nullptr) {
342 return -1;
343 }
344 nativeRdbPredicates->GreaterThanEx(field, value);
345 return 0;
346 }
347
FfiOHOSRelationalStoreNotBetween(int64_t id,const char * field,ValueType lowValue,ValueType highValue)348 int32_t FfiOHOSRelationalStoreNotBetween(int64_t id, const char *field, ValueType lowValue, ValueType highValue)
349 {
350 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
351 if (nativeRdbPredicates == nullptr) {
352 return -1;
353 }
354 nativeRdbPredicates->NotBetween(field, lowValue, highValue);
355 return 0;
356 }
357
FfiOHOSRelationalStoreNotBetweenEx(int64_t id,const char * field,const ValueTypeEx * lowValue,const ValueTypeEx * highValue)358 FFI_EXPORT int32_t FfiOHOSRelationalStoreNotBetweenEx(int64_t id, const char *field, const ValueTypeEx *lowValue,
359 const ValueTypeEx *highValue)
360 {
361 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
362 if (nativeRdbPredicates == nullptr) {
363 return -1;
364 }
365 nativeRdbPredicates->NotBetweenEx(field, lowValue, highValue);
366 return 0;
367 }
368
FfiOHOSRelationalStoreLessThan(int64_t id,const char * field,ValueType value)369 int32_t FfiOHOSRelationalStoreLessThan(int64_t id, const char *field, ValueType value)
370 {
371 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
372 if (nativeRdbPredicates == nullptr) {
373 return -1;
374 }
375 nativeRdbPredicates->LessThan(field, value);
376 return 0;
377 }
378
FfiOHOSRelationalStoreLessThanEx(int64_t id,const char * field,const ValueTypeEx * value)379 FFI_EXPORT int32_t FfiOHOSRelationalStoreLessThanEx(int64_t id, const char *field, const ValueTypeEx *value)
380 {
381 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
382 if (nativeRdbPredicates == nullptr) {
383 return -1;
384 }
385 nativeRdbPredicates->LessThanEx(field, value);
386 return 0;
387 }
388
FfiOHOSRelationalStoreBetween(int64_t id,const char * field,ValueType lowValue,ValueType highValue)389 int32_t FfiOHOSRelationalStoreBetween(int64_t id, const char *field, ValueType lowValue, ValueType highValue)
390 {
391 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
392 if (nativeRdbPredicates == nullptr) {
393 return -1;
394 }
395 nativeRdbPredicates->Between(field, lowValue, highValue);
396 return 0;
397 }
398
FfiOHOSRelationalStoreBetweenEx(int64_t id,const char * field,const ValueTypeEx * lowValue,const ValueTypeEx * highValue)399 FFI_EXPORT int32_t FfiOHOSRelationalStoreBetweenEx(int64_t id, const char *field, const ValueTypeEx *lowValue,
400 const ValueTypeEx *highValue)
401 {
402 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
403 if (nativeRdbPredicates == nullptr) {
404 return -1;
405 }
406 nativeRdbPredicates->BetweenEx(field, lowValue, highValue);
407 return 0;
408 }
409
FfiOHOSRelationalStoreIn(int64_t id,const char * field,ValueType * values,int64_t valuesSize)410 int32_t FfiOHOSRelationalStoreIn(int64_t id, const char *field, ValueType *values, int64_t valuesSize)
411 {
412 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
413 if (nativeRdbPredicates == nullptr) {
414 return -1;
415 }
416 nativeRdbPredicates->In(field, values, valuesSize);
417 return 0;
418 }
419
FfiOHOSRelationalStoreInEx(int64_t id,const char * field,ValueTypeEx * values,int64_t valuesSize)420 FFI_EXPORT int32_t FfiOHOSRelationalStoreInEx(int64_t id, const char *field, ValueTypeEx *values, int64_t valuesSize)
421 {
422 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
423 if (nativeRdbPredicates == nullptr) {
424 return -1;
425 }
426 nativeRdbPredicates->InEx(field, values, valuesSize);
427 return 0;
428 }
429
FfiOHOSRelationalStoreNotIn(int64_t id,const char * field,ValueType * values,int64_t valuesSize)430 int32_t FfiOHOSRelationalStoreNotIn(int64_t id, const char *field, ValueType *values, int64_t valuesSize)
431 {
432 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
433 if (nativeRdbPredicates == nullptr) {
434 return -1;
435 }
436 nativeRdbPredicates->NotIn(field, values, valuesSize);
437 return 0;
438 }
439
FfiOHOSRelationalStoreNotInEx(int64_t id,const char * field,ValueTypeEx * values,int64_t valuesSize)440 FFI_EXPORT int32_t FfiOHOSRelationalStoreNotInEx(int64_t id, const char *field, ValueTypeEx *values, int64_t valuesSize)
441 {
442 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
443 if (nativeRdbPredicates == nullptr) {
444 return -1;
445 }
446 nativeRdbPredicates->NotInEx(field, values, valuesSize);
447 return 0;
448 }
449
FfiOHOSRelationalStoreNotEqualTo(int64_t id,const char * field,ValueType value)450 int32_t FfiOHOSRelationalStoreNotEqualTo(int64_t id, const char *field, ValueType value)
451 {
452 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
453 if (nativeRdbPredicates == nullptr) {
454 return -1;
455 }
456 nativeRdbPredicates->NotEqualTo(field, value);
457 return 0;
458 }
459
FfiOHOSRelationalStoreNotEqualToEx(int64_t id,const char * field,const ValueTypeEx * value)460 FFI_EXPORT int32_t FfiOHOSRelationalStoreNotEqualToEx(int64_t id, const char *field, const ValueTypeEx *value)
461 {
462 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
463 if (nativeRdbPredicates == nullptr) {
464 return -1;
465 }
466 nativeRdbPredicates->NotEqualToEx(field, value);
467 return 0;
468 }
469
470
FfiOHOSRelationalStoreQuery(int64_t id,int64_t predicatesId,char ** columns,int64_t columnsSize,int32_t * errCode)471 int64_t FfiOHOSRelationalStoreQuery(
472 int64_t id, int64_t predicatesId, char **columns, int64_t columnsSize, int32_t *errCode)
473 {
474 if (errCode == nullptr) {
475 return -1;
476 }
477 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
478 if (nativeRdbStore == nullptr) {
479 *errCode = -1;
480 return -1;
481 }
482 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
483 if (nativeRdbPredicates == nullptr) {
484 *errCode = -1;
485 return -1;
486 }
487 auto resultSet = nativeRdbStore->Query(*nativeRdbPredicates, columns, columnsSize);
488 if (resultSet == nullptr) {
489 *errCode = RelationalStoreJsKit::E_INNER_ERROR;
490 return -1;
491 } else {
492 *errCode = RelationalStoreJsKit::OK;
493 }
494 auto nativeResultSet = FFIData::Create<ResultSetImpl>(resultSet);
495 if (nativeResultSet == nullptr) {
496 *errCode = -1;
497 return -1;
498 }
499 return nativeResultSet->GetID();
500 }
501
FfiOHOSRelationalStoreRemoteQuery(int64_t id,char * device,int64_t predicatesId,char ** columns,int64_t columnsSize)502 int64_t FfiOHOSRelationalStoreRemoteQuery(
503 int64_t id, char *device, int64_t predicatesId, char **columns, int64_t columnsSize)
504 {
505 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
506 if (nativeRdbStore == nullptr) {
507 return -1;
508 }
509 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
510 if (nativeRdbPredicates == nullptr) {
511 return -1;
512 }
513 auto resultSet = nativeRdbStore->RemoteQuery(device, *nativeRdbPredicates, columns, columnsSize);
514 if (resultSet == nullptr) {
515 return -1;
516 }
517 auto nativeResultSet = FFIData::Create<ResultSetImpl>(resultSet);
518 if (nativeResultSet == nullptr) {
519 return -1;
520 }
521 return nativeResultSet->GetID();
522 }
523
FfiOHOSRelationalStoreDelete(int64_t id,int64_t predicatesId,int32_t * errCode)524 int64_t FfiOHOSRelationalStoreDelete(int64_t id, int64_t predicatesId, int32_t *errCode)
525 {
526 if (errCode == nullptr) {
527 return -1;
528 }
529 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
530 if (nativeRdbStore == nullptr) {
531 *errCode = -1;
532 return -1;
533 }
534 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
535 if (nativeRdbPredicates == nullptr) {
536 *errCode = -1;
537 return -1;
538 }
539 return nativeRdbStore->Delete(*nativeRdbPredicates, errCode);
540 }
541
FfiOHOSRelationalStoreSetDistributedTables(int64_t id,char ** tables,int64_t tablesSize)542 int32_t FfiOHOSRelationalStoreSetDistributedTables(int64_t id, char **tables, int64_t tablesSize)
543 {
544 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
545 if (nativeRdbStore == nullptr) {
546 return -1;
547 }
548 return nativeRdbStore->SetDistributedTables(tables, tablesSize);
549 }
550
FfiOHOSRelationalStoreSetDistributedTablesType(int64_t id,char ** tables,int64_t tablesSize,int32_t type)551 int32_t FfiOHOSRelationalStoreSetDistributedTablesType(int64_t id, char **tables, int64_t tablesSize, int32_t type)
552 {
553 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
554 if (nativeRdbStore == nullptr) {
555 return -1;
556 }
557 return nativeRdbStore->SetDistributedTables(tables, tablesSize, type);
558 }
559
FfiOHOSRelationalStoreSetDistributedTablesConfig(int64_t id,char ** tables,int64_t tablesSize,int32_t type,RetDistributedConfig distributedConfig)560 int32_t FfiOHOSRelationalStoreSetDistributedTablesConfig(
561 int64_t id, char **tables, int64_t tablesSize, int32_t type, RetDistributedConfig distributedConfig)
562 {
563 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
564 if (nativeRdbStore == nullptr) {
565 return -1;
566 }
567 DistributedRdb::DistributedConfig config{ distributedConfig.autoSync };
568 return nativeRdbStore->SetDistributedTables(tables, tablesSize, type, config);
569 }
570
FfiOHOSRelationalStoreObtainDistributedTableName(int64_t id,const char * device,char * table)571 char *FfiOHOSRelationalStoreObtainDistributedTableName(int64_t id, const char *device, char *table)
572 {
573 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
574 if (nativeRdbStore == nullptr) {
575 return nullptr;
576 }
577 return nativeRdbStore->ObtainDistributedTableName(device, table);
578 }
579
FfiOHOSRelationalStoreBackUp(int64_t id,const char * destName)580 int32_t FfiOHOSRelationalStoreBackUp(int64_t id, const char *destName)
581 {
582 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
583 if (nativeRdbStore == nullptr) {
584 return -1;
585 }
586 return nativeRdbStore->Backup(destName);
587 }
588
FfiOHOSRelationalStoreReStore(int64_t id,const char * srcName)589 int32_t FfiOHOSRelationalStoreReStore(int64_t id, const char *srcName)
590 {
591 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
592 if (nativeRdbStore == nullptr) {
593 return -1;
594 }
595 return nativeRdbStore->Restore(srcName);
596 }
597
FfiOHOSRelationalStoreCommit(int64_t id)598 int32_t FfiOHOSRelationalStoreCommit(int64_t id)
599 {
600 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
601 if (nativeRdbStore == nullptr) {
602 return -1;
603 }
604 return nativeRdbStore->Commit();
605 }
606
FfiOHOSRelationalStoreRollBack(int64_t id)607 int32_t FfiOHOSRelationalStoreRollBack(int64_t id)
608 {
609 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
610 if (nativeRdbStore == nullptr) {
611 return -1;
612 }
613 return nativeRdbStore->RollBack();
614 }
615
FfiOHOSRelationalStoreBeginTransaction(int64_t id)616 int32_t FfiOHOSRelationalStoreBeginTransaction(int64_t id)
617 {
618 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
619 if (nativeRdbStore == nullptr) {
620 return -1;
621 }
622 return nativeRdbStore->BeginTransaction();
623 }
624
FfiOHOSRelationalStoreInsert(int64_t id,const char * table,ValuesBucket valuesBucket,int32_t conflict,int32_t * errCode)625 int64_t FfiOHOSRelationalStoreInsert(
626 int64_t id, const char *table, ValuesBucket valuesBucket, int32_t conflict, int32_t *errCode)
627 {
628 if (errCode == nullptr) {
629 return -1;
630 }
631 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
632 if (nativeRdbStore == nullptr) {
633 *errCode = -1;
634 return -1;
635 }
636 return nativeRdbStore->Insert(table, valuesBucket, conflict, errCode);
637 }
638
FfiOHOSRelationalStoreInsertEx(int64_t id,const char * table,ValuesBucketEx valuesBucket,int32_t conflict,int32_t * errCode)639 FFI_EXPORT int64_t FfiOHOSRelationalStoreInsertEx(
640 int64_t id, const char *table, ValuesBucketEx valuesBucket, int32_t conflict, int32_t *errCode)
641 {
642 if (errCode == nullptr) {
643 return -1;
644 }
645 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
646 if (nativeRdbStore == nullptr) {
647 *errCode = -1;
648 return -1;
649 }
650 return nativeRdbStore->InsertEx(table, valuesBucket, conflict, errCode);
651 }
652
FfiOHOSRelationalStoreUpdate(int64_t id,ValuesBucket valuesBucket,int64_t predicatesId,NativeRdb::ConflictResolution conflictResolution,int32_t * errCode)653 int64_t FfiOHOSRelationalStoreUpdate(int64_t id, ValuesBucket valuesBucket, int64_t predicatesId,
654 NativeRdb::ConflictResolution conflictResolution, int32_t *errCode)
655 {
656 if (errCode == nullptr) {
657 return -1;
658 }
659 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
660 auto nativeRdbSPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
661 if (nativeRdbStore == nullptr || nativeRdbSPredicates == nullptr) {
662 *errCode = -1;
663 return -1;
664 }
665 return nativeRdbStore->Update(valuesBucket, *nativeRdbSPredicates, conflictResolution, errCode);
666 }
667
FfiOHOSRelationalStoreUpdateEx(int64_t id,ValuesBucketEx valuesBucket,int64_t predicatesId,NativeRdb::ConflictResolution conflictResolution,int32_t * errCode)668 FFI_EXPORT int64_t FfiOHOSRelationalStoreUpdateEx(int64_t id, ValuesBucketEx valuesBucket, int64_t predicatesId,
669 NativeRdb::ConflictResolution conflictResolution, int32_t *errCode)
670 {
671 if (errCode == nullptr) {
672 return -1;
673 }
674 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
675 auto nativeRdbSPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
676 if (nativeRdbStore == nullptr || nativeRdbSPredicates == nullptr) {
677 *errCode = -1;
678 return -1;
679 }
680 return nativeRdbStore->UpdateEx(valuesBucket, *nativeRdbSPredicates, conflictResolution, errCode);
681 }
682
FfiOHOSRelationalStoreExecuteSql(int64_t id,const char * sql,int32_t * errCode)683 void FfiOHOSRelationalStoreExecuteSql(int64_t id, const char *sql, int32_t *errCode)
684 {
685 if (errCode == nullptr) {
686 return;
687 }
688 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
689 if (nativeRdbStore == nullptr) {
690 *errCode = -1;
691 return;
692 }
693 nativeRdbStore->ExecuteSql(sql, errCode);
694 }
695
FfiOHOSRelationalStoreSync(int64_t id,int32_t mode,int64_t predicatesId,int32_t * errCode)696 CArrSyncResult FfiOHOSRelationalStoreSync(int64_t id, int32_t mode, int64_t predicatesId, int32_t *errCode)
697 {
698 if (errCode == nullptr) {
699 return CArrSyncResult{ nullptr, nullptr, 0 };
700 }
701 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
702 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
703 if (nativeRdbStore == nullptr || nativeRdbPredicates == nullptr) {
704 *errCode = -1;
705 return CArrSyncResult{ nullptr, nullptr, 0 };
706 }
707 return nativeRdbStore->Sync(mode, *nativeRdbPredicates);
708 }
709
FfiOHOSRelationalStoreGetAllColumnNames(int64_t id)710 CArrStr FfiOHOSRelationalStoreGetAllColumnNames(int64_t id)
711 {
712 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
713 if (nativeResultSet == nullptr) {
714 return CArrStr{ nullptr, 0 };
715 }
716 return nativeResultSet->GetAllColumnNames();
717 }
718
FfiOHOSRelationalStoreGetColumnCount(int64_t id,int32_t * errCode)719 int32_t FfiOHOSRelationalStoreGetColumnCount(int64_t id, int32_t *errCode)
720 {
721 if (errCode == nullptr) {
722 return -1;
723 }
724 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
725 if (nativeResultSet == nullptr) {
726 *errCode = -1;
727 return -1;
728 }
729 return nativeResultSet->GetColumnCount();
730 }
731
FfiOHOSRelationalStoreGetRowCount(int64_t id,int32_t * errCode)732 int32_t FfiOHOSRelationalStoreGetRowCount(int64_t id, int32_t *errCode)
733 {
734 if (errCode == nullptr) {
735 return -1;
736 }
737 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
738 if (nativeResultSet == nullptr) {
739 *errCode = -1;
740 return -1;
741 }
742 return nativeResultSet->GetRowCount();
743 }
744
FfiOHOSRelationalStoreGetRowIndex(int64_t id,int32_t * errCode)745 int32_t FfiOHOSRelationalStoreGetRowIndex(int64_t id, int32_t *errCode)
746 {
747 if (errCode == nullptr) {
748 return -1;
749 }
750 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
751 if (nativeResultSet == nullptr) {
752 *errCode = -1;
753 return -1;
754 }
755 return nativeResultSet->GetRowIndex();
756 }
757
FfiOHOSRelationalStoreIsAtFirstRow(int64_t id,int32_t * errCode)758 bool FfiOHOSRelationalStoreIsAtFirstRow(int64_t id, int32_t *errCode)
759 {
760 if (errCode == nullptr) {
761 return false;
762 }
763 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
764 if (nativeResultSet == nullptr) {
765 *errCode = -1;
766 return false;
767 }
768 *errCode = 0;
769 return nativeResultSet->IsAtFirstRow();
770 }
771
FfiOHOSRelationalStoreIsAtLastRow(int64_t id,int32_t * errCode)772 bool FfiOHOSRelationalStoreIsAtLastRow(int64_t id, int32_t *errCode)
773 {
774 if (errCode == nullptr) {
775 return false;
776 }
777 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
778 if (nativeResultSet == nullptr) {
779 *errCode = -1;
780 return false;
781 }
782 *errCode = 0;
783 return nativeResultSet->IsAtLastRow();
784 }
785
FfiOHOSRelationalStoreIsEnded(int64_t id,int32_t * errCode)786 bool FfiOHOSRelationalStoreIsEnded(int64_t id, int32_t *errCode)
787 {
788 if (errCode == nullptr) {
789 return false;
790 }
791 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
792 if (nativeResultSet == nullptr) {
793 *errCode = -1;
794 return false;
795 }
796 *errCode = 0;
797 return nativeResultSet->IsEnded();
798 }
799
FfiOHOSRelationalStoreIsStarted(int64_t id,int32_t * errCode)800 bool FfiOHOSRelationalStoreIsStarted(int64_t id, int32_t *errCode)
801 {
802 if (errCode == nullptr) {
803 return false;
804 }
805 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
806 if (nativeResultSet == nullptr) {
807 *errCode = -1;
808 return false;
809 }
810 *errCode = 0;
811 return nativeResultSet->IsStarted();
812 }
813
FfiOHOSRelationalStoreIsClosed(int64_t id,int32_t * errCode)814 bool FfiOHOSRelationalStoreIsClosed(int64_t id, int32_t *errCode)
815 {
816 if (errCode == nullptr) {
817 return false;
818 }
819 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
820 if (nativeResultSet == nullptr) {
821 *errCode = -1;
822 return false;
823 }
824 *errCode = 0;
825 return nativeResultSet->IsClosed();
826 }
827
FfiOHOSRelationalStoreGetDouble(int64_t id,int32_t columnIndex,int32_t * rtnCode)828 double FfiOHOSRelationalStoreGetDouble(int64_t id, int32_t columnIndex, int32_t *rtnCode)
829 {
830 if (rtnCode == nullptr) {
831 return -1;
832 }
833 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
834 if (nativeResultSet == nullptr) {
835 *rtnCode = -1;
836 return -1;
837 }
838 return nativeResultSet->GetDouble(columnIndex, rtnCode);
839 }
840
FfiOHOSRelationalStoreGoToRow(int64_t id,int32_t position,int32_t * rtnCode)841 bool FfiOHOSRelationalStoreGoToRow(int64_t id, int32_t position, int32_t *rtnCode)
842 {
843 if (rtnCode == nullptr) {
844 return false;
845 }
846 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
847 if (nativeResultSet == nullptr) {
848 *rtnCode = -1;
849 return false;
850 }
851 return nativeResultSet->GoToRow(position, rtnCode);
852 }
853
FfiOHOSRelationalStoreGoToPreviousRow(int64_t id,int32_t * rtnCode)854 bool FfiOHOSRelationalStoreGoToPreviousRow(int64_t id, int32_t *rtnCode)
855 {
856 if (rtnCode == nullptr) {
857 return false;
858 }
859 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
860 if (nativeResultSet == nullptr) {
861 *rtnCode = -1;
862 return false;
863 }
864 return nativeResultSet->GoToPreviousRow(rtnCode);
865 }
866
FfiOHOSRelationalStoreGoToLastRow(int64_t id,int32_t * rtnCode)867 bool FfiOHOSRelationalStoreGoToLastRow(int64_t id, int32_t *rtnCode)
868 {
869 if (rtnCode == nullptr) {
870 return false;
871 }
872 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
873 if (nativeResultSet == nullptr) {
874 *rtnCode = -1;
875 return false;
876 }
877 return nativeResultSet->GoToLastRow(rtnCode);
878 }
879
FfiOHOSRelationalStoreGetColumnName(int64_t id,int32_t columnIndex,int32_t * rtnCode)880 char *FfiOHOSRelationalStoreGetColumnName(int64_t id, int32_t columnIndex, int32_t *rtnCode)
881 {
882 if (rtnCode == nullptr) {
883 return nullptr;
884 }
885 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
886 if (nativeResultSet == nullptr) {
887 *rtnCode = -1;
888 return nullptr;
889 }
890 return nativeResultSet->GetColumnName(columnIndex, rtnCode);
891 }
892
FfiOHOSRelationalStoreIsColumnNull(int64_t id,int32_t columnIndex,int32_t * rtnCode)893 bool FfiOHOSRelationalStoreIsColumnNull(int64_t id, int32_t columnIndex, int32_t *rtnCode)
894 {
895 if (rtnCode == nullptr) {
896 return false;
897 }
898 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
899 if (nativeResultSet == nullptr) {
900 *rtnCode = -1;
901 return false;
902 }
903 return nativeResultSet->IsColumnNull(columnIndex, rtnCode);
904 }
905
FfiOHOSRelationalStoreGetAsset(int64_t id,int32_t columnIndex,int32_t * rtnCode)906 Asset FfiOHOSRelationalStoreGetAsset(int64_t id, int32_t columnIndex, int32_t *rtnCode)
907 {
908 if (rtnCode == nullptr) {
909 return Asset{ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0 };
910 }
911 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
912 if (nativeResultSet == nullptr) {
913 *rtnCode = -1;
914 return Asset{ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0 };
915 }
916 return nativeResultSet->GetAsset(columnIndex, rtnCode);
917 }
918
FfiOHOSRelationalStoreClose(int64_t id)919 int32_t FfiOHOSRelationalStoreClose(int64_t id)
920 {
921 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
922 if (nativeResultSet == nullptr) {
923 return -1;
924 }
925 return nativeResultSet->Close();
926 }
927
FfiOHOSRelationalStoreGetColumnIndex(int64_t id,char * columnName,int32_t * rtnCode)928 int32_t FfiOHOSRelationalStoreGetColumnIndex(int64_t id, char *columnName, int32_t *rtnCode)
929 {
930 if (rtnCode == nullptr) {
931 return -1;
932 }
933 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
934 if (nativeResultSet == nullptr) {
935 *rtnCode = -1;
936 return -1;
937 }
938 return nativeResultSet->GetColumnIndex(columnName, rtnCode);
939 }
940
FfiOHOSRelationalStoreGetString(int64_t id,int32_t columnIndex,int32_t * rtnCode)941 char *FfiOHOSRelationalStoreGetString(int64_t id, int32_t columnIndex, int32_t *rtnCode)
942 {
943 if (rtnCode == nullptr) {
944 return nullptr;
945 }
946 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
947 if (nativeResultSet == nullptr) {
948 *rtnCode = -1;
949 return nullptr;
950 }
951 return nativeResultSet->GetString(columnIndex, rtnCode);
952 }
953
FfiOHOSRelationalStoreGoToFirstRow(int64_t id,int32_t * rtnCode)954 bool FfiOHOSRelationalStoreGoToFirstRow(int64_t id, int32_t *rtnCode)
955 {
956 if (rtnCode == nullptr) {
957 return false;
958 }
959 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
960 if (nativeResultSet == nullptr) {
961 *rtnCode = -1;
962 return false;
963 }
964 return nativeResultSet->GoToFirstRow(rtnCode);
965 }
966
FfiOHOSRelationalStoreGetLong(int64_t id,int32_t columnIndex,int32_t * rtnCode)967 int64_t FfiOHOSRelationalStoreGetLong(int64_t id, int32_t columnIndex, int32_t *rtnCode)
968 {
969 if (rtnCode == nullptr) {
970 return -1;
971 }
972 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
973 if (nativeResultSet == nullptr) {
974 *rtnCode = -1;
975 return -1;
976 }
977 return nativeResultSet->GetLong(columnIndex, rtnCode);
978 }
979
FfiOHOSRelationalStoreGoToNextRow(int64_t id,int32_t * rtnCode)980 bool FfiOHOSRelationalStoreGoToNextRow(int64_t id, int32_t *rtnCode)
981 {
982 if (rtnCode == nullptr) {
983 return false;
984 }
985 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
986 if (nativeResultSet == nullptr) {
987 *rtnCode = -1;
988 return false;
989 }
990 return nativeResultSet->GoToNextRow(rtnCode);
991 }
992
FfiOHOSRelationalStoreGetBlob(int64_t id,int32_t columnIndex,int32_t * rtnCode)993 CArrUI8 FfiOHOSRelationalStoreGetBlob(int64_t id, int32_t columnIndex, int32_t *rtnCode)
994 {
995 if (rtnCode == nullptr) {
996 return CArrUI8{ nullptr, 0 };
997 }
998 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
999 if (nativeResultSet == nullptr) {
1000 *rtnCode = -1;
1001 return CArrUI8{ nullptr, 0 };
1002 }
1003 return nativeResultSet->GetBlob(columnIndex, rtnCode);
1004 }
1005
FfiOHOSRelationalStoreGoTo(int64_t id,int32_t offset,int32_t * rtnCode)1006 bool FfiOHOSRelationalStoreGoTo(int64_t id, int32_t offset, int32_t *rtnCode)
1007 {
1008 if (rtnCode == nullptr) {
1009 return false;
1010 }
1011 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
1012 if (nativeResultSet == nullptr) {
1013 *rtnCode = -1;
1014 return false;
1015 }
1016 return nativeResultSet->GoTo(offset, rtnCode);
1017 }
1018
FfiOHOSRelationalStoreGetAssets(int64_t id,int32_t columnIndex,int32_t * rtnCode)1019 Assets FfiOHOSRelationalStoreGetAssets(int64_t id, int32_t columnIndex, int32_t *rtnCode)
1020 {
1021 if (rtnCode == nullptr) {
1022 return Assets{ nullptr, 0 };
1023 }
1024 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
1025 if (nativeResultSet == nullptr) {
1026 *rtnCode = -1;
1027 return Assets{ nullptr, 0 };
1028 }
1029 return nativeResultSet->GetAssets(columnIndex, rtnCode);
1030 }
1031
FfiOHOSRelationalStoreGetRow(int64_t id,int32_t * errCode)1032 ValuesBucket FfiOHOSRelationalStoreGetRow(int64_t id, int32_t *errCode)
1033 {
1034 if (errCode == nullptr) {
1035 return ValuesBucket{ nullptr, nullptr, 0 };
1036 }
1037 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
1038 if (nativeResultSet == nullptr) {
1039 *errCode = -1;
1040 return ValuesBucket{ nullptr, nullptr, 0 };
1041 }
1042 return nativeResultSet->GetRow(errCode);
1043 }
1044
FfiOHOSRelationalStoreGetRowEx(int64_t id,int32_t * errCode)1045 FFI_EXPORT ValuesBucketEx FfiOHOSRelationalStoreGetRowEx(int64_t id, int32_t *errCode)
1046 {
1047 if (errCode == nullptr) {
1048 return ValuesBucketEx{ nullptr, nullptr, 0 };
1049 }
1050 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
1051 if (nativeResultSet == nullptr) {
1052 *errCode = -1;
1053 return ValuesBucketEx{ nullptr, nullptr, 0 };
1054 }
1055 return nativeResultSet->GetRowEx(errCode);
1056 }
1057
FfiOHOSRelationalStoreResultSetGetValue(int64_t id,int32_t columnIndex,int32_t * errCode)1058 FFI_EXPORT ValueTypeEx FfiOHOSRelationalStoreResultSetGetValue(int64_t id, int32_t columnIndex, int32_t* errCode)
1059 {
1060 if (errCode == nullptr) {
1061 return ValueTypeEx{ 0 };
1062 }
1063 auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
1064 if (nativeResultSet == nullptr) {
1065 *errCode = -1;
1066 return ValueTypeEx{ 0 };
1067 }
1068 return nativeResultSet->GetValue(columnIndex, errCode);
1069 }
1070
FfiOHOSRelationalStoreCleanDirtyData(int64_t id,const char * tableName,uint64_t cursor)1071 int32_t FfiOHOSRelationalStoreCleanDirtyData(int64_t id, const char *tableName, uint64_t cursor)
1072 {
1073 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1074 if (nativeRdbStore == nullptr) {
1075 return -1;
1076 }
1077 return nativeRdbStore->CleanDirtyData(tableName, cursor);
1078 }
1079
FfiOHOSRelationalStoreBatchInsert(int64_t id,const char * tableName,ValuesBucket * values,int64_t valuesSize,int64_t * insertNum)1080 int32_t FfiOHOSRelationalStoreBatchInsert(
1081 int64_t id, const char *tableName, ValuesBucket *values, int64_t valuesSize, int64_t *insertNum)
1082 {
1083 if (insertNum == nullptr) {
1084 return -1;
1085 }
1086 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1087 if (nativeRdbStore == nullptr) {
1088 return -1;
1089 }
1090 return nativeRdbStore->BatchInsert(*insertNum, tableName, values, valuesSize);
1091 }
1092
FfiOHOSRelationalStoreBatchInsertEx(int64_t id,const char * tableName,ValuesBucketEx * values,int64_t valuesSize,int64_t * insertNum)1093 FFI_EXPORT int32_t FfiOHOSRelationalStoreBatchInsertEx(
1094 int64_t id, const char *tableName, ValuesBucketEx *values, int64_t valuesSize, int64_t *insertNum)
1095 {
1096 if (insertNum == nullptr) {
1097 return -1;
1098 }
1099 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1100 if (nativeRdbStore == nullptr) {
1101 return -1;
1102 }
1103 return nativeRdbStore->BatchInsertEx(*insertNum, tableName, values, valuesSize);
1104 }
1105
FfiOHOSRelationalStoreQuerySql(int64_t id,const char * sql,ValueType * bindArgs,int64_t size,int32_t * errCode)1106 int64_t FfiOHOSRelationalStoreQuerySql(int64_t id, const char *sql, ValueType *bindArgs, int64_t size, int32_t *errCode)
1107 {
1108 if (errCode == nullptr) {
1109 return -1;
1110 }
1111 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1112 if (nativeRdbStore == nullptr) {
1113 *errCode = RelationalStoreJsKit::E_INNER_ERROR;
1114 return -1;
1115 }
1116 auto resultSet = nativeRdbStore->QuerySql(sql, bindArgs, size);
1117 if (resultSet == nullptr) {
1118 *errCode = RelationalStoreJsKit::E_INNER_ERROR;
1119 return -1;
1120 } else {
1121 *errCode = RelationalStoreJsKit::OK;
1122 }
1123 auto nativeResultSet = FFIData::Create<ResultSetImpl>(resultSet);
1124 if (nativeResultSet == nullptr) {
1125 *errCode = -1;
1126 return -1;
1127 }
1128 return nativeResultSet->GetID();
1129 }
1130
FfiOHOSRelationalStoreQuerySqlEx(int64_t id,const char * sql,ValueTypeEx * bindArgs,int64_t size,int32_t * errCode)1131 FFI_EXPORT int64_t FfiOHOSRelationalStoreQuerySqlEx(int64_t id, const char *sql, ValueTypeEx *bindArgs, int64_t size,
1132 int32_t *errCode)
1133 {
1134 if (errCode == nullptr) {
1135 return -1;
1136 }
1137 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1138 if (nativeRdbStore == nullptr) {
1139 *errCode = RelationalStoreJsKit::E_INNER_ERROR;
1140 return -1;
1141 }
1142 auto resultSet = nativeRdbStore->QuerySqlEx(sql, bindArgs, size);
1143 if (resultSet == nullptr) {
1144 *errCode = RelationalStoreJsKit::E_INNER_ERROR;
1145 return -1;
1146 } else {
1147 *errCode = RelationalStoreJsKit::OK;
1148 }
1149 auto nativeResultSet = FFIData::Create<ResultSetImpl>(resultSet);
1150 if (nativeResultSet == nullptr) {
1151 *errCode = -1;
1152 return -1;
1153 }
1154 return nativeResultSet->GetID();
1155 }
1156
FfiOHOSRelationalStoreExecuteSqlBindArgs(int64_t id,char * sql,ValueType * bindArgs,int64_t bindArgsSize,int32_t * errCode)1157 void FfiOHOSRelationalStoreExecuteSqlBindArgs(
1158 int64_t id, char *sql, ValueType *bindArgs, int64_t bindArgsSize, int32_t *errCode)
1159 {
1160 if (errCode == nullptr) {
1161 return;
1162 }
1163 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1164 if (nativeRdbStore == nullptr) {
1165 *errCode = -1;
1166 return;
1167 }
1168 nativeRdbStore->ExecuteSql(sql, bindArgs, bindArgsSize, errCode);
1169 }
1170
FfiOHOSRelationalStoreExecuteSqlBindArgsEx(int64_t id,char * sql,ValueTypeEx * bindArgs,int64_t bindArgsSize,int32_t * errCode)1171 FFI_EXPORT void FfiOHOSRelationalStoreExecuteSqlBindArgsEx(
1172 int64_t id, char *sql, ValueTypeEx *bindArgs, int64_t bindArgsSize, int32_t *errCode)
1173 {
1174 if (errCode == nullptr) {
1175 return;
1176 }
1177 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1178 if (nativeRdbStore == nullptr) {
1179 *errCode = -1;
1180 return;
1181 }
1182 nativeRdbStore->ExecuteSqlEx(sql, bindArgs, bindArgsSize, errCode);
1183 }
1184
FfiOHOSRelationalStoreOn(int64_t id,const char * event,bool interProcess,int64_t callback,void (* callbackRef)())1185 int32_t FfiOHOSRelationalStoreOn(
1186 int64_t id, const char *event, bool interProcess, int64_t callback, void (*callbackRef)())
1187 {
1188 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1189 if (nativeRdbStore == nullptr) {
1190 return -1;
1191 }
1192 auto onChange = [lambda = CJLambda::Create(callbackRef)]() -> void { lambda(); };
1193 return nativeRdbStore->RegisterObserver(event, interProcess, callback, onChange);
1194 }
1195
FfiOHOSRelationalStoreOnArrStr(int64_t id,int32_t subscribeType,int64_t callbackId)1196 int32_t FfiOHOSRelationalStoreOnArrStr(int64_t id, int32_t subscribeType, int64_t callbackId)
1197 {
1198 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1199 if (nativeRdbStore == nullptr) {
1200 return -1;
1201 }
1202 return nativeRdbStore->RegisterObserverArrStr(subscribeType, callbackId);
1203 }
1204
FfiOHOSRelationalStoreOnChangeInfo(int64_t id,int32_t subscribeType,int64_t callbackId)1205 int32_t FfiOHOSRelationalStoreOnChangeInfo(int64_t id, int32_t subscribeType, int64_t callbackId)
1206 {
1207 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1208 if (nativeRdbStore == nullptr) {
1209 return -1;
1210 }
1211 return nativeRdbStore->RegisterObserverChangeInfo(subscribeType, callbackId);
1212 }
1213
FfiOHOSRelationalStoreOnProgressDetails(int64_t id,int64_t callbackId)1214 int32_t FfiOHOSRelationalStoreOnProgressDetails(int64_t id, int64_t callbackId)
1215 {
1216 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1217 if (nativeRdbStore == nullptr) {
1218 return -1;
1219 }
1220 return nativeRdbStore->RegisterObserverProgressDetails(callbackId);
1221 }
1222
FfiOHOSRelationalStoreOff(int64_t id,const char * event,bool interProcess,int64_t callback)1223 int32_t FfiOHOSRelationalStoreOff(int64_t id, const char *event, bool interProcess, int64_t callback)
1224 {
1225 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1226 if (nativeRdbStore == nullptr) {
1227 return -1;
1228 }
1229 return nativeRdbStore->UnRegisterObserver(event, interProcess, callback);
1230 }
1231
FfiOHOSRelationalStoreOffAll(int64_t id,const char * event,bool interProcess)1232 int32_t FfiOHOSRelationalStoreOffAll(int64_t id, const char *event, bool interProcess)
1233 {
1234 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1235 if (nativeRdbStore == nullptr) {
1236 return -1;
1237 }
1238 return nativeRdbStore->UnRegisterAllObserver(event, interProcess);
1239 }
1240
FfiOHOSRelationalStoreOffArrStrChangeInfo(int64_t id,int32_t subscribeType,int64_t callbackId)1241 int32_t FfiOHOSRelationalStoreOffArrStrChangeInfo(int64_t id, int32_t subscribeType, int64_t callbackId)
1242 {
1243 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1244 if (nativeRdbStore == nullptr) {
1245 return -1;
1246 }
1247 return nativeRdbStore->UnRegisterObserverArrStrChangeInfo(subscribeType, callbackId);
1248 }
1249
FfiOHOSRelationalStoreOffArrStrChangeInfoAll(int64_t id,int32_t subscribeType)1250 int32_t FfiOHOSRelationalStoreOffArrStrChangeInfoAll(int64_t id, int32_t subscribeType)
1251 {
1252 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1253 if (nativeRdbStore == nullptr) {
1254 return -1;
1255 }
1256 return nativeRdbStore->UnRegisterObserverArrStrChangeInfoAll(subscribeType);
1257 }
1258
FfiOHOSRelationalStoreOffProgressDetails(int64_t id,int64_t callbackId)1259 int32_t FfiOHOSRelationalStoreOffProgressDetails(int64_t id, int64_t callbackId)
1260 {
1261 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1262 if (nativeRdbStore == nullptr) {
1263 return -1;
1264 }
1265 return nativeRdbStore->UnRegisterObserverProgressDetails(callbackId);
1266 }
1267
FfiOHOSRelationalStoreOffProgressDetailsAll(int64_t id)1268 int32_t FfiOHOSRelationalStoreOffProgressDetailsAll(int64_t id)
1269 {
1270 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1271 if (nativeRdbStore == nullptr) {
1272 return -1;
1273 }
1274 return nativeRdbStore->UnRegisterObserverProgressDetailsAll();
1275 }
1276
FfiOHOSRelationalStoreEmit(int64_t id,const char * event)1277 int32_t FfiOHOSRelationalStoreEmit(int64_t id, const char *event)
1278 {
1279 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1280 if (nativeRdbStore == nullptr) {
1281 return -1;
1282 }
1283 return nativeRdbStore->Emit(event);
1284 }
1285
FfiOHOSRelationalStoreCloudSync(int64_t id,int32_t mode,CArrStr tables,int64_t callbackId)1286 int32_t FfiOHOSRelationalStoreCloudSync(int64_t id, int32_t mode, CArrStr tables, int64_t callbackId)
1287 {
1288 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1289 if (nativeRdbStore == nullptr) {
1290 return -1;
1291 }
1292 return nativeRdbStore->CloudSync(mode, tables, callbackId);
1293 }
1294
FfiOHOSRelationalStoreGetVersion(int64_t id,int32_t * errCode)1295 int32_t FfiOHOSRelationalStoreGetVersion(int64_t id, int32_t *errCode)
1296 {
1297 if (errCode == nullptr) {
1298 return -1;
1299 }
1300 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1301 if (nativeRdbStore == nullptr) {
1302 *errCode = -1;
1303 return -1;
1304 }
1305 return nativeRdbStore->GetVersion(*errCode);
1306 }
1307
FfiOHOSRelationalStoreSetVersion(int64_t id,int32_t value,int32_t * errCode)1308 void FfiOHOSRelationalStoreSetVersion(int64_t id, int32_t value, int32_t *errCode)
1309 {
1310 if (errCode == nullptr) {
1311 return;
1312 }
1313 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1314 if (nativeRdbStore == nullptr) {
1315 *errCode = -1;
1316 return;
1317 }
1318 nativeRdbStore->SetVersion(value, *errCode);
1319 }
1320
FfiOHOSRelationalStoreGetModifyTime(int64_t id,char * cTable,char * cColumnName,CArrPRIKeyType cPrimaryKeys,int32_t * errCode)1321 ModifyTime FfiOHOSRelationalStoreGetModifyTime(
1322 int64_t id, char *cTable, char *cColumnName, CArrPRIKeyType cPrimaryKeys, int32_t *errCode)
1323 {
1324 if (errCode == nullptr) {
1325 return ModifyTime{ 0 };
1326 }
1327 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1328 if (nativeRdbStore == nullptr) {
1329 *errCode = -1;
1330 return ModifyTime{ 0 };
1331 }
1332 return nativeRdbStore->GetModifyTime(cTable, cColumnName, cPrimaryKeys, *errCode);
1333 }
1334
FfiOHOSRelationalStoreRdbPredicatesNotContains(int64_t id,const char * field,const char * value)1335 FFI_EXPORT int32_t FfiOHOSRelationalStoreRdbPredicatesNotContains(int64_t id, const char *field, const char *value)
1336 {
1337 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
1338 if (nativeRdbPredicates == nullptr) {
1339 return -1;
1340 }
1341 nativeRdbPredicates->NotContains(field, value);
1342 return 0;
1343 }
1344
FfiOHOSRelationalStoreRdbPredicatesNotLike(int64_t id,const char * field,const char * value)1345 FFI_EXPORT int32_t FfiOHOSRelationalStoreRdbPredicatesNotLike(int64_t id, const char *field, const char *value)
1346 {
1347 auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
1348 if (nativeRdbPredicates == nullptr) {
1349 return -1;
1350 }
1351 nativeRdbPredicates->NotLike(field, value);
1352 return 0;
1353 }
1354
FfiOHOSRelationalStoreRdbStoreGetRebuilt(int64_t id,int32_t * errCode)1355 FFI_EXPORT int32_t FfiOHOSRelationalStoreRdbStoreGetRebuilt(int64_t id, int32_t *errCode)
1356 {
1357 if (errCode == nullptr) {
1358 return -1;
1359 }
1360 auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
1361 if (nativeRdbStore == nullptr) {
1362 *errCode = -1;
1363 return 0;
1364 }
1365 return nativeRdbStore->GetRebuilt();
1366 }
1367 }
1368 } // namespace Relational
1369 } // namespace OHOS
1370