• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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