• 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 
FfiOHOSRelationalStoreDeleteRdbStore(OHOS::AbilityRuntime::Context * context,const char * name,int32_t * errCode)36 void FfiOHOSRelationalStoreDeleteRdbStore(OHOS::AbilityRuntime::Context *context, const char *name, int32_t *errCode)
37 {
38     DeleteRdbStore(context, name, errCode);
39 }
40 
FfiOHOSRelationalStoreDeleteRdbStoreConfig(OHOS::AbilityRuntime::Context * context,StoreConfig config,int32_t * errCode)41 void FfiOHOSRelationalStoreDeleteRdbStoreConfig(
42     OHOS::AbilityRuntime::Context *context, StoreConfig config, int32_t *errCode)
43 {
44     DeleteRdbStoreConfig(context, config, errCode);
45 }
46 
FfiOHOSRelationalStoreRdbPredicatesConstructor(const char * tableName)47 int64_t FfiOHOSRelationalStoreRdbPredicatesConstructor(const char *tableName)
48 {
49     auto nativeRdbPredicates = FFIData::Create<RdbPredicatesImpl>(tableName);
50     if (nativeRdbPredicates == nullptr) {
51         return -1;
52     }
53     return nativeRdbPredicates->GetID();
54 }
55 
FfiOHOSRelationalStoreInDevices(int64_t id,const char ** devicesArray,int64_t devicesSize)56 int32_t FfiOHOSRelationalStoreInDevices(int64_t id, const char **devicesArray, int64_t devicesSize)
57 {
58     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
59     if (nativeRdbPredicates == nullptr) {
60         return -1;
61     }
62     nativeRdbPredicates->InDevices(devicesArray, devicesSize);
63     return 0;
64 }
65 
FfiOHOSRelationalStoreInAllDevices(int64_t id)66 int32_t FfiOHOSRelationalStoreInAllDevices(int64_t id)
67 {
68     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
69     if (nativeRdbPredicates == nullptr) {
70         return -1;
71     }
72     nativeRdbPredicates->InAllDevices();
73     return 0;
74 }
75 
FfiOHOSRelationalStoreBeginWrap(int64_t id)76 int32_t FfiOHOSRelationalStoreBeginWrap(int64_t id)
77 {
78     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
79     if (nativeRdbPredicates == nullptr) {
80         return -1;
81     }
82     nativeRdbPredicates->BeginWrap();
83     return 0;
84 }
85 
FfiOHOSRelationalStoreEndWrap(int64_t id)86 int32_t FfiOHOSRelationalStoreEndWrap(int64_t id)
87 {
88     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
89     if (nativeRdbPredicates == nullptr) {
90         return -1;
91     }
92     nativeRdbPredicates->EndWrap();
93     return 0;
94 }
95 
FfiOHOSRelationalStoreOr(int64_t id)96 int32_t FfiOHOSRelationalStoreOr(int64_t id)
97 {
98     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
99     if (nativeRdbPredicates == nullptr) {
100         return -1;
101     }
102     nativeRdbPredicates->Or();
103     return 0;
104 }
105 
FfiOHOSRelationalStoreAnd(int64_t id)106 int32_t FfiOHOSRelationalStoreAnd(int64_t id)
107 {
108     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
109     if (nativeRdbPredicates == nullptr) {
110         return -1;
111     }
112     nativeRdbPredicates->And();
113     return 0;
114 }
115 
FfiOHOSRelationalStoreContains(int64_t id,const char * field,const char * value)116 int32_t FfiOHOSRelationalStoreContains(int64_t id, const char *field, const char *value)
117 {
118     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
119     if (nativeRdbPredicates == nullptr) {
120         return -1;
121     }
122     nativeRdbPredicates->Contains(field, value);
123     return 0;
124 }
125 
FfiOHOSRelationalStoreBeginsWith(int64_t id,const char * field,const char * value)126 int32_t FfiOHOSRelationalStoreBeginsWith(int64_t id, const char *field, const char *value)
127 {
128     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
129     if (nativeRdbPredicates == nullptr) {
130         return -1;
131     }
132     nativeRdbPredicates->BeginsWith(field, value);
133     return 0;
134 }
135 
FfiOHOSRelationalStoreEndsWith(int64_t id,const char * field,const char * value)136 int32_t FfiOHOSRelationalStoreEndsWith(int64_t id, const char *field, const char *value)
137 {
138     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
139     if (nativeRdbPredicates == nullptr) {
140         return -1;
141     }
142     nativeRdbPredicates->EndsWith(field, value);
143     return 0;
144 }
145 
FfiOHOSRelationalStoreIsNull(int64_t id,const char * field)146 int32_t FfiOHOSRelationalStoreIsNull(int64_t id, const char *field)
147 {
148     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
149     if (nativeRdbPredicates == nullptr) {
150         return -1;
151     }
152     nativeRdbPredicates->IsNull(field);
153     return 0;
154 }
155 
FfiOHOSRelationalStoreIsNotNull(int64_t id,const char * field)156 int32_t FfiOHOSRelationalStoreIsNotNull(int64_t id, const char *field)
157 {
158     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
159     if (nativeRdbPredicates == nullptr) {
160         return -1;
161     }
162     nativeRdbPredicates->IsNotNull(field);
163     return 0;
164 }
165 
FfiOHOSRelationalStoreLike(int64_t id,const char * field,const char * value)166 int32_t FfiOHOSRelationalStoreLike(int64_t id, const char *field, const char *value)
167 {
168     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
169     if (nativeRdbPredicates == nullptr) {
170         return -1;
171     }
172     nativeRdbPredicates->Like(field, value);
173     return 0;
174 }
175 
FfiOHOSRelationalStoreGlob(int64_t id,const char * field,const char * value)176 int32_t FfiOHOSRelationalStoreGlob(int64_t id, const char *field, const char *value)
177 {
178     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
179     if (nativeRdbPredicates == nullptr) {
180         return -1;
181     }
182     nativeRdbPredicates->Glob(field, value);
183     return 0;
184 }
185 
FfiOHOSRelationalStoreOrderByAsc(int64_t id,const char * field)186 int32_t FfiOHOSRelationalStoreOrderByAsc(int64_t id, const char *field)
187 {
188     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
189     if (nativeRdbPredicates == nullptr) {
190         return -1;
191     }
192     nativeRdbPredicates->OrderByAsc(field);
193     return 0;
194 }
195 
FfiOHOSRelationalStoreOrderByDesc(int64_t id,const char * field)196 int32_t FfiOHOSRelationalStoreOrderByDesc(int64_t id, const char *field)
197 {
198     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
199     if (nativeRdbPredicates == nullptr) {
200         return -1;
201     }
202     nativeRdbPredicates->OrderByDesc(field);
203     return 0;
204 }
205 
FfiOHOSRelationalStoreDistinct(int64_t id)206 int32_t FfiOHOSRelationalStoreDistinct(int64_t id)
207 {
208     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
209     if (nativeRdbPredicates == nullptr) {
210         return -1;
211     }
212     nativeRdbPredicates->Distinct();
213     return 0;
214 }
215 
FfiOHOSRelationalStoreLimitAs(int64_t id,int32_t value)216 int32_t FfiOHOSRelationalStoreLimitAs(int64_t id, int32_t value)
217 {
218     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
219     if (nativeRdbPredicates == nullptr) {
220         return -1;
221     }
222     nativeRdbPredicates->LimitAs(value);
223     return 0;
224 }
225 
FfiOHOSRelationalStoreOffsetAs(int64_t id,int32_t rowOffset)226 int32_t FfiOHOSRelationalStoreOffsetAs(int64_t id, int32_t rowOffset)
227 {
228     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
229     if (nativeRdbPredicates == nullptr) {
230         return -1;
231     }
232     nativeRdbPredicates->OffsetAs(rowOffset);
233     return 0;
234 }
235 
FfiOHOSRelationalStoreGroupBy(int64_t id,const char ** fieldsArray,int64_t fieldsSize)236 int32_t FfiOHOSRelationalStoreGroupBy(int64_t id, const char **fieldsArray, int64_t fieldsSize)
237 {
238     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
239     if (nativeRdbPredicates == nullptr) {
240         return -1;
241     }
242     nativeRdbPredicates->GroupBy(fieldsArray, fieldsSize);
243     return 0;
244 }
245 
FfiOHOSRelationalStoreIndexedBy(int64_t id,const char * field)246 int32_t FfiOHOSRelationalStoreIndexedBy(int64_t id, const char *field)
247 {
248     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
249     if (nativeRdbPredicates == nullptr) {
250         return -1;
251     }
252     nativeRdbPredicates->IndexedBy(field);
253     return 0;
254 }
255 
FfiOHOSRelationalStoreLessThanOrEqualTo(int64_t id,const char * field,ValueType value)256 int32_t FfiOHOSRelationalStoreLessThanOrEqualTo(int64_t id, const char *field, ValueType value)
257 {
258     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
259     if (nativeRdbPredicates == nullptr) {
260         return -1;
261     }
262     nativeRdbPredicates->LessThanOrEqualTo(field, value);
263     return 0;
264 }
265 
FfiOHOSRelationalStoreEqualTo(int64_t id,const char * field,ValueType value)266 int32_t FfiOHOSRelationalStoreEqualTo(int64_t id, const char *field, ValueType value)
267 {
268     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
269     if (nativeRdbPredicates == nullptr) {
270         return -1;
271     }
272     nativeRdbPredicates->EqualTo(field, value);
273     return 0;
274 }
275 
FfiOHOSRelationalStoreGreaterThanOrEqualTo(int64_t id,const char * field,ValueType value)276 int32_t FfiOHOSRelationalStoreGreaterThanOrEqualTo(int64_t id, const char *field, ValueType value)
277 {
278     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
279     if (nativeRdbPredicates == nullptr) {
280         return -1;
281     }
282     nativeRdbPredicates->GreaterThanOrEqualTo(field, value);
283     return 0;
284 }
285 
FfiOHOSRelationalStoreGreaterThan(int64_t id,const char * field,ValueType value)286 int32_t FfiOHOSRelationalStoreGreaterThan(int64_t id, const char *field, ValueType value)
287 {
288     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
289     if (nativeRdbPredicates == nullptr) {
290         return -1;
291     }
292     nativeRdbPredicates->GreaterThan(field, value);
293     return 0;
294 }
295 
FfiOHOSRelationalStoreNotBetween(int64_t id,const char * field,ValueType lowValue,ValueType highValue)296 int32_t FfiOHOSRelationalStoreNotBetween(int64_t id, const char *field, ValueType lowValue, ValueType highValue)
297 {
298     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
299     if (nativeRdbPredicates == nullptr) {
300         return -1;
301     }
302     nativeRdbPredicates->NotBetween(field, lowValue, highValue);
303     return 0;
304 }
305 
FfiOHOSRelationalStoreLessThan(int64_t id,const char * field,ValueType value)306 int32_t FfiOHOSRelationalStoreLessThan(int64_t id, const char *field, ValueType value)
307 {
308     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
309     if (nativeRdbPredicates == nullptr) {
310         return -1;
311     }
312     nativeRdbPredicates->LessThan(field, value);
313     return 0;
314 }
315 
FfiOHOSRelationalStoreBetween(int64_t id,const char * field,ValueType lowValue,ValueType highValue)316 int32_t FfiOHOSRelationalStoreBetween(int64_t id, const char *field, ValueType lowValue, ValueType highValue)
317 {
318     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
319     if (nativeRdbPredicates == nullptr) {
320         return -1;
321     }
322     nativeRdbPredicates->Between(field, lowValue, highValue);
323     return 0;
324 }
325 
FfiOHOSRelationalStoreIn(int64_t id,const char * field,ValueType * values,int64_t valuesSize)326 int32_t FfiOHOSRelationalStoreIn(int64_t id, const char *field, ValueType *values, int64_t valuesSize)
327 {
328     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
329     if (nativeRdbPredicates == nullptr) {
330         return -1;
331     }
332     nativeRdbPredicates->In(field, values, valuesSize);
333     return 0;
334 }
335 
FfiOHOSRelationalStoreNotIn(int64_t id,const char * field,ValueType * values,int64_t valuesSize)336 int32_t FfiOHOSRelationalStoreNotIn(int64_t id, const char *field, ValueType *values, int64_t valuesSize)
337 {
338     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
339     if (nativeRdbPredicates == nullptr) {
340         return -1;
341     }
342     nativeRdbPredicates->NotIn(field, values, valuesSize);
343     return 0;
344 }
345 
FfiOHOSRelationalStoreNotEqualTo(int64_t id,const char * field,ValueType value)346 int32_t FfiOHOSRelationalStoreNotEqualTo(int64_t id, const char *field, ValueType value)
347 {
348     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(id);
349     if (nativeRdbPredicates == nullptr) {
350         return -1;
351     }
352     nativeRdbPredicates->NotEqualTo(field, value);
353     return 0;
354 }
355 
FfiOHOSRelationalStoreQuery(int64_t id,int64_t predicatesId,char ** columns,int64_t columnsSize,int32_t * errCode)356 int64_t FfiOHOSRelationalStoreQuery(
357     int64_t id, int64_t predicatesId, char **columns, int64_t columnsSize, int32_t *errCode)
358 {
359     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
360     if (nativeRdbStore == nullptr) {
361         *errCode = -1;
362         return -1;
363     }
364     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
365     if (nativeRdbPredicates == nullptr) {
366         *errCode = -1;
367         return -1;
368     }
369     auto resultSet = nativeRdbStore->Query(*nativeRdbPredicates, columns, columnsSize);
370     if (resultSet == nullptr) {
371         *errCode = RelationalStoreJsKit::E_INNER_ERROR;
372         return -1;
373     } else {
374         *errCode = RelationalStoreJsKit::OK;
375     }
376     auto nativeResultSet = FFIData::Create<ResultSetImpl>(resultSet);
377     if (nativeResultSet == nullptr) {
378         *errCode = -1;
379         return -1;
380     }
381     return nativeResultSet->GetID();
382 }
383 
FfiOHOSRelationalStoreRemoteQuery(int64_t id,char * device,int64_t predicatesId,char ** columns,int64_t columnsSize)384 int64_t FfiOHOSRelationalStoreRemoteQuery(
385     int64_t id, char *device, int64_t predicatesId, char **columns, int64_t columnsSize)
386 {
387     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
388     if (nativeRdbStore == nullptr) {
389         return -1;
390     }
391     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
392     if (nativeRdbPredicates == nullptr) {
393         return -1;
394     }
395     auto resultSet = nativeRdbStore->RemoteQuery(device, *nativeRdbPredicates, columns, columnsSize);
396     if (resultSet == nullptr) {
397         return -1;
398     }
399     auto nativeResultSet = FFIData::Create<ResultSetImpl>(resultSet);
400     if (nativeResultSet == nullptr) {
401         return -1;
402     }
403     return nativeResultSet->GetID();
404 }
405 
FfiOHOSRelationalStoreDelete(int64_t id,int64_t predicatesId,int32_t * errCode)406 int64_t FfiOHOSRelationalStoreDelete(int64_t id, int64_t predicatesId, int32_t *errCode)
407 {
408     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
409     if (nativeRdbStore == nullptr) {
410         *errCode = -1;
411         return -1;
412     }
413     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
414     if (nativeRdbPredicates == nullptr) {
415         *errCode = -1;
416         return -1;
417     }
418     return nativeRdbStore->Delete(*nativeRdbPredicates, errCode);
419 }
420 
FfiOHOSRelationalStoreSetDistributedTables(int64_t id,char ** tables,int64_t tablesSize)421 int32_t FfiOHOSRelationalStoreSetDistributedTables(int64_t id, char **tables, int64_t tablesSize)
422 {
423     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
424     if (nativeRdbStore == nullptr) {
425         return -1;
426     }
427     return nativeRdbStore->SetDistributedTables(tables, tablesSize);
428 }
429 
FfiOHOSRelationalStoreSetDistributedTablesType(int64_t id,char ** tables,int64_t tablesSize,int32_t type)430 int32_t FfiOHOSRelationalStoreSetDistributedTablesType(int64_t id, char **tables, int64_t tablesSize, int32_t type)
431 {
432     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
433     if (nativeRdbStore == nullptr) {
434         return -1;
435     }
436     return nativeRdbStore->SetDistributedTables(tables, tablesSize, type);
437 }
438 
FfiOHOSRelationalStoreSetDistributedTablesConfig(int64_t id,char ** tables,int64_t tablesSize,int32_t type,RetDistributedConfig distributedConfig)439 int32_t FfiOHOSRelationalStoreSetDistributedTablesConfig(
440     int64_t id, char **tables, int64_t tablesSize, int32_t type, RetDistributedConfig distributedConfig)
441 {
442     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
443     if (nativeRdbStore == nullptr) {
444         return -1;
445     }
446     DistributedRdb::DistributedConfig config{ distributedConfig.autoSync };
447     return nativeRdbStore->SetDistributedTables(tables, tablesSize, type, config);
448 }
449 
FfiOHOSRelationalStoreObtainDistributedTableName(int64_t id,const char * device,char * table)450 char *FfiOHOSRelationalStoreObtainDistributedTableName(int64_t id, const char *device, char *table)
451 {
452     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
453     if (nativeRdbStore == nullptr) {
454         return nullptr;
455     }
456     return nativeRdbStore->ObtainDistributedTableName(device, table);
457 }
458 
FfiOHOSRelationalStoreBackUp(int64_t id,const char * destName)459 int32_t FfiOHOSRelationalStoreBackUp(int64_t id, const char *destName)
460 {
461     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
462     if (nativeRdbStore == nullptr) {
463         return -1;
464     }
465     return nativeRdbStore->Backup(destName);
466 }
467 
FfiOHOSRelationalStoreReStore(int64_t id,const char * srcName)468 int32_t FfiOHOSRelationalStoreReStore(int64_t id, const char *srcName)
469 {
470     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
471     if (nativeRdbStore == nullptr) {
472         return -1;
473     }
474     return nativeRdbStore->Restore(srcName);
475 }
476 
FfiOHOSRelationalStoreCommit(int64_t id)477 int32_t FfiOHOSRelationalStoreCommit(int64_t id)
478 {
479     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
480     if (nativeRdbStore == nullptr) {
481         return -1;
482     }
483     return nativeRdbStore->Commit();
484 }
485 
FfiOHOSRelationalStoreRollBack(int64_t id)486 int32_t FfiOHOSRelationalStoreRollBack(int64_t id)
487 {
488     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
489     if (nativeRdbStore == nullptr) {
490         return -1;
491     }
492     return nativeRdbStore->RollBack();
493 }
494 
FfiOHOSRelationalStoreBeginTransaction(int64_t id)495 int32_t FfiOHOSRelationalStoreBeginTransaction(int64_t id)
496 {
497     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
498     if (nativeRdbStore == nullptr) {
499         return -1;
500     }
501     return nativeRdbStore->BeginTransaction();
502 }
503 
FfiOHOSRelationalStoreInsert(int64_t id,const char * table,ValuesBucket valuesBucket,int32_t conflict,int32_t * errCode)504 int64_t FfiOHOSRelationalStoreInsert(
505     int64_t id, const char *table, ValuesBucket valuesBucket, int32_t conflict, int32_t *errCode)
506 {
507     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
508     if (nativeRdbStore == nullptr) {
509         *errCode = -1;
510         return -1;
511     }
512     return nativeRdbStore->Insert(table, valuesBucket, conflict, errCode);
513 }
514 
FfiOHOSRelationalStoreUpdate(int64_t id,ValuesBucket valuesBucket,int64_t predicatesId,NativeRdb::ConflictResolution conflictResolution,int32_t * errCode)515 int64_t FfiOHOSRelationalStoreUpdate(int64_t id, ValuesBucket valuesBucket, int64_t predicatesId,
516     NativeRdb::ConflictResolution conflictResolution, int32_t *errCode)
517 {
518     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
519     auto nativeRdbSPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
520     if (nativeRdbStore == nullptr || nativeRdbSPredicates == nullptr) {
521         *errCode = -1;
522         return -1;
523     }
524     return nativeRdbStore->Update(valuesBucket, *nativeRdbSPredicates, conflictResolution, errCode);
525 }
526 
FfiOHOSRelationalStoreExecuteSql(int64_t id,const char * sql,int32_t * errCode)527 void FfiOHOSRelationalStoreExecuteSql(int64_t id, const char *sql, int32_t *errCode)
528 {
529     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
530     if (nativeRdbStore == nullptr) {
531         *errCode = -1;
532         return;
533     }
534     nativeRdbStore->ExecuteSql(sql, errCode);
535 }
536 
FfiOHOSRelationalStoreSync(int64_t id,int32_t mode,int64_t predicatesId,int32_t * errCode)537 CArrSyncResult FfiOHOSRelationalStoreSync(int64_t id, int32_t mode, int64_t predicatesId, int32_t *errCode)
538 {
539     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
540     auto nativeRdbPredicates = FFIData::GetData<RdbPredicatesImpl>(predicatesId);
541     if (nativeRdbStore == nullptr || nativeRdbPredicates == nullptr) {
542         *errCode = -1;
543         return CArrSyncResult{ nullptr, nullptr, 0 };
544     }
545     return nativeRdbStore->Sync(mode, *nativeRdbPredicates);
546 }
547 
FfiOHOSRelationalStoreGetAllColumnNames(int64_t id)548 CArrStr FfiOHOSRelationalStoreGetAllColumnNames(int64_t id)
549 {
550     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
551     if (nativeResultSet == nullptr) {
552         return CArrStr{ nullptr, 0 };
553     }
554     return nativeResultSet->GetAllColumnNames();
555 }
556 
FfiOHOSRelationalStoreGetColumnCount(int64_t id,int32_t * errCode)557 int32_t FfiOHOSRelationalStoreGetColumnCount(int64_t id, int32_t *errCode)
558 {
559     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
560     if (nativeResultSet == nullptr) {
561         *errCode = -1;
562         return -1;
563     }
564     return nativeResultSet->GetColumnCount();
565 }
566 
FfiOHOSRelationalStoreGetRowCount(int64_t id,int32_t * errCode)567 int32_t FfiOHOSRelationalStoreGetRowCount(int64_t id, int32_t *errCode)
568 {
569     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
570     if (nativeResultSet == nullptr) {
571         *errCode = -1;
572         return -1;
573     }
574     return nativeResultSet->GetRowCount();
575 }
576 
FfiOHOSRelationalStoreGetRowIndex(int64_t id,int32_t * errCode)577 int32_t FfiOHOSRelationalStoreGetRowIndex(int64_t id, int32_t *errCode)
578 {
579     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
580     if (nativeResultSet == nullptr) {
581         *errCode = -1;
582         return -1;
583     }
584     return nativeResultSet->GetRowIndex();
585 }
586 
FfiOHOSRelationalStoreIsAtFirstRow(int64_t id,int32_t * errCode)587 bool FfiOHOSRelationalStoreIsAtFirstRow(int64_t id, int32_t *errCode)
588 {
589     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
590     if (nativeResultSet == nullptr) {
591         *errCode = -1;
592         return false;
593     }
594     *errCode = 0;
595     return nativeResultSet->IsAtFirstRow();
596 }
597 
FfiOHOSRelationalStoreIsAtLastRow(int64_t id,int32_t * errCode)598 bool FfiOHOSRelationalStoreIsAtLastRow(int64_t id, int32_t *errCode)
599 {
600     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
601     if (nativeResultSet == nullptr) {
602         *errCode = -1;
603         return false;
604     }
605     *errCode = 0;
606     return nativeResultSet->IsAtLastRow();
607 }
608 
FfiOHOSRelationalStoreIsEnded(int64_t id,int32_t * errCode)609 bool FfiOHOSRelationalStoreIsEnded(int64_t id, int32_t *errCode)
610 {
611     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
612     if (nativeResultSet == nullptr) {
613         *errCode = -1;
614         return false;
615     }
616     *errCode = 0;
617     return nativeResultSet->IsEnded();
618 }
619 
FfiOHOSRelationalStoreIsStarted(int64_t id,int32_t * errCode)620 bool FfiOHOSRelationalStoreIsStarted(int64_t id, int32_t *errCode)
621 {
622     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
623     if (nativeResultSet == nullptr) {
624         *errCode = -1;
625         return false;
626     }
627     *errCode = 0;
628     return nativeResultSet->IsStarted();
629 }
630 
FfiOHOSRelationalStoreIsClosed(int64_t id,int32_t * errCode)631 bool FfiOHOSRelationalStoreIsClosed(int64_t id, int32_t *errCode)
632 {
633     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
634     if (nativeResultSet == nullptr) {
635         *errCode = -1;
636         return false;
637     }
638     *errCode = 0;
639     return nativeResultSet->IsClosed();
640 }
641 
FfiOHOSRelationalStoreGetDouble(int64_t id,int32_t columnIndex,int32_t * rtnCode)642 double FfiOHOSRelationalStoreGetDouble(int64_t id, int32_t columnIndex, int32_t *rtnCode)
643 {
644     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
645     if (nativeResultSet == nullptr) {
646         *rtnCode = -1;
647         return -1;
648     }
649     return nativeResultSet->GetDouble(columnIndex, rtnCode);
650 }
651 
FfiOHOSRelationalStoreGoToRow(int64_t id,int32_t position,int32_t * rtnCode)652 bool FfiOHOSRelationalStoreGoToRow(int64_t id, int32_t position, int32_t *rtnCode)
653 {
654     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
655     if (nativeResultSet == nullptr) {
656         *rtnCode = -1;
657         return false;
658     }
659     return nativeResultSet->GoToRow(position, rtnCode);
660 }
661 
FfiOHOSRelationalStoreGoToPreviousRow(int64_t id,int32_t * rtnCode)662 bool FfiOHOSRelationalStoreGoToPreviousRow(int64_t id, int32_t *rtnCode)
663 {
664     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
665     if (nativeResultSet == nullptr) {
666         *rtnCode = -1;
667         return false;
668     }
669     return nativeResultSet->GoToPreviousRow(rtnCode);
670 }
671 
FfiOHOSRelationalStoreGoToLastRow(int64_t id,int32_t * rtnCode)672 bool FfiOHOSRelationalStoreGoToLastRow(int64_t id, int32_t *rtnCode)
673 {
674     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
675     if (nativeResultSet == nullptr) {
676         *rtnCode = -1;
677         return false;
678     }
679     return nativeResultSet->GoToLastRow(rtnCode);
680 }
681 
FfiOHOSRelationalStoreGetColumnName(int64_t id,int32_t columnIndex,int32_t * rtnCode)682 char *FfiOHOSRelationalStoreGetColumnName(int64_t id, int32_t columnIndex, int32_t *rtnCode)
683 {
684     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
685     if (nativeResultSet == nullptr) {
686         *rtnCode = -1;
687         return nullptr;
688     }
689     return nativeResultSet->GetColumnName(columnIndex, rtnCode);
690 }
691 
FfiOHOSRelationalStoreIsColumnNull(int64_t id,int32_t columnIndex,int32_t * rtnCode)692 bool FfiOHOSRelationalStoreIsColumnNull(int64_t id, int32_t columnIndex, int32_t *rtnCode)
693 {
694     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
695     if (nativeResultSet == nullptr) {
696         *rtnCode = -1;
697         return false;
698     }
699     return nativeResultSet->IsColumnNull(columnIndex, rtnCode);
700 }
701 
FfiOHOSRelationalStoreGetAsset(int64_t id,int32_t columnIndex,int32_t * rtnCode)702 Asset FfiOHOSRelationalStoreGetAsset(int64_t id, int32_t columnIndex, int32_t *rtnCode)
703 {
704     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
705     if (nativeResultSet == nullptr) {
706         *rtnCode = -1;
707         return Asset{ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0 };
708     }
709     return nativeResultSet->GetAsset(columnIndex, rtnCode);
710 }
711 
FfiOHOSRelationalStoreClose(int64_t id)712 int32_t FfiOHOSRelationalStoreClose(int64_t id)
713 {
714     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
715     if (nativeResultSet == nullptr) {
716         return -1;
717     }
718     return nativeResultSet->Close();
719 }
720 
FfiOHOSRelationalStoreGetColumnIndex(int64_t id,char * columnName,int32_t * rtnCode)721 int32_t FfiOHOSRelationalStoreGetColumnIndex(int64_t id, char *columnName, int32_t *rtnCode)
722 {
723     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
724     if (nativeResultSet == nullptr) {
725         *rtnCode = -1;
726         return -1;
727     }
728     return nativeResultSet->GetColumnIndex(columnName, rtnCode);
729 }
730 
FfiOHOSRelationalStoreGetString(int64_t id,int32_t columnIndex,int32_t * rtnCode)731 char *FfiOHOSRelationalStoreGetString(int64_t id, int32_t columnIndex, int32_t *rtnCode)
732 {
733     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
734     if (nativeResultSet == nullptr) {
735         *rtnCode = -1;
736         return nullptr;
737     }
738     return nativeResultSet->GetString(columnIndex, rtnCode);
739 }
740 
FfiOHOSRelationalStoreGoToFirstRow(int64_t id,int32_t * rtnCode)741 bool FfiOHOSRelationalStoreGoToFirstRow(int64_t id, int32_t *rtnCode)
742 {
743     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
744     if (nativeResultSet == nullptr) {
745         *rtnCode = -1;
746         return false;
747     }
748     return nativeResultSet->GoToFirstRow(rtnCode);
749 }
750 
FfiOHOSRelationalStoreGetLong(int64_t id,int32_t columnIndex,int32_t * rtnCode)751 int64_t FfiOHOSRelationalStoreGetLong(int64_t id, int32_t columnIndex, int32_t *rtnCode)
752 {
753     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
754     if (nativeResultSet == nullptr) {
755         *rtnCode = -1;
756         return -1;
757     }
758     return nativeResultSet->GetLong(columnIndex, rtnCode);
759 }
760 
FfiOHOSRelationalStoreGoToNextRow(int64_t id,int32_t * rtnCode)761 bool FfiOHOSRelationalStoreGoToNextRow(int64_t id, int32_t *rtnCode)
762 {
763     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
764     if (nativeResultSet == nullptr) {
765         *rtnCode = -1;
766         return false;
767     }
768     return nativeResultSet->GoToNextRow(rtnCode);
769 }
770 
FfiOHOSRelationalStoreGetBlob(int64_t id,int32_t columnIndex,int32_t * rtnCode)771 CArrUI8 FfiOHOSRelationalStoreGetBlob(int64_t id, int32_t columnIndex, int32_t *rtnCode)
772 {
773     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
774     if (nativeResultSet == nullptr) {
775         *rtnCode = -1;
776         return CArrUI8{ nullptr, 0 };
777     }
778     return nativeResultSet->GetBlob(columnIndex, rtnCode);
779 }
780 
FfiOHOSRelationalStoreGoTo(int64_t id,int32_t offset,int32_t * rtnCode)781 bool FfiOHOSRelationalStoreGoTo(int64_t id, int32_t offset, int32_t *rtnCode)
782 {
783     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
784     if (nativeResultSet == nullptr) {
785         *rtnCode = -1;
786         return false;
787     }
788     return nativeResultSet->GoTo(offset, rtnCode);
789 }
790 
FfiOHOSRelationalStoreGetAssets(int64_t id,int32_t columnIndex,int32_t * rtnCode)791 Assets FfiOHOSRelationalStoreGetAssets(int64_t id, int32_t columnIndex, int32_t *rtnCode)
792 {
793     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
794     if (nativeResultSet == nullptr) {
795         *rtnCode = -1;
796         return Assets{ nullptr, 0 };
797     }
798     return nativeResultSet->GetAssets(columnIndex, rtnCode);
799 }
800 
FfiOHOSRelationalStoreGetRow(int64_t id,int32_t * errCode)801 ValuesBucket FfiOHOSRelationalStoreGetRow(int64_t id, int32_t *errCode)
802 {
803     auto nativeResultSet = FFIData::GetData<ResultSetImpl>(id);
804     if (nativeResultSet == nullptr) {
805         *errCode = -1;
806         return ValuesBucket{ nullptr, nullptr, 0 };
807     }
808     return nativeResultSet->GetRow(errCode);
809 }
810 
FfiOHOSRelationalStoreCleanDirtyData(int64_t id,const char * tableName,uint64_t cursor)811 int32_t FfiOHOSRelationalStoreCleanDirtyData(int64_t id, const char *tableName, uint64_t cursor)
812 {
813     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
814     if (nativeRdbStore == nullptr) {
815         return -1;
816     }
817     return nativeRdbStore->CleanDirtyData(tableName, cursor);
818 }
819 
FfiOHOSRelationalStoreBatchInsert(int64_t id,const char * tableName,ValuesBucket * values,int64_t valuesSize,int64_t * insertNum)820 int32_t FfiOHOSRelationalStoreBatchInsert(
821     int64_t id, const char *tableName, ValuesBucket *values, int64_t valuesSize, int64_t *insertNum)
822 {
823     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
824     if (nativeRdbStore == nullptr) {
825         return -1;
826     }
827     return nativeRdbStore->BatchInsert(*insertNum, tableName, values, valuesSize);
828 }
829 
FfiOHOSRelationalStoreQuerySql(int64_t id,const char * sql,ValueType * bindArgs,int64_t size,int32_t * errCode)830 int64_t FfiOHOSRelationalStoreQuerySql(int64_t id, const char *sql, ValueType *bindArgs, int64_t size, int32_t *errCode)
831 {
832     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
833     if (nativeRdbStore == nullptr) {
834         *errCode = RelationalStoreJsKit::E_INNER_ERROR;
835         return -1;
836     }
837     auto resultSet = nativeRdbStore->QuerySql(sql, bindArgs, size);
838     if (resultSet == nullptr) {
839         *errCode = RelationalStoreJsKit::E_INNER_ERROR;
840         return -1;
841     } else {
842         *errCode = RelationalStoreJsKit::OK;
843     }
844     auto nativeResultSet = FFIData::Create<ResultSetImpl>(resultSet);
845     if (nativeResultSet == nullptr) {
846         *errCode = -1;
847         return -1;
848     }
849     return nativeResultSet->GetID();
850 }
851 
FfiOHOSRelationalStoreExecuteSqlBindArgs(int64_t id,char * sql,ValueType * bindArgs,int64_t bindArgsSize,int32_t * errCode)852 void FfiOHOSRelationalStoreExecuteSqlBindArgs(
853     int64_t id, char *sql, ValueType *bindArgs, int64_t bindArgsSize, int32_t *errCode)
854 {
855     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
856     if (nativeRdbStore == nullptr) {
857         *errCode = -1;
858         return;
859     }
860     nativeRdbStore->ExecuteSql(sql, bindArgs, bindArgsSize, errCode);
861 }
862 
FfiOHOSRelationalStoreOn(int64_t id,const char * event,bool interProcess,void (* callback)(),void (* callbackRef)())863 int32_t FfiOHOSRelationalStoreOn(
864     int64_t id, const char *event, bool interProcess, void (*callback)(), void (*callbackRef)())
865 {
866     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
867     if (nativeRdbStore == nullptr) {
868         return -1;
869     }
870     auto onChange = [lambda = CJLambda::Create(callbackRef)]() -> void { lambda(); };
871     return nativeRdbStore->RegisterObserver(event, interProcess, (std::function<void()> *)(callback), onChange);
872 }
873 
FfiOHOSRelationalStoreOnArrStr(int64_t id,int32_t subscribeType,int64_t callbackId)874 int32_t FfiOHOSRelationalStoreOnArrStr(int64_t id, int32_t subscribeType, int64_t callbackId)
875 {
876     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
877     if (nativeRdbStore == nullptr) {
878         return -1;
879     }
880     return nativeRdbStore->RegisterObserverArrStr(subscribeType, callbackId);
881 }
882 
FfiOHOSRelationalStoreOnChangeInfo(int64_t id,int32_t subscribeType,int64_t callbackId)883 int32_t FfiOHOSRelationalStoreOnChangeInfo(int64_t id, int32_t subscribeType, int64_t callbackId)
884 {
885     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
886     if (nativeRdbStore == nullptr) {
887         return -1;
888     }
889     return nativeRdbStore->RegisterObserverChangeInfo(subscribeType, callbackId);
890 }
891 
FfiOHOSRelationalStoreOnProgressDetails(int64_t id,int64_t callbackId)892 int32_t FfiOHOSRelationalStoreOnProgressDetails(int64_t id, int64_t callbackId)
893 {
894     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
895     if (nativeRdbStore == nullptr) {
896         return -1;
897     }
898     return nativeRdbStore->RegisterObserverProgressDetails(callbackId);
899 }
900 
FfiOHOSRelationalStoreOff(int64_t id,const char * event,bool interProcess,void (* callback)())901 int32_t FfiOHOSRelationalStoreOff(int64_t id, const char *event, bool interProcess, void (*callback)())
902 {
903     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
904     if (nativeRdbStore == nullptr) {
905         return -1;
906     }
907     return nativeRdbStore->UnRegisterObserver(event, interProcess, (std::function<void()> *)(callback));
908 }
909 
FfiOHOSRelationalStoreOffAll(int64_t id,const char * event,bool interProcess)910 int32_t FfiOHOSRelationalStoreOffAll(int64_t id, const char *event, bool interProcess)
911 {
912     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
913     if (nativeRdbStore == nullptr) {
914         return -1;
915     }
916     return nativeRdbStore->UnRegisterAllObserver(event, interProcess);
917 }
918 
FfiOHOSRelationalStoreOffArrStrChangeInfo(int64_t id,int32_t subscribeType,int64_t callbackId)919 int32_t FfiOHOSRelationalStoreOffArrStrChangeInfo(int64_t id, int32_t subscribeType, int64_t callbackId)
920 {
921     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
922     if (nativeRdbStore == nullptr) {
923         return -1;
924     }
925     return nativeRdbStore->UnRegisterObserverArrStrChangeInfo(subscribeType, callbackId);
926 }
927 
FfiOHOSRelationalStoreOffArrStrChangeInfoAll(int64_t id,int32_t subscribeType)928 int32_t FfiOHOSRelationalStoreOffArrStrChangeInfoAll(int64_t id, int32_t subscribeType)
929 {
930     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
931     if (nativeRdbStore == nullptr) {
932         return -1;
933     }
934     return nativeRdbStore->UnRegisterObserverArrStrChangeInfoAll(subscribeType);
935 }
936 
FfiOHOSRelationalStoreOffProgressDetails(int64_t id,int64_t callbackId)937 int32_t FfiOHOSRelationalStoreOffProgressDetails(int64_t id, int64_t callbackId)
938 {
939     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
940     if (nativeRdbStore == nullptr) {
941         return -1;
942     }
943     return nativeRdbStore->UnRegisterObserverProgressDetails(callbackId);
944 }
945 
FfiOHOSRelationalStoreOffProgressDetailsAll(int64_t id)946 int32_t FfiOHOSRelationalStoreOffProgressDetailsAll(int64_t id)
947 {
948     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
949     if (nativeRdbStore == nullptr) {
950         return -1;
951     }
952     return nativeRdbStore->UnRegisterObserverProgressDetailsAll();
953 }
954 
FfiOHOSRelationalStoreEmit(int64_t id,const char * event)955 int32_t FfiOHOSRelationalStoreEmit(int64_t id, const char *event)
956 {
957     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
958     if (nativeRdbStore == nullptr) {
959         return -1;
960     }
961     return nativeRdbStore->Emit(event);
962 }
963 
FfiOHOSRelationalStoreCloudSync(int64_t id,int32_t mode,CArrStr tables,int64_t callbackId)964 int32_t FfiOHOSRelationalStoreCloudSync(int64_t id, int32_t mode, CArrStr tables, int64_t callbackId)
965 {
966     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
967     if (nativeRdbStore == nullptr) {
968         return -1;
969     }
970     return nativeRdbStore->CloudSync(mode, tables, callbackId);
971 }
972 
FfiOHOSRelationalStoreGetVersion(int64_t id,int32_t * errCode)973 int32_t FfiOHOSRelationalStoreGetVersion(int64_t id, int32_t *errCode)
974 {
975     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
976     if (nativeRdbStore == nullptr) {
977         *errCode = -1;
978         return -1;
979     }
980     return nativeRdbStore->GetVersion(*errCode);
981 }
982 
FfiOHOSRelationalStoreSetVersion(int64_t id,int32_t value,int32_t * errCode)983 void FfiOHOSRelationalStoreSetVersion(int64_t id, int32_t value, int32_t *errCode)
984 {
985     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
986     if (nativeRdbStore == nullptr) {
987         *errCode = -1;
988         return;
989     }
990     nativeRdbStore->SetVersion(value, *errCode);
991 }
992 
FfiOHOSRelationalStoreGetModifyTime(int64_t id,char * cTable,char * cColumnName,CArrPRIKeyType cPrimaryKeys,int32_t * errCode)993 ModifyTime FfiOHOSRelationalStoreGetModifyTime(
994     int64_t id, char *cTable, char *cColumnName, CArrPRIKeyType cPrimaryKeys, int32_t *errCode)
995 {
996     auto nativeRdbStore = FFIData::GetData<RdbStoreImpl>(id);
997     if (nativeRdbStore == nullptr) {
998         *errCode = -1;
999         return ModifyTime{ 0 };
1000     }
1001     return nativeRdbStore->GetModifyTime(cTable, cColumnName, cPrimaryKeys, *errCode);
1002 }
1003 }
1004 } // namespace Relational
1005 } // namespace OHOS
1006