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