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 #ifndef RELATIONAL_STORE_FFI_H
17 #define RELATIONAL_STORE_FFI_H
18 
19 #include "relational_store_impl_rdbstore.h"
20 #include "relational_store_impl_rdbpredicatesproxy.h"
21 #include "relational_store_impl_resultsetproxy.h"
22 #include <cstdint>
23 #include "napi_base_context.h"
24 #include "rdb_store_config.h"
25 #include "rdb_helper.h"
26 #include "ffi_remote_data.h"
27 #include <functional>
28 #include <string>
29 #include <vector>
30 #include <cstdint>
31 #include "logger.h"
32 #include "rdb_errno.h"
33 #include "rdb_open_callback.h"
34 #include "rdb_sql_utils.h"
35 #include "unistd.h"
36 #include "native_log.h"
37 #include "js_ability.h"
38 #include "rdb_common.h"
39 
40 
41 namespace OHOS {
42 namespace Relational {
43 extern "C" {
44     FFI_EXPORT int64_t FfiOHOSRelationalStoreGetRdbStore(OHOS::AbilityRuntime::Context* context, StoreConfig config,
45         int32_t *errCode);
46 
47     FFI_EXPORT void FfiOHOSRelationalStoreDeleteRdbStore(OHOS::AbilityRuntime::Context* context, const char* name,
48         int32_t *errCode);
49 
50     FFI_EXPORT void FfiOHOSRelationalStoreDeleteRdbStoreConfig(OHOS::AbilityRuntime::Context* context,
51         StoreConfig config, int32_t *errCode);
52 
53     FFI_EXPORT int64_t FfiOHOSRelationalStoreRdbPredicatesConstructor(const char* tableName);
54 
55     FFI_EXPORT int32_t FfiOHOSRelationalStoreInDevices(int64_t id, const char** devicesArray, int64_t devicesSize);
56 
57     FFI_EXPORT CArrStr FfiOHOSRelationalStoreGetAllColumnNames(int64_t id);
58 
59     FFI_EXPORT int32_t FfiOHOSRelationalStoreGetColumnCount(int64_t id, int32_t *errCode);
60 
61     FFI_EXPORT int32_t FfiOHOSRelationalStoreGetRowCount(int64_t id, int32_t *errCode);
62 
63     FFI_EXPORT int32_t FfiOHOSRelationalStoreGetRowIndex(int64_t id, int32_t *errCode);
64 
65     FFI_EXPORT bool FfiOHOSRelationalStoreIsAtFirstRow(int64_t id, int32_t *errCode);
66 
67     FFI_EXPORT bool FfiOHOSRelationalStoreIsAtLastRow(int64_t id, int32_t *errCode);
68 
69     FFI_EXPORT bool FfiOHOSRelationalStoreIsEnded(int64_t id, int32_t *errCode);
70 
71     FFI_EXPORT bool FfiOHOSRelationalStoreIsStarted(int64_t id, int32_t *errCode);
72 
73     FFI_EXPORT bool FfiOHOSRelationalStoreIsClosed(int64_t id, int32_t *errCode);
74 
75     FFI_EXPORT int32_t FfiOHOSRelationalStoreInAllDevices(int64_t id);
76 
77     FFI_EXPORT int32_t FfiOHOSRelationalStoreBeginWrap(int64_t id);
78 
79     FFI_EXPORT int32_t FfiOHOSRelationalStoreEndWrap(int64_t id);
80 
81     FFI_EXPORT int32_t FfiOHOSRelationalStoreOr(int64_t id);
82 
83     FFI_EXPORT int32_t FfiOHOSRelationalStoreAnd(int64_t id);
84 
85     FFI_EXPORT int32_t FfiOHOSRelationalStoreContains(int64_t id, const char* field, const char* value);
86 
87     FFI_EXPORT int32_t FfiOHOSRelationalStoreBeginsWith(int64_t id, const char* field, const char* value);
88 
89     FFI_EXPORT int32_t FfiOHOSRelationalStoreEndsWith(int64_t id, const char* field, const char* value);
90 
91     FFI_EXPORT int32_t FfiOHOSRelationalStoreIsNull(int64_t id, const char* field);
92 
93     FFI_EXPORT int32_t FfiOHOSRelationalStoreIsNotNull(int64_t id, const char* field);
94 
95     FFI_EXPORT int32_t FfiOHOSRelationalStoreLike(int64_t id, const char* field, const char* value);
96 
97     FFI_EXPORT int32_t FfiOHOSRelationalStoreGlob(int64_t id, const char* field, const char* value);
98 
99     FFI_EXPORT int32_t FfiOHOSRelationalStoreOrderByAsc(int64_t id, const char* field);
100 
101     FFI_EXPORT int32_t FfiOHOSRelationalStoreOrderByDesc(int64_t id, const char* field);
102 
103     FFI_EXPORT int32_t FfiOHOSRelationalStoreDistinct(int64_t id);
104 
105     FFI_EXPORT int32_t FfiOHOSRelationalStoreLimitAs(int64_t id, int32_t value);
106 
107     FFI_EXPORT int32_t FfiOHOSRelationalStoreOffsetAs(int64_t id, int32_t rowOffset);
108 
109     FFI_EXPORT int32_t FfiOHOSRelationalStoreGroupBy(int64_t id, const char** fieldsArray, int64_t fieldsSize);
110 
111     FFI_EXPORT int32_t FfiOHOSRelationalStoreIndexedBy(int64_t id, const char* field);
112 
113     FFI_EXPORT int32_t FfiOHOSRelationalStoreLessThanOrEqualTo(int64_t id, const char* field, ValueType value);
114 
115     FFI_EXPORT int32_t FfiOHOSRelationalStoreEqualTo(int64_t id, const char* field, ValueType value);
116 
117     FFI_EXPORT int32_t FfiOHOSRelationalStoreGreaterThanOrEqualTo(int64_t id, const char* field, ValueType value);
118 
119     FFI_EXPORT int32_t FfiOHOSRelationalStoreGreaterThan(int64_t id, const char* field, ValueType value);
120 
121     FFI_EXPORT int32_t FfiOHOSRelationalStoreNotBetween(int64_t id, const char* field, ValueType lowValue,
122         ValueType highValue);
123 
124     FFI_EXPORT int32_t FfiOHOSRelationalStoreLessThan(int64_t id, const char* field, ValueType value);
125 
126     FFI_EXPORT int32_t FfiOHOSRelationalStoreBetween(int64_t id, const char* field, ValueType lowValue,
127         ValueType highValue);
128 
129     FFI_EXPORT int32_t FfiOHOSRelationalStoreIn(int64_t id, const char* field, ValueType* values, int64_t valuesSize);
130 
131     FFI_EXPORT int32_t FfiOHOSRelationalStoreNotIn(int64_t id, const char* field, ValueType* values,
132         int64_t valuesSize);
133 
134     FFI_EXPORT int32_t FfiOHOSRelationalStoreNotEqualTo(int64_t id, const char* field, ValueType value);
135 
136     FFI_EXPORT int64_t FfiOHOSRelationalStoreQuery(int64_t id, int64_t predicatesId, char** columns,
137         int64_t columnsSize, int32_t *errCode);
138 
139     FFI_EXPORT int64_t FfiOHOSRelationalStoreRemoteQuery(int64_t id, char* device, int64_t predicatesId, char** columns,
140         int64_t columnsSize);
141 
142     FFI_EXPORT int64_t FfiOHOSRelationalStoreUpdate(int64_t id, ValuesBucket valuesBucket, int64_t predicatesId,
143         NativeRdb::ConflictResolution conflictResolution, int32_t *errCode);
144 
145     FFI_EXPORT int64_t FfiOHOSRelationalStoreDelete(int64_t id, int64_t predicatesId, int32_t *errCode);
146 
147     FFI_EXPORT int32_t FfiOHOSRelationalStoreSetDistributedTables(int64_t id, char** tables, int64_t tablesSize);
148 
149     FFI_EXPORT int32_t FfiOHOSRelationalStoreSetDistributedTablesType(int64_t id, char** tables, int64_t tablesSize,
150         int32_t type);
151 
152     FFI_EXPORT int32_t FfiOHOSRelationalStoreSetDistributedTablesConfig(int64_t id, char** tables, int64_t tablesSize,
153         int32_t type, DistributedRdb::DistributedConfig &distributedConfig);
154 
155     FFI_EXPORT char* FfiOHOSRelationalStoreObtainDistributedTableName(int64_t id, const char* device, char* table);
156 
157     FFI_EXPORT int32_t FfiOHOSRelationalStoreRollBack(int64_t id);
158 
159     FFI_EXPORT int32_t FfiOHOSRelationalStoreCommit(int64_t id);
160 
161     FFI_EXPORT int32_t FfiOHOSRelationalStoreBeginTransaction(int64_t id);
162 
163     FFI_EXPORT int32_t FfiOHOSRelationalStoreBackUp(int64_t id, const char* destName);
164 
165     FFI_EXPORT int32_t FfiOHOSRelationalStoreReStore(int64_t id, const char* srcName);
166 
167     FFI_EXPORT int64_t FfiOHOSRelationalStoreInsert(int64_t id, const char* table, ValuesBucket valuesBucket,
168         int32_t conflict, int32_t *errCode);
169 
170     FFI_EXPORT void FfiOHOSRelationalStoreExecuteSql(int64_t id, const char* sql, int32_t *errCode);
171 
172     FFI_EXPORT CArrSyncResult FfiOHOSRelationalStoreSync(int64_t id, int32_t mode, int64_t predicatesId,
173         int32_t *errCode);
174 
175     FFI_EXPORT double FfiOHOSRelationalStoreGetDouble(int64_t id, int32_t columnIndex, int32_t* rtnCode);
176 
177     FFI_EXPORT bool FfiOHOSRelationalStoreGoToRow(int64_t id, int32_t position, int32_t* rtnCode);
178 
179     FFI_EXPORT bool FfiOHOSRelationalStoreGoToPreviousRow(int64_t id, int32_t* rtnCode);
180 
181     FFI_EXPORT bool FfiOHOSRelationalStoreGoToLastRow(int64_t id, int32_t* rtnCode);
182 
183     FFI_EXPORT char* FfiOHOSRelationalStoreGetColumnName(int64_t id, int32_t columnIndex, int32_t* rtnCode);
184 
185     FFI_EXPORT bool FfiOHOSRelationalStoreIsColumnNull(int64_t id, int32_t columnIndex, int32_t* rtnCode);
186 
187     FFI_EXPORT Asset FfiOHOSRelationalStoreGetAsset(int64_t id, int32_t columnIndex, int32_t* rtnCode);
188 
189     FFI_EXPORT int32_t FfiOHOSRelationalStoreClose(int64_t id);
190 
191     FFI_EXPORT int32_t FfiOHOSRelationalStoreGetColumnIndex(int64_t id, char* columnName, int32_t* rtnCode);
192 
193     FFI_EXPORT char* FfiOHOSRelationalStoreGetString(int64_t id, int32_t columnIndex, int32_t* rtnCode);
194 
195     FFI_EXPORT bool FfiOHOSRelationalStoreGoToFirstRow(int64_t id, int32_t* rtnCode);
196 
197     FFI_EXPORT int64_t FfiOHOSRelationalStoreGetLong(int64_t id, int32_t columnIndex, int32_t* rtnCode);
198 
199     FFI_EXPORT bool FfiOHOSRelationalStoreGoToNextRow(int64_t id, int32_t* rtnCode);
200 
201     FFI_EXPORT CArrUI8 FfiOHOSRelationalStoreGetBlob(int64_t id, int32_t columnIndex, int32_t* rtnCode);
202 
203     FFI_EXPORT bool FfiOHOSRelationalStoreGoTo(int64_t id, int32_t offset, int32_t* rtnCode);
204 
205     FFI_EXPORT Assets FfiOHOSRelationalStoreGetAssets(int64_t id, int32_t columnIndex, int32_t* rtnCode);
206 
207     FFI_EXPORT int32_t FfiOHOSRelationalStoreCleanDirtyData(int64_t id, const char* tableName, uint64_t cursor);
208 
209     FFI_EXPORT int32_t FfiOHOSRelationalStoreBatchInsert(int64_t id, const char* tableName, ValuesBucket* values,
210         int64_t valuesSize, int64_t* insertNum);
211 
212     FFI_EXPORT int64_t FfiOHOSRelationalStoreQuerySql(int64_t id, const char *sql, ValueType *bindArgs, int64_t size,
213         int32_t* errCode);
214 
215     FFI_EXPORT void FfiOHOSRelationalStoreExecuteSqlBindArgs(int64_t id, char* sql, ValueType* bindArgs,
216         int64_t bindArgsSize, int32_t *errCode);
217 
218     FFI_EXPORT ValuesBucket FfiOHOSRelationalStoreGetRow(int64_t id, int32_t *errCode);
219 
220     FFI_EXPORT int32_t FfiOHOSRelationalStoreOn(int64_t id, const char *event, bool interProcess, void (*callback)(),
221         void (*callbackRef)());
222 
223     FFI_EXPORT int32_t FfiOHOSRelationalStoreOff(int64_t id, const char *event, bool interProcess, void (*callback)());
224 
225     FFI_EXPORT int32_t FfiOHOSRelationalStoreOffAll(int64_t id, const char *event, bool interProcess);
226 
227     FFI_EXPORT int32_t FfiOHOSRelationalStoreEmit(int64_t id, const char *event);
228 }
229 }
230 }
231 
232 #endif