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 <cstdint> 20 #include <functional> 21 #include <string> 22 #include <vector> 23 24 #include "ffi_remote_data.h" 25 #include "js_ability.h" 26 #include "logger.h" 27 #include "napi_base_context.h" 28 #include "native_log.h" 29 #include "rdb_common.h" 30 #include "rdb_errno.h" 31 #include "rdb_helper.h" 32 #include "rdb_open_callback.h" 33 #include "rdb_sql_utils.h" 34 #include "rdb_store_config.h" 35 #include "relational_store_impl_rdbpredicatesproxy.h" 36 #include "relational_store_impl_rdbstore.h" 37 #include "relational_store_impl_resultsetproxy.h" 38 #include "relational_store_utils.h" 39 #include "unistd.h" 40 41 namespace OHOS { 42 namespace Relational { 43 extern "C" { 44 FFI_EXPORT int64_t FfiOHOSRelationalStoreGetRdbStore( 45 OHOS::AbilityRuntime::Context *context, StoreConfig config, int32_t *errCode); 46 47 FFI_EXPORT void FfiOHOSRelationalStoreDeleteRdbStore( 48 OHOS::AbilityRuntime::Context *context, const char *name, int32_t *errCode); 49 50 FFI_EXPORT void FfiOHOSRelationalStoreDeleteRdbStoreConfig( 51 OHOS::AbilityRuntime::Context *context, 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( 122 int64_t id, const char *field, ValueType lowValue, ValueType highValue); 123 124 FFI_EXPORT int32_t FfiOHOSRelationalStoreLessThan(int64_t id, const char *field, ValueType value); 125 126 FFI_EXPORT int32_t FfiOHOSRelationalStoreBetween( 127 int64_t id, const char *field, ValueType lowValue, 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, int64_t valuesSize); 132 133 FFI_EXPORT int32_t FfiOHOSRelationalStoreNotEqualTo(int64_t id, const char *field, ValueType value); 134 135 FFI_EXPORT int64_t FfiOHOSRelationalStoreQuery( 136 int64_t id, int64_t predicatesId, char **columns, int64_t columnsSize, int32_t *errCode); 137 138 FFI_EXPORT int64_t FfiOHOSRelationalStoreRemoteQuery( 139 int64_t id, char *device, int64_t predicatesId, char **columns, int64_t columnsSize); 140 141 FFI_EXPORT int64_t FfiOHOSRelationalStoreUpdate(int64_t id, ValuesBucket valuesBucket, int64_t predicatesId, 142 NativeRdb::ConflictResolution conflictResolution, int32_t *errCode); 143 144 FFI_EXPORT int64_t FfiOHOSRelationalStoreDelete(int64_t id, int64_t predicatesId, int32_t *errCode); 145 146 FFI_EXPORT int32_t FfiOHOSRelationalStoreSetDistributedTables(int64_t id, char **tables, int64_t tablesSize); 147 148 FFI_EXPORT int32_t FfiOHOSRelationalStoreSetDistributedTablesType( 149 int64_t id, char **tables, int64_t tablesSize, int32_t type); 150 151 FFI_EXPORT int32_t FfiOHOSRelationalStoreSetDistributedTablesConfig( 152 int64_t id, char **tables, int64_t tablesSize, int32_t type, RetDistributedConfig distributedConfig); 153 154 FFI_EXPORT char *FfiOHOSRelationalStoreObtainDistributedTableName(int64_t id, const char *device, char *table); 155 156 FFI_EXPORT int32_t FfiOHOSRelationalStoreRollBack(int64_t id); 157 158 FFI_EXPORT int32_t FfiOHOSRelationalStoreCommit(int64_t id); 159 160 FFI_EXPORT int32_t FfiOHOSRelationalStoreBeginTransaction(int64_t id); 161 162 FFI_EXPORT int32_t FfiOHOSRelationalStoreBackUp(int64_t id, const char *destName); 163 164 FFI_EXPORT int32_t FfiOHOSRelationalStoreReStore(int64_t id, const char *srcName); 165 166 FFI_EXPORT int64_t FfiOHOSRelationalStoreInsert( 167 int64_t id, const char *table, ValuesBucket valuesBucket, int32_t conflict, int32_t *errCode); 168 169 FFI_EXPORT void FfiOHOSRelationalStoreExecuteSql(int64_t id, const char *sql, int32_t *errCode); 170 171 FFI_EXPORT CArrSyncResult FfiOHOSRelationalStoreSync(int64_t id, int32_t mode, int64_t predicatesId, int32_t *errCode); 172 173 FFI_EXPORT double FfiOHOSRelationalStoreGetDouble(int64_t id, int32_t columnIndex, int32_t *rtnCode); 174 175 FFI_EXPORT bool FfiOHOSRelationalStoreGoToRow(int64_t id, int32_t position, int32_t *rtnCode); 176 177 FFI_EXPORT bool FfiOHOSRelationalStoreGoToPreviousRow(int64_t id, int32_t *rtnCode); 178 179 FFI_EXPORT bool FfiOHOSRelationalStoreGoToLastRow(int64_t id, int32_t *rtnCode); 180 181 FFI_EXPORT char *FfiOHOSRelationalStoreGetColumnName(int64_t id, int32_t columnIndex, int32_t *rtnCode); 182 183 FFI_EXPORT bool FfiOHOSRelationalStoreIsColumnNull(int64_t id, int32_t columnIndex, int32_t *rtnCode); 184 185 FFI_EXPORT Asset FfiOHOSRelationalStoreGetAsset(int64_t id, int32_t columnIndex, int32_t *rtnCode); 186 187 FFI_EXPORT int32_t FfiOHOSRelationalStoreClose(int64_t id); 188 189 FFI_EXPORT int32_t FfiOHOSRelationalStoreGetColumnIndex(int64_t id, char *columnName, int32_t *rtnCode); 190 191 FFI_EXPORT char *FfiOHOSRelationalStoreGetString(int64_t id, int32_t columnIndex, int32_t *rtnCode); 192 193 FFI_EXPORT bool FfiOHOSRelationalStoreGoToFirstRow(int64_t id, int32_t *rtnCode); 194 195 FFI_EXPORT int64_t FfiOHOSRelationalStoreGetLong(int64_t id, int32_t columnIndex, int32_t *rtnCode); 196 197 FFI_EXPORT bool FfiOHOSRelationalStoreGoToNextRow(int64_t id, int32_t *rtnCode); 198 199 FFI_EXPORT CArrUI8 FfiOHOSRelationalStoreGetBlob(int64_t id, int32_t columnIndex, int32_t *rtnCode); 200 201 FFI_EXPORT bool FfiOHOSRelationalStoreGoTo(int64_t id, int32_t offset, int32_t *rtnCode); 202 203 FFI_EXPORT Assets FfiOHOSRelationalStoreGetAssets(int64_t id, int32_t columnIndex, int32_t *rtnCode); 204 205 FFI_EXPORT int32_t FfiOHOSRelationalStoreCleanDirtyData(int64_t id, const char *tableName, uint64_t cursor); 206 207 FFI_EXPORT int32_t FfiOHOSRelationalStoreBatchInsert( 208 int64_t id, const char *tableName, ValuesBucket *values, int64_t valuesSize, int64_t *insertNum); 209 210 FFI_EXPORT int64_t FfiOHOSRelationalStoreQuerySql( 211 int64_t id, const char *sql, ValueType *bindArgs, int64_t size, int32_t *errCode); 212 213 FFI_EXPORT void FfiOHOSRelationalStoreExecuteSqlBindArgs( 214 int64_t id, char *sql, ValueType *bindArgs, int64_t bindArgsSize, int32_t *errCode); 215 216 FFI_EXPORT ValuesBucket FfiOHOSRelationalStoreGetRow(int64_t id, int32_t *errCode); 217 218 FFI_EXPORT int32_t FfiOHOSRelationalStoreOn( 219 int64_t id, const char *event, bool interProcess, int64_t callback, void (*callbackRef)()); 220 221 FFI_EXPORT int32_t FfiOHOSRelationalStoreOnArrStr(int64_t id, int32_t subscribeType, int64_t callbackId); 222 223 FFI_EXPORT int32_t FfiOHOSRelationalStoreOnChangeInfo(int64_t id, int32_t subscribeType, int64_t callbackId); 224 225 FFI_EXPORT int32_t FfiOHOSRelationalStoreOnProgressDetails(int64_t id, int64_t callbackId); 226 227 FFI_EXPORT int32_t FfiOHOSRelationalStoreOff(int64_t id, const char *event, bool interProcess, int64_t callback); 228 229 FFI_EXPORT int32_t FfiOHOSRelationalStoreOffAll(int64_t id, const char *event, bool interProcess); 230 231 FFI_EXPORT int32_t FfiOHOSRelationalStoreOffArrStrChangeInfo(int64_t id, int32_t subscribeType, int64_t callbackId); 232 233 FFI_EXPORT int32_t FfiOHOSRelationalStoreOffArrStrChangeInfoAll(int64_t id, int32_t subscribeType); 234 235 FFI_EXPORT int32_t FfiOHOSRelationalStoreOffProgressDetails(int64_t id, int64_t callbackId); 236 237 FFI_EXPORT int32_t FfiOHOSRelationalStoreOffProgressDetailsAll(int64_t id); 238 239 FFI_EXPORT int32_t FfiOHOSRelationalStoreEmit(int64_t id, const char *event); 240 241 FFI_EXPORT int32_t FfiOHOSRelationalStoreCloudSync(int64_t id, int32_t mode, CArrStr tables, int64_t callbackId); 242 243 FFI_EXPORT int32_t FfiOHOSRelationalStoreGetVersion(int64_t id, int32_t *errCode); 244 245 FFI_EXPORT void FfiOHOSRelationalStoreSetVersion(int64_t id, int32_t value, int32_t *errCode); 246 247 FFI_EXPORT ModifyTime FfiOHOSRelationalStoreGetModifyTime( 248 int64_t id, char *cTable, char *cColumnName, CArrPRIKeyType cPrimaryKeys, int32_t *errCode); 249 } 250 } // namespace Relational 251 } // namespace OHOS 252 253 #endif