@op-engineering/op-sqlite 7.3.0 → 8.0.0-beta0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -3
- package/android/CMakeLists.txt +6 -0
- package/android/build.gradle +20 -1
- package/android/cpp-adapter.cpp +1 -1
- package/android/src/main/jniLibs/arm64-v8a/libsqlite_vec.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libsqlite_vec.so +0 -0
- package/android/src/main/jniLibs/x86/libsqlite_vec.so +0 -0
- package/android/src/main/jniLibs/x86_64/libsqlite_vec.so +0 -0
- package/cpp/DBHostObject.cpp +104 -107
- package/cpp/DBHostObject.h +1 -1
- package/cpp/PreparedStatementHostObject.cpp +39 -14
- package/cpp/PreparedStatementHostObject.h +17 -4
- package/cpp/bindings.cpp +12 -9
- package/cpp/bindings.h +2 -1
- package/cpp/bridge.cpp +229 -91
- package/cpp/bridge.h +13 -9
- package/cpp/libsql/bridge.cpp +212 -92
- package/cpp/libsql/bridge.h +7 -3
- package/cpp/macros.h +2 -2
- package/cpp/types.h +11 -8
- package/cpp/utils.cpp +43 -7
- package/cpp/utils.h +2 -0
- package/ios/OPSQLite.mm +15 -5
- package/ios/sqlitevec.xcframework/Info.plist +46 -0
- package/ios/sqlitevec.xcframework/ios-arm64/sqlitevec.framework/Info.plist +24 -0
- package/ios/sqlitevec.xcframework/ios-arm64/sqlitevec.framework/sqlitevec +0 -0
- package/ios/sqlitevec.xcframework/ios-arm64_x86_64-simulator/sqlitevec.framework/Info.plist +24 -0
- package/ios/sqlitevec.xcframework/ios-arm64_x86_64-simulator/sqlitevec.framework/sqlitevec +0 -0
- package/lib/commonjs/index.js +53 -30
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/module/NativeOPSQLite.js +2 -0
- package/lib/module/NativeOPSQLite.js.map +1 -1
- package/lib/module/index.js +55 -29
- package/lib/module/index.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/NativeOPSQLite.d.ts.map +1 -0
- package/lib/typescript/{src → commonjs/src}/index.d.ts +11 -11
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/NativeOPSQLite.d.ts +15 -0
- package/lib/typescript/module/src/NativeOPSQLite.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +163 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/op-sqlite.podspec +13 -4
- package/package.json +45 -15
- package/src/index.ts +80 -46
- package/android/.project +0 -17
- package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
- package/lib/typescript/src/NativeOPSQLite.d.ts.map +0 -1
- package/lib/typescript/src/index.d.ts.map +0 -1
- /package/lib/typescript/{src → commonjs/src}/NativeOPSQLite.d.ts +0 -0
package/cpp/utils.cpp
CHANGED
|
@@ -158,6 +158,44 @@ std::vector<JSVariant> to_variant_vec(jsi::Runtime &rt, jsi::Value const &xs) {
|
|
|
158
158
|
return res;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
+
jsi::Value create_js_rows(jsi::Runtime &rt, BridgeResult status) {
|
|
162
|
+
if (status.type == SQLiteError) {
|
|
163
|
+
throw std::invalid_argument(status.message);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
jsi::Object res = jsi::Object(rt);
|
|
167
|
+
|
|
168
|
+
res.setProperty(rt, "rowsAffected", status.affectedRows);
|
|
169
|
+
if (status.affectedRows > 0 && status.insertId != 0) {
|
|
170
|
+
res.setProperty(rt, "insertId", jsi::Value(status.insertId));
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
size_t row_count = status.rows.size();
|
|
174
|
+
auto rows = jsi::Array(rt, row_count);
|
|
175
|
+
|
|
176
|
+
if (row_count > 0) {
|
|
177
|
+
for (int i = 0; i < row_count; i++) {
|
|
178
|
+
auto row = jsi::Array(rt, status.column_names.size());
|
|
179
|
+
std::vector<JSVariant> native_row = status.rows[i];
|
|
180
|
+
for (int j = 0; j < native_row.size(); j++) {
|
|
181
|
+
auto value = toJSI(rt, native_row[j]);
|
|
182
|
+
row.setValueAtIndex(rt, j, value);
|
|
183
|
+
}
|
|
184
|
+
rows.setValueAtIndex(rt, i, std::move(row));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
res.setProperty(rt, "rawRows", std::move(rows));
|
|
188
|
+
|
|
189
|
+
size_t column_count = status.column_names.size();
|
|
190
|
+
auto column_array = jsi::Array(rt, column_count);
|
|
191
|
+
for (int i = 0; i < column_count; i++) {
|
|
192
|
+
auto column = status.column_names.at(i);
|
|
193
|
+
column_array.setValueAtIndex(rt, i, toJSI(rt, column));
|
|
194
|
+
}
|
|
195
|
+
res.setProperty(rt, "columnNames", std::move(column_array));
|
|
196
|
+
return res;
|
|
197
|
+
}
|
|
198
|
+
|
|
161
199
|
jsi::Value
|
|
162
200
|
createResult(jsi::Runtime &rt, BridgeResult status,
|
|
163
201
|
std::vector<DumbHostObject> *results,
|
|
@@ -266,14 +304,12 @@ BatchResult importSQLFile(std::string dbName, std::string fileLocation) {
|
|
|
266
304
|
try {
|
|
267
305
|
int affectedRows = 0;
|
|
268
306
|
int commands = 0;
|
|
269
|
-
opsqlite_execute(dbName, "BEGIN EXCLUSIVE TRANSACTION", nullptr
|
|
270
|
-
nullptr);
|
|
307
|
+
opsqlite_execute(dbName, "BEGIN EXCLUSIVE TRANSACTION", nullptr);
|
|
271
308
|
while (std::getline(sqFile, line, '\n')) {
|
|
272
309
|
if (!line.empty()) {
|
|
273
|
-
BridgeResult result =
|
|
274
|
-
opsqlite_execute(dbName, line, nullptr, nullptr, nullptr);
|
|
310
|
+
BridgeResult result = opsqlite_execute(dbName, line, nullptr);
|
|
275
311
|
if (result.type == SQLiteError) {
|
|
276
|
-
opsqlite_execute(dbName, "ROLLBACK", nullptr
|
|
312
|
+
opsqlite_execute(dbName, "ROLLBACK", nullptr);
|
|
277
313
|
sqFile.close();
|
|
278
314
|
return {SQLiteError, result.message, 0, commands};
|
|
279
315
|
} else {
|
|
@@ -283,11 +319,11 @@ BatchResult importSQLFile(std::string dbName, std::string fileLocation) {
|
|
|
283
319
|
}
|
|
284
320
|
}
|
|
285
321
|
sqFile.close();
|
|
286
|
-
opsqlite_execute(dbName, "COMMIT", nullptr
|
|
322
|
+
opsqlite_execute(dbName, "COMMIT", nullptr);
|
|
287
323
|
return {SQLiteOk, "", affectedRows, commands};
|
|
288
324
|
} catch (...) {
|
|
289
325
|
sqFile.close();
|
|
290
|
-
opsqlite_execute(dbName, "ROLLBACK", nullptr
|
|
326
|
+
opsqlite_execute(dbName, "ROLLBACK", nullptr);
|
|
291
327
|
return {SQLiteError,
|
|
292
328
|
"[op-sqlite][loadSQLFile] Unexpected error, transaction was "
|
|
293
329
|
"rolledback",
|
package/cpp/utils.h
CHANGED
|
@@ -23,9 +23,11 @@ std::vector<int> to_int_vec(jsi::Runtime &rt, jsi::Value const &xs);
|
|
|
23
23
|
jsi::Value createResult(jsi::Runtime &rt, BridgeResult status,
|
|
24
24
|
std::vector<DumbHostObject> *results,
|
|
25
25
|
std::shared_ptr<std::vector<SmartHostObject>> metadata);
|
|
26
|
+
jsi::Value create_js_rows(jsi::Runtime &rt, BridgeResult status);
|
|
26
27
|
jsi::Value
|
|
27
28
|
create_raw_result(jsi::Runtime &rt, BridgeResult status,
|
|
28
29
|
const std::vector<std::vector<JSVariant>> *results);
|
|
30
|
+
|
|
29
31
|
void to_batch_arguments(jsi::Runtime &rt, jsi::Array const &batchParams,
|
|
30
32
|
std::vector<BatchArguments> *commands);
|
|
31
33
|
|
package/ios/OPSQLite.mm
CHANGED
|
@@ -75,15 +75,25 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install) {
|
|
|
75
75
|
documentPath = [paths objectAtIndex:0];
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
NSBundle *
|
|
79
|
-
|
|
78
|
+
NSBundle *crsqlite_bundle =
|
|
79
|
+
[NSBundle bundleWithIdentifier:@"io.vlcn.crsqlite"];
|
|
80
|
+
NSString *crsqlite_path = [crsqlite_bundle pathForResource:@"crsqlite"
|
|
81
|
+
ofType:@""];
|
|
82
|
+
NSBundle *libsqlitevec_bundle =
|
|
83
|
+
[NSBundle bundleWithIdentifier:@"com.ospfranco.sqlitevec"];
|
|
84
|
+
NSString *sqlite_vec_path = [libsqlitevec_bundle pathForResource:@"sqlitevec"
|
|
85
|
+
ofType:@""];
|
|
86
|
+
|
|
87
|
+
if (crsqlite_path == nil) {
|
|
88
|
+
crsqlite_path = @"";
|
|
89
|
+
}
|
|
80
90
|
|
|
81
|
-
if (
|
|
82
|
-
|
|
91
|
+
if (sqlite_vec_path == nil) {
|
|
92
|
+
sqlite_vec_path = @"";
|
|
83
93
|
}
|
|
84
94
|
|
|
85
95
|
opsqlite::install(runtime, callInvoker, [documentPath UTF8String],
|
|
86
|
-
[
|
|
96
|
+
[crsqlite_path UTF8String], [sqlite_vec_path UTF8String]);
|
|
87
97
|
return @true;
|
|
88
98
|
}
|
|
89
99
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>AvailableLibraries</key>
|
|
6
|
+
<array>
|
|
7
|
+
<dict>
|
|
8
|
+
<key>LibraryIdentifier</key>
|
|
9
|
+
<string>ios-arm64</string>
|
|
10
|
+
<key>LibraryPath</key>
|
|
11
|
+
<string>sqlitevec.framework</string>
|
|
12
|
+
<key>SupportedArchitectures</key>
|
|
13
|
+
<array>
|
|
14
|
+
<string>arm64</string>
|
|
15
|
+
</array>
|
|
16
|
+
<key>SupportedPlatform</key>
|
|
17
|
+
<string>ios</string>
|
|
18
|
+
</dict>
|
|
19
|
+
<dict>
|
|
20
|
+
<key>LibraryIdentifier</key>
|
|
21
|
+
<string>ios-arm64_x86_64-simulator</string>
|
|
22
|
+
<key>LibraryPath</key>
|
|
23
|
+
<string>sqlitevec.framework</string>
|
|
24
|
+
<key>SupportedArchitectures</key>
|
|
25
|
+
<array>
|
|
26
|
+
<string>arm64</string>
|
|
27
|
+
<string>x86_64</string>
|
|
28
|
+
</array>
|
|
29
|
+
<key>SupportedPlatform</key>
|
|
30
|
+
<string>ios</string>
|
|
31
|
+
<key>SupportedPlatformVariant</key>
|
|
32
|
+
<string>simulator</string>
|
|
33
|
+
</dict>
|
|
34
|
+
</array>
|
|
35
|
+
<key>CFBundlePackageType</key>
|
|
36
|
+
<string>XFWK</string>
|
|
37
|
+
<key>XCFrameworkFormatVersion</key>
|
|
38
|
+
<string>1.0</string>
|
|
39
|
+
<key>CFBundleVersion</key>
|
|
40
|
+
<string>1.0.0</string>
|
|
41
|
+
<key>CFBundleShortVersionString</key>
|
|
42
|
+
<string>1.0.0</string>
|
|
43
|
+
<key>MinimumOSVersion</key>
|
|
44
|
+
<string>8.0</string>
|
|
45
|
+
</dict>
|
|
46
|
+
</plist>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
|
6
|
+
<string>en</string>
|
|
7
|
+
<key>CFBundleExecutable</key>
|
|
8
|
+
<string>sqlitevec</string>
|
|
9
|
+
<key>CFBundleIdentifier</key>
|
|
10
|
+
<string>com.ospfranco.sqlitevec</string>
|
|
11
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
|
12
|
+
<string>6.0</string>
|
|
13
|
+
<key>CFBundlePackageType</key>
|
|
14
|
+
<string>FMWK</string>
|
|
15
|
+
<key>CFBundleSignature</key>
|
|
16
|
+
<string>????</string>
|
|
17
|
+
<key>CFBundleVersion</key>
|
|
18
|
+
<string>1.0.0</string>
|
|
19
|
+
<key>CFBundleShortVersionString</key>
|
|
20
|
+
<string>1.0.0</string>
|
|
21
|
+
<key>MinimumOSVersion</key>
|
|
22
|
+
<string>8.0</string>
|
|
23
|
+
</dict>
|
|
24
|
+
</plist>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
|
6
|
+
<string>en</string>
|
|
7
|
+
<key>CFBundleExecutable</key>
|
|
8
|
+
<string>sqlitevec</string>
|
|
9
|
+
<key>CFBundleIdentifier</key>
|
|
10
|
+
<string>com.ospfranco.sqlitevec</string>
|
|
11
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
|
12
|
+
<string>6.0</string>
|
|
13
|
+
<key>CFBundlePackageType</key>
|
|
14
|
+
<string>FMWK</string>
|
|
15
|
+
<key>CFBundleSignature</key>
|
|
16
|
+
<string>????</string>
|
|
17
|
+
<key>CFBundleVersion</key>
|
|
18
|
+
<string>1.0.0</string>
|
|
19
|
+
<key>CFBundleShortVersionString</key>
|
|
20
|
+
<string>1.0.0</string>
|
|
21
|
+
<key>MinimumOSVersion</key>
|
|
22
|
+
<string>8.0</string>
|
|
23
|
+
</dict>
|
|
24
|
+
</plist>
|
|
Binary file
|
package/lib/commonjs/index.js
CHANGED
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.openSync = exports.openRemote = exports.open = exports.moveAssetsDatabase = exports.isSQLCipher = exports.isLibsql = exports.OPSQLite = exports.IOS_LIBRARY_PATH = exports.IOS_DOCUMENT_PATH = exports.ANDROID_FILES_PATH = exports.ANDROID_EXTERNAL_FILES_PATH = exports.ANDROID_DATABASE_PATH = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
|
-
// import NativeOPSQLite from './NativeOPSQLite';
|
|
9
|
-
|
|
10
8
|
if (global.__OPSQLiteProxy == null) {
|
|
11
9
|
if (_reactNative.NativeModules.OPSQLite == null) {
|
|
12
10
|
throw new Error('Base module not found. Maybe try rebuilding the app.');
|
|
@@ -119,13 +117,12 @@ function enhanceDB(db, options) {
|
|
|
119
117
|
attach: db.attach,
|
|
120
118
|
detach: db.detach,
|
|
121
119
|
executeBatch: db.executeBatch,
|
|
122
|
-
executeBatchAsync: db.executeBatchAsync,
|
|
123
120
|
loadFile: db.loadFile,
|
|
124
121
|
updateHook: db.updateHook,
|
|
125
122
|
commitHook: db.commitHook,
|
|
126
123
|
rollbackHook: db.rollbackHook,
|
|
127
124
|
loadExtension: db.loadExtension,
|
|
128
|
-
|
|
125
|
+
executeRaw: db.executeRaw,
|
|
129
126
|
getDbPath: db.getDbPath,
|
|
130
127
|
reactiveExecute: db.reactiveExecute,
|
|
131
128
|
sync: db.sync,
|
|
@@ -133,27 +130,44 @@ function enhanceDB(db, options) {
|
|
|
133
130
|
db.close();
|
|
134
131
|
delete locks[options.url];
|
|
135
132
|
},
|
|
136
|
-
|
|
133
|
+
executeWithHostObjects: async (query, params) => {
|
|
137
134
|
const sanitizedParams = params?.map(p => {
|
|
138
135
|
if (ArrayBuffer.isView(p)) {
|
|
139
136
|
return p.buffer;
|
|
140
137
|
}
|
|
141
138
|
return p;
|
|
142
139
|
});
|
|
143
|
-
const result = db.
|
|
140
|
+
const result = await db.executeWithHostObjects(query, sanitizedParams);
|
|
144
141
|
enhanceQueryResult(result);
|
|
145
142
|
return result;
|
|
146
143
|
},
|
|
147
|
-
|
|
144
|
+
execute: async (query, params) => {
|
|
148
145
|
const sanitizedParams = params?.map(p => {
|
|
149
146
|
if (ArrayBuffer.isView(p)) {
|
|
150
147
|
return p.buffer;
|
|
151
148
|
}
|
|
152
149
|
return p;
|
|
153
150
|
});
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
151
|
+
let intermediateResult = await db.execute(query, sanitizedParams);
|
|
152
|
+
let rows = [];
|
|
153
|
+
for (let i = 0; i < (intermediateResult.rawRows?.length ?? 0); i++) {
|
|
154
|
+
let row = {};
|
|
155
|
+
for (let j = 0; j < intermediateResult.columnNames.length ?? 0; j++) {
|
|
156
|
+
let columnName = intermediateResult.columnNames[j];
|
|
157
|
+
let value = intermediateResult.rawRows[i][j];
|
|
158
|
+
row[columnName] = value;
|
|
159
|
+
}
|
|
160
|
+
rows.push(row);
|
|
161
|
+
}
|
|
162
|
+
let res = {
|
|
163
|
+
...intermediateResult,
|
|
164
|
+
rows: {
|
|
165
|
+
_array: rows,
|
|
166
|
+
length: rows.length,
|
|
167
|
+
item: idx => rows[idx]
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
return res;
|
|
157
171
|
},
|
|
158
172
|
prepareStatement: query => {
|
|
159
173
|
const stmt = db.prepareStatement(query);
|
|
@@ -167,8 +181,8 @@ function enhanceDB(db, options) {
|
|
|
167
181
|
});
|
|
168
182
|
stmt.bind(sanitizedParams);
|
|
169
183
|
},
|
|
170
|
-
execute: () => {
|
|
171
|
-
const res = stmt.execute();
|
|
184
|
+
execute: async () => {
|
|
185
|
+
const res = await stmt.execute();
|
|
172
186
|
enhanceQueryResult(res);
|
|
173
187
|
return res;
|
|
174
188
|
}
|
|
@@ -176,53 +190,62 @@ function enhanceDB(db, options) {
|
|
|
176
190
|
},
|
|
177
191
|
transaction: async fn => {
|
|
178
192
|
let isFinalized = false;
|
|
179
|
-
|
|
180
|
-
// Local transaction context object implementation
|
|
181
|
-
const execute = (query, params) => {
|
|
193
|
+
const execute = async (query, params) => {
|
|
182
194
|
if (isFinalized) {
|
|
183
195
|
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
184
196
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
197
|
+
let intermediateResult = await enhancedDb.execute(query, params);
|
|
198
|
+
let rows = [];
|
|
199
|
+
for (let i = 0; i < (intermediateResult.rawRows?.length ?? 0); i++) {
|
|
200
|
+
let row = {};
|
|
201
|
+
for (let j = 0; j < intermediateResult.columnNames.length ?? 0; j++) {
|
|
202
|
+
let columnName = intermediateResult.columnNames[j];
|
|
203
|
+
row[columnName] = intermediateResult.rawRows[i][j];
|
|
204
|
+
}
|
|
205
|
+
rows.push(row);
|
|
190
206
|
}
|
|
191
|
-
|
|
207
|
+
let res = {
|
|
208
|
+
...intermediateResult,
|
|
209
|
+
rows: {
|
|
210
|
+
_array: rows,
|
|
211
|
+
length: 0,
|
|
212
|
+
item: idx => rows[idx]
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
return res;
|
|
192
216
|
};
|
|
193
|
-
const commit = () => {
|
|
217
|
+
const commit = async () => {
|
|
194
218
|
if (isFinalized) {
|
|
195
219
|
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
196
220
|
}
|
|
197
|
-
const result = enhancedDb.execute('COMMIT;');
|
|
221
|
+
const result = await enhancedDb.execute('COMMIT;');
|
|
198
222
|
isFinalized = true;
|
|
199
223
|
return result;
|
|
200
224
|
};
|
|
201
|
-
const rollback = () => {
|
|
225
|
+
const rollback = async () => {
|
|
202
226
|
if (isFinalized) {
|
|
203
227
|
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
204
228
|
}
|
|
205
|
-
const result = enhancedDb.execute('ROLLBACK;');
|
|
229
|
+
const result = await enhancedDb.execute('ROLLBACK;');
|
|
206
230
|
isFinalized = true;
|
|
207
231
|
return result;
|
|
208
232
|
};
|
|
209
233
|
async function run() {
|
|
210
234
|
try {
|
|
211
|
-
await enhancedDb.
|
|
235
|
+
await enhancedDb.execute('BEGIN TRANSACTION;');
|
|
212
236
|
await fn({
|
|
213
237
|
commit,
|
|
214
238
|
execute,
|
|
215
|
-
executeAsync,
|
|
216
239
|
rollback
|
|
217
240
|
});
|
|
218
241
|
if (!isFinalized) {
|
|
219
|
-
commit();
|
|
242
|
+
await commit();
|
|
220
243
|
}
|
|
221
244
|
} catch (executionError) {
|
|
222
|
-
console.warn('transaction error', executionError);
|
|
245
|
+
// console.warn('transaction error', executionError);
|
|
223
246
|
if (!isFinalized) {
|
|
224
247
|
try {
|
|
225
|
-
rollback();
|
|
248
|
+
await rollback();
|
|
226
249
|
} catch (rollbackError) {
|
|
227
250
|
throw rollbackError;
|
|
228
251
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","global","__OPSQLiteProxy","NativeModules","OPSQLite","Error","install","result","proxy","exports","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","res","enhanceDB","db","options","lock","queue","inProgress","startNextTransaction","tx","shift","setImmediate","start","enhancedDb","delete","attach","detach","executeBatch","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","global","__OPSQLiteProxy","NativeModules","OPSQLite","Error","install","result","proxy","exports","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","res","enhanceDB","db","options","lock","queue","inProgress","startNextTransaction","tx","shift","setImmediate","start","enhancedDb","delete","attach","detach","executeBatch","loadFile","updateHook","commitHook","rollbackHook","loadExtension","executeRaw","getDbPath","reactiveExecute","sync","close","url","executeWithHostObjects","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","execute","intermediateResult","i","rawRows","row","j","columnNames","columnName","value","push","prepareStatement","stmt","bind","transaction","fn","isFinalized","commit","rollback","run","executionError","rollbackError","Promise","resolve","reject","then","catch","openSync","isLibsql","openRemote","open","moveAssetsDatabase","args","isSQLCipher"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeOPSQLite.ts"],"mappings":"AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAgBpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,UAAU,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeOPSQLite.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAgBpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,UAAU,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
2
3
|
import { NativeModules } from 'react-native';
|
|
3
4
|
if (global.__OPSQLiteProxy == null) {
|
|
4
5
|
if (NativeModules.OPSQLite == null) {
|
|
@@ -108,13 +109,12 @@ function enhanceDB(db, options) {
|
|
|
108
109
|
attach: db.attach,
|
|
109
110
|
detach: db.detach,
|
|
110
111
|
executeBatch: db.executeBatch,
|
|
111
|
-
executeBatchAsync: db.executeBatchAsync,
|
|
112
112
|
loadFile: db.loadFile,
|
|
113
113
|
updateHook: db.updateHook,
|
|
114
114
|
commitHook: db.commitHook,
|
|
115
115
|
rollbackHook: db.rollbackHook,
|
|
116
116
|
loadExtension: db.loadExtension,
|
|
117
|
-
|
|
117
|
+
executeRaw: db.executeRaw,
|
|
118
118
|
getDbPath: db.getDbPath,
|
|
119
119
|
reactiveExecute: db.reactiveExecute,
|
|
120
120
|
sync: db.sync,
|
|
@@ -122,27 +122,44 @@ function enhanceDB(db, options) {
|
|
|
122
122
|
db.close();
|
|
123
123
|
delete locks[options.url];
|
|
124
124
|
},
|
|
125
|
-
|
|
125
|
+
executeWithHostObjects: async (query, params) => {
|
|
126
126
|
const sanitizedParams = params?.map(p => {
|
|
127
127
|
if (ArrayBuffer.isView(p)) {
|
|
128
128
|
return p.buffer;
|
|
129
129
|
}
|
|
130
130
|
return p;
|
|
131
131
|
});
|
|
132
|
-
const result = db.
|
|
132
|
+
const result = await db.executeWithHostObjects(query, sanitizedParams);
|
|
133
133
|
enhanceQueryResult(result);
|
|
134
134
|
return result;
|
|
135
135
|
},
|
|
136
|
-
|
|
136
|
+
execute: async (query, params) => {
|
|
137
137
|
const sanitizedParams = params?.map(p => {
|
|
138
138
|
if (ArrayBuffer.isView(p)) {
|
|
139
139
|
return p.buffer;
|
|
140
140
|
}
|
|
141
141
|
return p;
|
|
142
142
|
});
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
let intermediateResult = await db.execute(query, sanitizedParams);
|
|
144
|
+
let rows = [];
|
|
145
|
+
for (let i = 0; i < (intermediateResult.rawRows?.length ?? 0); i++) {
|
|
146
|
+
let row = {};
|
|
147
|
+
for (let j = 0; j < intermediateResult.columnNames.length ?? 0; j++) {
|
|
148
|
+
let columnName = intermediateResult.columnNames[j];
|
|
149
|
+
let value = intermediateResult.rawRows[i][j];
|
|
150
|
+
row[columnName] = value;
|
|
151
|
+
}
|
|
152
|
+
rows.push(row);
|
|
153
|
+
}
|
|
154
|
+
let res = {
|
|
155
|
+
...intermediateResult,
|
|
156
|
+
rows: {
|
|
157
|
+
_array: rows,
|
|
158
|
+
length: rows.length,
|
|
159
|
+
item: idx => rows[idx]
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
return res;
|
|
146
163
|
},
|
|
147
164
|
prepareStatement: query => {
|
|
148
165
|
const stmt = db.prepareStatement(query);
|
|
@@ -156,8 +173,8 @@ function enhanceDB(db, options) {
|
|
|
156
173
|
});
|
|
157
174
|
stmt.bind(sanitizedParams);
|
|
158
175
|
},
|
|
159
|
-
execute: () => {
|
|
160
|
-
const res = stmt.execute();
|
|
176
|
+
execute: async () => {
|
|
177
|
+
const res = await stmt.execute();
|
|
161
178
|
enhanceQueryResult(res);
|
|
162
179
|
return res;
|
|
163
180
|
}
|
|
@@ -165,53 +182,62 @@ function enhanceDB(db, options) {
|
|
|
165
182
|
},
|
|
166
183
|
transaction: async fn => {
|
|
167
184
|
let isFinalized = false;
|
|
168
|
-
|
|
169
|
-
// Local transaction context object implementation
|
|
170
|
-
const execute = (query, params) => {
|
|
185
|
+
const execute = async (query, params) => {
|
|
171
186
|
if (isFinalized) {
|
|
172
187
|
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
173
188
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
189
|
+
let intermediateResult = await enhancedDb.execute(query, params);
|
|
190
|
+
let rows = [];
|
|
191
|
+
for (let i = 0; i < (intermediateResult.rawRows?.length ?? 0); i++) {
|
|
192
|
+
let row = {};
|
|
193
|
+
for (let j = 0; j < intermediateResult.columnNames.length ?? 0; j++) {
|
|
194
|
+
let columnName = intermediateResult.columnNames[j];
|
|
195
|
+
row[columnName] = intermediateResult.rawRows[i][j];
|
|
196
|
+
}
|
|
197
|
+
rows.push(row);
|
|
179
198
|
}
|
|
180
|
-
|
|
199
|
+
let res = {
|
|
200
|
+
...intermediateResult,
|
|
201
|
+
rows: {
|
|
202
|
+
_array: rows,
|
|
203
|
+
length: 0,
|
|
204
|
+
item: idx => rows[idx]
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
return res;
|
|
181
208
|
};
|
|
182
|
-
const commit = () => {
|
|
209
|
+
const commit = async () => {
|
|
183
210
|
if (isFinalized) {
|
|
184
211
|
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
185
212
|
}
|
|
186
|
-
const result = enhancedDb.execute('COMMIT;');
|
|
213
|
+
const result = await enhancedDb.execute('COMMIT;');
|
|
187
214
|
isFinalized = true;
|
|
188
215
|
return result;
|
|
189
216
|
};
|
|
190
|
-
const rollback = () => {
|
|
217
|
+
const rollback = async () => {
|
|
191
218
|
if (isFinalized) {
|
|
192
219
|
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
193
220
|
}
|
|
194
|
-
const result = enhancedDb.execute('ROLLBACK;');
|
|
221
|
+
const result = await enhancedDb.execute('ROLLBACK;');
|
|
195
222
|
isFinalized = true;
|
|
196
223
|
return result;
|
|
197
224
|
};
|
|
198
225
|
async function run() {
|
|
199
226
|
try {
|
|
200
|
-
await enhancedDb.
|
|
227
|
+
await enhancedDb.execute('BEGIN TRANSACTION;');
|
|
201
228
|
await fn({
|
|
202
229
|
commit,
|
|
203
230
|
execute,
|
|
204
|
-
executeAsync,
|
|
205
231
|
rollback
|
|
206
232
|
});
|
|
207
233
|
if (!isFinalized) {
|
|
208
|
-
commit();
|
|
234
|
+
await commit();
|
|
209
235
|
}
|
|
210
236
|
} catch (executionError) {
|
|
211
|
-
console.warn('transaction error', executionError);
|
|
237
|
+
// console.warn('transaction error', executionError);
|
|
212
238
|
if (!isFinalized) {
|
|
213
239
|
try {
|
|
214
|
-
rollback();
|
|
240
|
+
await rollback();
|
|
215
241
|
} catch (rollbackError) {
|
|
216
242
|
throw rollbackError;
|
|
217
243
|
}
|