@op-engineering/op-sqlite 2.0.12 → 2.0.14
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 +55 -30
- package/android/build.gradle +4 -0
- package/android/src/main/AndroidManifest.xml +1 -4
- package/cpp/PreparedStatementHostObject.cpp +2 -12
- package/cpp/bindings.cpp +78 -0
- package/cpp/bridge.cpp +186 -0
- package/cpp/bridge.h +9 -0
- package/cpp/utils.cpp +16 -0
- package/cpp/utils.h +4 -0
- package/lib/commonjs/index.js +3 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +3 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +4 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/op-sqlite.podspec +6 -8
- package/package.json +1 -1
- package/src/index.ts +12 -0
package/README.md
CHANGED
|
@@ -1,29 +1,27 @@
|
|
|
1
|
-

|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
npx pod-install</pre>
|
|
7
|
-
<br />
|
|
8
|
-
</div>
|
|
9
|
-
<br />
|
|
3
|
+
```sh
|
|
4
|
+
yarn add @op-engineering/op-sqlite && npx pod-install
|
|
5
|
+
```
|
|
10
6
|
|
|
11
|
-
OP
|
|
7
|
+
OP-SQLite embeds the latest version of SQLite and provides a low-level API to execute SQL queries.
|
|
12
8
|
|
|
13
9
|
**Current SQLite version: 3.44.0**
|
|
14
10
|
|
|
15
|
-
Created by [@ospfranco](https://twitter.com/ospfranco). **Please consider
|
|
11
|
+
Created by [@ospfranco](https://twitter.com/ospfranco). **Please consider sponsoring!**.
|
|
16
12
|
|
|
17
13
|
## Benchmarks
|
|
18
14
|
|
|
19
|
-
You can find the [benchmarking code in the example app](https://github.com/OP-Engineering/op-sqlite/blob/main/example/src/Database.ts#L44). This is run using the `OP_SQLITE_PERF` flag which in turns disables some old and unused features of sqlite to squeeze the last drop of performance.
|
|
20
|
-
|
|
21
|
-

|
|
15
|
+
You can find the [benchmarking code in the example app](https://github.com/OP-Engineering/op-sqlite/blob/main/example/src/Database.ts#L44). This is run using the `OP_SQLITE_PERF` [performance flag](#perf-flag) which in turns disables some old and unused features of sqlite to squeeze the last drop of performance.
|
|
22
16
|
|
|
23
|
-
Memory consumption is
|
|
17
|
+
Memory consumption is minimised as much as possible since all the data is shared via HostObjects, meaning large queries can be run in few mbs.
|
|
24
18
|
|
|
25
19
|
You can also turn on [Memory Mapping](#speed) to make your queries even faster by skipping the kernel during I/O and potentially reduce RAM usage, this comes with some disadvantages though. If you want even more speed and you can re-use your queries you can use [Prepared Statements](#prepared-statements).
|
|
26
20
|
|
|
21
|
+
Here is another benchmark with all the optimizations reading a single string value against react-native-mmkv.
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+
|
|
27
25
|
# Encryption
|
|
28
26
|
|
|
29
27
|
If you need to encrypt your entire database, there is [`op-sqlcipher`](https://github.com/OP-Engineering/op-sqlcipher), which is a fork of this library that uses [SQLCipher](https://github.com/sqlcipher/sqlcipher). It completely encrypts the database with minimal overhead.
|
|
@@ -59,7 +57,7 @@ import {
|
|
|
59
57
|
IOS_DOCUMENT_PATH,
|
|
60
58
|
ANDROID_DATABASE_PATH, // Default Android
|
|
61
59
|
ANDROID_FILES_PATH,
|
|
62
|
-
ANDROID_EXTERNAL_FILES_PATH,
|
|
60
|
+
ANDROID_EXTERNAL_FILES_PATH, // Android SD Card
|
|
63
61
|
open,
|
|
64
62
|
} from '@op-engineering/op-sqlite';
|
|
65
63
|
|
|
@@ -104,9 +102,11 @@ const largeDb = open({
|
|
|
104
102
|
});
|
|
105
103
|
```
|
|
106
104
|
|
|
105
|
+
In memory databases are faster since they don't need to hit the disk I/O to save the data and are useful for synchronization only workflows.
|
|
106
|
+
|
|
107
107
|
# Performance
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
You can tweak SQLite to be faster (at the cost of some disadvantages). One possibility is [Memory Mapping](https://www.sqlite.org/mmap.html). It allows to read/write to/from the disk without going through the kernel. However, if your queries throw an error your application might crash.
|
|
110
110
|
|
|
111
111
|
To turn on Memory Mapping, execute the following pragma statement after opening a db:
|
|
112
112
|
|
|
@@ -119,22 +119,32 @@ const db = open({
|
|
|
119
119
|
db.execute('PRAGMA mmap_size=268435456');
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
You can also set journaling to memory (or even OFF if you are kinda crazy) to gain even more speed. Journaling is what allows SQLite to ROLLBACK statements and it
|
|
122
|
+
You can also set journaling to memory (or even OFF if you are kinda crazy) to gain even more speed. Journaling is what allows SQLite to ROLLBACK statements and modifying it dangerous, so do it at your own risk
|
|
123
123
|
|
|
124
124
|
```ts
|
|
125
125
|
db.execute('PRAGMA journal_mode = MEMORY;'); // or OFF
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
If you use [prepared statements](#prepared-statements)
|
|
129
|
-
|
|
130
|
-

|
|
128
|
+
If you use [prepared statements](#prepared-statements) are useful to reduce the time of critical queries.
|
|
131
129
|
|
|
132
130
|
# Perf flag
|
|
133
131
|
|
|
134
|
-
You can turn on the performance flag to tweak all possible performance enhancing compilation flags, this greatly affects performance of sqlite itself
|
|
132
|
+
You can turn on the performance flag to tweak all possible performance enhancing compilation flags, this greatly affects performance of sqlite itself:
|
|
133
|
+
|
|
134
|
+
```sh
|
|
135
|
+
# For iOS install pods with the following env variable, you can also just an export like on Android
|
|
136
|
+
# OP_SQLITE_PERF=1 npx pod-install
|
|
135
137
|
|
|
138
|
+
# For Android you need to export the environment variable before running any command
|
|
139
|
+
export OP_SQLITE_PERF=1
|
|
140
|
+
# then any android build command will use the performance mode
|
|
141
|
+
yarn android
|
|
136
142
|
```
|
|
137
|
-
|
|
143
|
+
|
|
144
|
+
If correctly set you should see the following output in your console
|
|
145
|
+
|
|
146
|
+
```sh
|
|
147
|
+
OP-SQLITE performance mode enabled! 🚀
|
|
138
148
|
```
|
|
139
149
|
|
|
140
150
|
# SQLite Gotchas
|
|
@@ -150,7 +160,7 @@ db.execute('CREATE TABLE Test (
|
|
|
150
160
|
) STRICT;');
|
|
151
161
|
```
|
|
152
162
|
|
|
153
|
-
If you don't set it, SQLite will happily write whatever you insert in your table, independtly of the declared type.
|
|
163
|
+
If you don't set it, SQLite will happily write whatever you insert in your table, independtly of the declared type (it will try to cast it though, e.g. "1" string might be turned to 1 int).
|
|
154
164
|
|
|
155
165
|
## Foreign constraints
|
|
156
166
|
|
|
@@ -326,13 +336,9 @@ metadata.forEach((column) => {
|
|
|
326
336
|
You might have too much SQL to process and it will cause your application to freeze. There are async versions for some of the operations. This will offload the SQLite processing to a different thread.
|
|
327
337
|
|
|
328
338
|
```ts
|
|
329
|
-
db.executeAsync(
|
|
330
|
-
'
|
|
331
|
-
|
|
332
|
-
[]).then(({rows}) => {
|
|
333
|
-
console.log('users', rows._array);
|
|
334
|
-
})
|
|
335
|
-
);
|
|
339
|
+
db.executeAsync('SELECT * FROM "User";', []).then(({ rows }) => {
|
|
340
|
+
console.log('users', rows._array);
|
|
341
|
+
});
|
|
336
342
|
```
|
|
337
343
|
|
|
338
344
|
## Blobs
|
|
@@ -378,6 +384,15 @@ let results2 = statement.execute();
|
|
|
378
384
|
|
|
379
385
|
You only pay the price of parsing the query once, and each subsequent execution should be faster.
|
|
380
386
|
|
|
387
|
+
# Raw execution
|
|
388
|
+
|
|
389
|
+
If you don't care about the keys you can use a simplified execution that will return an array of results.
|
|
390
|
+
|
|
391
|
+
```ts
|
|
392
|
+
let result = await db.executeRawAsync('SELECT * FROM Users;');
|
|
393
|
+
// result = [[123, 'Katie', ...]]
|
|
394
|
+
```
|
|
395
|
+
|
|
381
396
|
# Attach or Detach other databases
|
|
382
397
|
|
|
383
398
|
SQLite supports attaching or detaching other database files into your main database connection through an alias.
|
|
@@ -520,6 +535,16 @@ You can specify flags via `<PROJECT_ROOT>/android/gradle.properties` like so:
|
|
|
520
535
|
OPSQLiteFlags="-DSQLITE_ENABLE_FTS5=1"
|
|
521
536
|
```
|
|
522
537
|
|
|
538
|
+
# Runtime loadable extensions
|
|
539
|
+
|
|
540
|
+
You can load your own extensions on runtime.
|
|
541
|
+
|
|
542
|
+
```ts
|
|
543
|
+
db.loadExtension('/path/to/library.so', 'optional_entry_point_function_name');
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
You will need to compile your extension for both iOS and Android and all the respective architectures and make it available in a location the library can read (be careful about sandboxing).
|
|
547
|
+
|
|
523
548
|
# Additional configuration
|
|
524
549
|
|
|
525
550
|
## App groups (iOS only)
|
package/android/build.gradle
CHANGED
|
@@ -76,6 +76,10 @@ android {
|
|
|
76
76
|
|
|
77
77
|
externalNativeBuild {
|
|
78
78
|
cmake {
|
|
79
|
+
if(System.getenv("OP_SQLITE_PERF") == '1') {
|
|
80
|
+
println "OP-SQLITE performance mode enabled! 🚀"
|
|
81
|
+
cFlags "-DSQLITE_DQS=0", "-DSQLITE_THREADSAFE=0", "-DSQLITE_DEFAULT_MEMSTATUS=0", "-DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1", "-DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1", "-DSQLITE_MAX_EXPR_DEPTH=0", "-DSQLITE_OMIT_DEPRECATED=1", "-DSQLITE_OMIT_PROGRESS_CALLBACK=1", "-DSQLITE_OMIT_SHARED_CACHE=1", "-DSQLITE_USE_ALLOCA=1"
|
|
82
|
+
}
|
|
79
83
|
cppFlags "-O2", "-fexceptions", "-frtti", "-std=c++1y", "-DONANDROID"
|
|
80
84
|
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
|
|
81
85
|
arguments '-DANDROID_STL=c++_shared',
|
|
@@ -22,10 +22,6 @@ std::vector<jsi::PropNameID>
|
|
|
22
22
|
PreparedStatementHostObject::getPropertyNames(jsi::Runtime &rt) {
|
|
23
23
|
std::vector<jsi::PropNameID> keys;
|
|
24
24
|
|
|
25
|
-
// for (auto field : fields) {
|
|
26
|
-
// keys.push_back(jsi::PropNameID::forAscii(rt, field.first));
|
|
27
|
-
// }
|
|
28
|
-
|
|
29
25
|
return keys;
|
|
30
26
|
}
|
|
31
27
|
|
|
@@ -39,14 +35,8 @@ jsi::Value PreparedStatementHostObject::get(jsi::Runtime &rt,
|
|
|
39
35
|
throw std::runtime_error("statement has been freed");
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const jsi::Value &originalParams = args[0];
|
|
45
|
-
params = toVariantVec(rt, originalParams);
|
|
46
|
-
|
|
47
|
-
std::vector<DumbHostObject> results;
|
|
48
|
-
std::shared_ptr<std::vector<SmartHostObject>> metadata =
|
|
49
|
-
std::make_shared<std::vector<SmartHostObject>>();
|
|
38
|
+
const jsi::Value &js_params = args[0];
|
|
39
|
+
std::vector<JSVariant> params = toVariantVec(rt, js_params);
|
|
50
40
|
|
|
51
41
|
sqlite_bind_statement(_statement, ¶ms);
|
|
52
42
|
|
package/cpp/bindings.cpp
CHANGED
|
@@ -222,6 +222,67 @@ void install(jsi::Runtime &rt,
|
|
|
222
222
|
return jsiResult;
|
|
223
223
|
});
|
|
224
224
|
|
|
225
|
+
auto execute_raw_async = HOSTFN("executeRawAsync", 3) {
|
|
226
|
+
if (count < 3) {
|
|
227
|
+
throw std::runtime_error(
|
|
228
|
+
"[op-sqlite][executeAsync] Incorrect arguments for executeAsync");
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
const std::string dbName = args[0].asString(rt).utf8(rt);
|
|
232
|
+
const std::string query = args[1].asString(rt).utf8(rt);
|
|
233
|
+
const jsi::Value &originalParams = args[2];
|
|
234
|
+
|
|
235
|
+
std::vector<JSVariant> params = toVariantVec(rt, originalParams);
|
|
236
|
+
|
|
237
|
+
auto promiseCtr = rt.global().getPropertyAsFunction(rt, "Promise");
|
|
238
|
+
|
|
239
|
+
auto promise = promiseCtr.callAsConstructor(rt, HOSTFN("executor", 2) {
|
|
240
|
+
auto resolve = std::make_shared<jsi::Value>(rt, args[0]);
|
|
241
|
+
auto reject = std::make_shared<jsi::Value>(rt, args[1]);
|
|
242
|
+
|
|
243
|
+
auto task = [&rt, dbName, query, params = std::move(params), resolve,
|
|
244
|
+
reject]() {
|
|
245
|
+
try {
|
|
246
|
+
std::vector<std::vector<JSVariant>> results;
|
|
247
|
+
|
|
248
|
+
auto status = sqlite_execute_raw(dbName, query, ¶ms, &results);
|
|
249
|
+
|
|
250
|
+
if (invalidated) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
invoker->invokeAsync([&rt, results = std::move(results),
|
|
255
|
+
status = std::move(status), resolve, reject] {
|
|
256
|
+
if (status.type == SQLiteOk) {
|
|
257
|
+
auto jsiResult = create_raw_result(rt, status, &results);
|
|
258
|
+
resolve->asObject(rt).asFunction(rt).call(rt,
|
|
259
|
+
std::move(jsiResult));
|
|
260
|
+
} else {
|
|
261
|
+
auto errorCtr = rt.global().getPropertyAsFunction(rt, "Error");
|
|
262
|
+
auto error = errorCtr.callAsConstructor(
|
|
263
|
+
rt, jsi::String::createFromUtf8(rt, status.message));
|
|
264
|
+
reject->asObject(rt).asFunction(rt).call(rt, error);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
} catch (std::exception &exc) {
|
|
269
|
+
invoker->invokeAsync([&rt, exc = std::move(exc), reject] {
|
|
270
|
+
auto errorCtr = rt.global().getPropertyAsFunction(rt, "Error");
|
|
271
|
+
auto error = errorCtr.callAsConstructor(
|
|
272
|
+
rt, jsi::String::createFromAscii(rt, exc.what()));
|
|
273
|
+
reject->asObject(rt).asFunction(rt).call(rt, error);
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
pool.queueWork(task);
|
|
279
|
+
|
|
280
|
+
return {};
|
|
281
|
+
}));
|
|
282
|
+
|
|
283
|
+
return promise;
|
|
284
|
+
});
|
|
285
|
+
|
|
225
286
|
auto executeAsync = HOSTFN("executeAsync", 3) {
|
|
226
287
|
if (count < 3) {
|
|
227
288
|
throw std::runtime_error(
|
|
@@ -540,6 +601,21 @@ void install(jsi::Runtime &rt,
|
|
|
540
601
|
return jsi::Object::createFromHostObject(rt, preparedStatementHostObject);
|
|
541
602
|
});
|
|
542
603
|
|
|
604
|
+
auto load_extension = HOSTFN("loadExtension", 2) {
|
|
605
|
+
auto db_name = args[0].asString(rt).utf8(rt);
|
|
606
|
+
auto path = args[1].asString(rt).utf8(rt);
|
|
607
|
+
std::string entryPoint = "";
|
|
608
|
+
if (count > 2 && args[2].isString()) {
|
|
609
|
+
entryPoint = args[2].asString(rt).utf8(rt);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
auto result = sqlite_load_extension(db_name, path, entryPoint);
|
|
613
|
+
if (result.type == SQLiteError) {
|
|
614
|
+
throw std::runtime_error(result.message);
|
|
615
|
+
}
|
|
616
|
+
return {};
|
|
617
|
+
});
|
|
618
|
+
|
|
543
619
|
jsi::Object module = jsi::Object(rt);
|
|
544
620
|
|
|
545
621
|
module.setProperty(rt, "open", std::move(open));
|
|
@@ -556,6 +632,8 @@ void install(jsi::Runtime &rt,
|
|
|
556
632
|
module.setProperty(rt, "commitHook", std::move(commitHook));
|
|
557
633
|
module.setProperty(rt, "rollbackHook", std::move(rollbackHook));
|
|
558
634
|
module.setProperty(rt, "prepareStatement", std::move(prepareStatement));
|
|
635
|
+
module.setProperty(rt, "loadExtension", std::move(load_extension));
|
|
636
|
+
module.setProperty(rt, "executeRawAsync", std::move(execute_raw_async));
|
|
559
637
|
|
|
560
638
|
rt.global().setProperty(rt, "__OPSQLiteProxy", std::move(module));
|
|
561
639
|
}
|
package/cpp/bridge.cpp
CHANGED
|
@@ -518,6 +518,164 @@ sqlite_execute(std::string const &dbName, std::string const &query,
|
|
|
518
518
|
.insertId = static_cast<double>(latestInsertRowId)};
|
|
519
519
|
}
|
|
520
520
|
|
|
521
|
+
BridgeResult sqlite_execute_raw(std::string const &dbName,
|
|
522
|
+
std::string const &query,
|
|
523
|
+
const std::vector<JSVariant> *params,
|
|
524
|
+
std::vector<std::vector<JSVariant>> *results) {
|
|
525
|
+
|
|
526
|
+
if (dbMap.find(dbName) == dbMap.end()) {
|
|
527
|
+
return {.type = SQLiteError,
|
|
528
|
+
.message = "[op-sqlite]: Database " + dbName + " is not open"};
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
sqlite3 *db = dbMap[dbName];
|
|
532
|
+
|
|
533
|
+
sqlite3_stmt *statement;
|
|
534
|
+
const char *errorMessage;
|
|
535
|
+
const char *remainingStatement = nullptr;
|
|
536
|
+
|
|
537
|
+
bool isConsuming = true;
|
|
538
|
+
bool isFailed = false;
|
|
539
|
+
|
|
540
|
+
int result = SQLITE_OK;
|
|
541
|
+
|
|
542
|
+
do {
|
|
543
|
+
const char *queryStr =
|
|
544
|
+
remainingStatement == nullptr ? query.c_str() : remainingStatement;
|
|
545
|
+
|
|
546
|
+
int statementStatus =
|
|
547
|
+
sqlite3_prepare_v2(db, queryStr, -1, &statement, &remainingStatement);
|
|
548
|
+
|
|
549
|
+
if (statementStatus != SQLITE_OK) {
|
|
550
|
+
const char *message = sqlite3_errmsg(db);
|
|
551
|
+
return {
|
|
552
|
+
.type = SQLiteError,
|
|
553
|
+
.message = "[op-sqlite] SQL statement error:" +
|
|
554
|
+
std::to_string(statementStatus) +
|
|
555
|
+
" description:" + std::string(message) +
|
|
556
|
+
". See error codes: https://www.sqlite.org/rescode.html",
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// The statement did not fail to parse but there is nothing to do, just skip
|
|
561
|
+
// to the end
|
|
562
|
+
if (statement == NULL) {
|
|
563
|
+
continue;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
if (params != nullptr && params->size() > 0) {
|
|
567
|
+
bindStatement(statement, params);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
isConsuming = true;
|
|
571
|
+
|
|
572
|
+
int i, count, column_type;
|
|
573
|
+
std::string column_name, column_declared_type;
|
|
574
|
+
|
|
575
|
+
while (isConsuming) {
|
|
576
|
+
result = sqlite3_step(statement);
|
|
577
|
+
|
|
578
|
+
switch (result) {
|
|
579
|
+
case SQLITE_ROW: {
|
|
580
|
+
if (results == NULL) {
|
|
581
|
+
break;
|
|
582
|
+
}
|
|
583
|
+
std::vector<JSVariant> row;
|
|
584
|
+
|
|
585
|
+
i = 0;
|
|
586
|
+
|
|
587
|
+
count = sqlite3_column_count(statement);
|
|
588
|
+
|
|
589
|
+
while (i < count) {
|
|
590
|
+
column_type = sqlite3_column_type(statement, i);
|
|
591
|
+
|
|
592
|
+
switch (column_type) {
|
|
593
|
+
case SQLITE_INTEGER: {
|
|
594
|
+
/**
|
|
595
|
+
* Warning this will loose precision because JS can
|
|
596
|
+
* only represent Integers up to 53 bits
|
|
597
|
+
*/
|
|
598
|
+
double column_value = sqlite3_column_double(statement, i);
|
|
599
|
+
row.push_back(JSVariant(column_value));
|
|
600
|
+
break;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
case SQLITE_FLOAT: {
|
|
604
|
+
double column_value = sqlite3_column_double(statement, i);
|
|
605
|
+
row.push_back(JSVariant(column_value));
|
|
606
|
+
break;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
case SQLITE_TEXT: {
|
|
610
|
+
const char *column_value = reinterpret_cast<const char *>(
|
|
611
|
+
sqlite3_column_text(statement, i));
|
|
612
|
+
int byteLen = sqlite3_column_bytes(statement, i);
|
|
613
|
+
// Specify length too; in case string contains NULL in the middle
|
|
614
|
+
row.push_back(JSVariant(std::string(column_value, byteLen)));
|
|
615
|
+
break;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
case SQLITE_BLOB: {
|
|
619
|
+
int blob_size = sqlite3_column_bytes(statement, i);
|
|
620
|
+
const void *blob = sqlite3_column_blob(statement, i);
|
|
621
|
+
uint8_t *data = new uint8_t[blob_size];
|
|
622
|
+
// You cannot share raw memory between native and JS
|
|
623
|
+
// always copy the data
|
|
624
|
+
memcpy(data, blob, blob_size);
|
|
625
|
+
row.push_back(
|
|
626
|
+
JSVariant(ArrayBuffer{.data = std::shared_ptr<uint8_t>{data},
|
|
627
|
+
.size = static_cast<size_t>(blob_size)}));
|
|
628
|
+
break;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
case SQLITE_NULL:
|
|
632
|
+
// Intentionally left blank
|
|
633
|
+
|
|
634
|
+
default:
|
|
635
|
+
row.push_back(JSVariant(NULL));
|
|
636
|
+
break;
|
|
637
|
+
}
|
|
638
|
+
i++;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
results->push_back(row);
|
|
642
|
+
|
|
643
|
+
break;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
case SQLITE_DONE:
|
|
647
|
+
isConsuming = false;
|
|
648
|
+
break;
|
|
649
|
+
|
|
650
|
+
default:
|
|
651
|
+
errorMessage = sqlite3_errmsg(db);
|
|
652
|
+
isFailed = true;
|
|
653
|
+
isConsuming = false;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
sqlite3_finalize(statement);
|
|
658
|
+
} while (remainingStatement != NULL && strcmp(remainingStatement, "") != 0 &&
|
|
659
|
+
!isFailed);
|
|
660
|
+
|
|
661
|
+
if (isFailed) {
|
|
662
|
+
|
|
663
|
+
return {.type = SQLiteError,
|
|
664
|
+
.message =
|
|
665
|
+
"[op-sqlite] SQLite error code: " + std::to_string(result) +
|
|
666
|
+
", description: " + std::string(errorMessage) +
|
|
667
|
+
".\nSee SQLite error codes reference: "
|
|
668
|
+
"https://www.sqlite.org/rescode.html"};
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
int changedRowCount = sqlite3_changes(db);
|
|
672
|
+
long long latestInsertRowId = sqlite3_last_insert_rowid(db);
|
|
673
|
+
|
|
674
|
+
return {.type = SQLiteOk,
|
|
675
|
+
.affectedRows = changedRowCount,
|
|
676
|
+
.insertId = static_cast<double>(latestInsertRowId)};
|
|
677
|
+
}
|
|
678
|
+
|
|
521
679
|
BridgeResult sqlite_execute_literal(std::string const &dbName,
|
|
522
680
|
std::string const &query) {
|
|
523
681
|
if (dbMap.count(dbName) == 0) {
|
|
@@ -731,4 +889,32 @@ BridgeResult sqlite_deregister_rollback_hook(std::string const &dbName) {
|
|
|
731
889
|
|
|
732
890
|
return {SQLiteOk};
|
|
733
891
|
}
|
|
892
|
+
|
|
893
|
+
BridgeResult sqlite_load_extension(std::string &db_name, std::string &path,
|
|
894
|
+
std::string &entry_point) {
|
|
895
|
+
if (dbMap.count(db_name) == 0) {
|
|
896
|
+
return {SQLiteError, "[op-sqlite] Database not open"};
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
sqlite3 *db = dbMap[db_name];
|
|
900
|
+
int loading_extensions_enabled = sqlite3_enable_load_extension(db, 1);
|
|
901
|
+
if (loading_extensions_enabled != SQLITE_OK) {
|
|
902
|
+
return {SQLiteError, "[op-sqlite] could not enable extension loading"};
|
|
903
|
+
}
|
|
904
|
+
const char *path_cstr = path.c_str();
|
|
905
|
+
const char *entry_point_cstr;
|
|
906
|
+
if (!entry_point.empty()) {
|
|
907
|
+
entry_point_cstr = entry_point.c_str();
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
char *error_message;
|
|
911
|
+
|
|
912
|
+
int extension_loaded =
|
|
913
|
+
sqlite3_load_extension(db, path_cstr, entry_point_cstr, &error_message);
|
|
914
|
+
if (extension_loaded != SQLITE_OK) {
|
|
915
|
+
return {SQLiteError, std::string(error_message)};
|
|
916
|
+
}
|
|
917
|
+
return {SQLiteOk};
|
|
918
|
+
}
|
|
919
|
+
|
|
734
920
|
} // namespace opsqlite
|
package/cpp/bridge.h
CHANGED
|
@@ -33,6 +33,11 @@ sqlite_execute(std::string const &dbName, std::string const &query,
|
|
|
33
33
|
std::vector<DumbHostObject> *results,
|
|
34
34
|
std::shared_ptr<std::vector<SmartHostObject>> metadatas);
|
|
35
35
|
|
|
36
|
+
BridgeResult sqlite_execute_raw(std::string const &dbName,
|
|
37
|
+
std::string const &query,
|
|
38
|
+
const std::vector<JSVariant> *params,
|
|
39
|
+
std::vector<std::vector<JSVariant>> *results);
|
|
40
|
+
|
|
36
41
|
BridgeResult sqlite_execute_literal(std::string const &dbName,
|
|
37
42
|
std::string const &query);
|
|
38
43
|
|
|
@@ -62,6 +67,10 @@ BridgeResult sqlite_execute_prepared_statement(
|
|
|
62
67
|
std::string const &dbName, sqlite3_stmt *statement,
|
|
63
68
|
std::vector<DumbHostObject> *results,
|
|
64
69
|
std::shared_ptr<std::vector<SmartHostObject>> metadatas);
|
|
70
|
+
|
|
71
|
+
BridgeResult sqlite_load_extension(std::string &db_name, std::string &path,
|
|
72
|
+
std::string &entry_point);
|
|
73
|
+
|
|
65
74
|
} // namespace opsqlite
|
|
66
75
|
|
|
67
76
|
#endif /* bridge_h */
|
package/cpp/utils.cpp
CHANGED
|
@@ -187,6 +187,22 @@ createResult(jsi::Runtime &rt, BridgeResult status,
|
|
|
187
187
|
return std::move(res);
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
+
jsi::Value
|
|
191
|
+
create_raw_result(jsi::Runtime &rt, BridgeResult status,
|
|
192
|
+
const std::vector<std::vector<JSVariant>> *results) {
|
|
193
|
+
size_t row_count = results->size();
|
|
194
|
+
jsi::Array res = jsi::Array(rt, row_count);
|
|
195
|
+
for (int i = 0; i < row_count; i++) {
|
|
196
|
+
auto row = results->at(i);
|
|
197
|
+
auto array = jsi::Array(rt, row.size());
|
|
198
|
+
for (int j = 0; j < row.size(); j++) {
|
|
199
|
+
array.setValueAtIndex(rt, j, toJSI(rt, row[j]));
|
|
200
|
+
}
|
|
201
|
+
res.setValueAtIndex(rt, i, array);
|
|
202
|
+
}
|
|
203
|
+
return res;
|
|
204
|
+
}
|
|
205
|
+
|
|
190
206
|
BatchResult importSQLFile(std::string dbName, std::string fileLocation) {
|
|
191
207
|
std::string line;
|
|
192
208
|
std::ifstream sqFile(fileLocation);
|
package/cpp/utils.h
CHANGED
|
@@ -41,6 +41,10 @@ jsi::Value createResult(jsi::Runtime &rt, BridgeResult status,
|
|
|
41
41
|
std::vector<DumbHostObject> *results,
|
|
42
42
|
std::shared_ptr<std::vector<SmartHostObject>> metadata);
|
|
43
43
|
|
|
44
|
+
jsi::Value
|
|
45
|
+
create_raw_result(jsi::Runtime &rt, BridgeResult status,
|
|
46
|
+
const std::vector<std::vector<JSVariant>> *results);
|
|
47
|
+
|
|
44
48
|
BatchResult importSQLFile(std::string dbName, std::string fileLocation);
|
|
45
49
|
|
|
46
50
|
int mkdir(const std::string &path);
|
package/lib/commonjs/index.js
CHANGED
|
@@ -220,7 +220,9 @@ const open = options => {
|
|
|
220
220
|
updateHook: callback => OPSQLite.updateHook(options.name, callback),
|
|
221
221
|
commitHook: callback => OPSQLite.commitHook(options.name, callback),
|
|
222
222
|
rollbackHook: callback => OPSQLite.rollbackHook(options.name, callback),
|
|
223
|
-
prepareStatement: query => OPSQLite.prepareStatement(options.name, query)
|
|
223
|
+
prepareStatement: query => OPSQLite.prepareStatement(options.name, query),
|
|
224
|
+
loadExtension: (path, entryPoint) => OPSQLite.loadExtension(options.name, path, entryPoint),
|
|
225
|
+
executeRawAsync: (query, params) => OPSQLite.executeRawAsync(options.name, query, params)
|
|
224
226
|
};
|
|
225
227
|
};
|
|
226
228
|
exports.open = open;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["global","__OPSQLiteProxy","OPSQLiteModule","NativeOPSQLite","Error","nativeCallSyncHook","install","result","proxy","OPSQLite","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","_open","open","dbName","location","queue","inProgress","_close","close","_execute","execute","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","_executeAsync","executeAsync","res","transaction","fn","isFinalized","commit","rollback","run","executionError","rollbackError","startNextTransaction","Promise","resolve","reject","tx","start","then","catch","push","shift","setImmediate","options","name","delete","attach","dbNameToAttach","alias","detach","executeBatch","commands","executeBatchAsync","loadFile","updateHook","callback","commitHook","rollbackHook","prepareStatement"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;AAAA;AAA8C;AAO9C,IAAIA,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;EAClC,MAAMC,cAAc,GAAGC,uBAAc;EAErC,IAAID,cAAc,IAAI,IAAI,EAAE;IAC1B,MAAM,IAAIE,KAAK,CAAC,sDAAsD,CAAC;EACzE;;EAEA;EACA,IAAIJ,MAAM,CAACK,kBAAkB,IAAI,IAAI,IAAIH,cAAc,CAACI,OAAO,IAAI,IAAI,EAAE;IACvE,MAAM,IAAIF,KAAK,CACb,iQAAiQ,CAClQ;EACH;;EAEA;EACA,MAAMG,MAAM,GAAGL,cAAc,CAACI,OAAO,EAAE;EACvC,IAAIC,MAAM,KAAK,IAAI,EAAE;IACnB,MAAM,IAAIH,KAAK,CACZ,iJAAgJG,MAAO,EAAC,CAC1J;EACH;;EAEA;EACA,IAAIP,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIG,KAAK,CACb,yIAAyI,CAC1I;EACH;AACF;AAEA,MAAMI,KAAK,GAAGR,MAAM,CAACC,eAAe;AAC7B,MAAMQ,QAAQ,GAAGD,KAAgB;AAAC;AAElC,MAAM;EACX;EACAE,iBAAiB;EACjB;EACAC,gBAAgB;EAChB;EACAC,qBAAqB;EACrB;EACAC,kBAAkB;EAClB;EACAC;AACF,CAAC,GAAG,CAAC,CAACX,uBAAc,CAACY,YAAY,GAC7BZ,uBAAc,CAACY,YAAY,EAAE,GAC7BZ,uBAAc;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"names":["global","__OPSQLiteProxy","OPSQLiteModule","NativeOPSQLite","Error","nativeCallSyncHook","install","result","proxy","OPSQLite","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","_open","open","dbName","location","queue","inProgress","_close","close","_execute","execute","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","_executeAsync","executeAsync","res","transaction","fn","isFinalized","commit","rollback","run","executionError","rollbackError","startNextTransaction","Promise","resolve","reject","tx","start","then","catch","push","shift","setImmediate","options","name","delete","attach","dbNameToAttach","alias","detach","executeBatch","commands","executeBatchAsync","loadFile","updateHook","callback","commitHook","rollbackHook","prepareStatement","loadExtension","path","entryPoint","executeRawAsync"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;AAAA;AAA8C;AAO9C,IAAIA,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;EAClC,MAAMC,cAAc,GAAGC,uBAAc;EAErC,IAAID,cAAc,IAAI,IAAI,EAAE;IAC1B,MAAM,IAAIE,KAAK,CAAC,sDAAsD,CAAC;EACzE;;EAEA;EACA,IAAIJ,MAAM,CAACK,kBAAkB,IAAI,IAAI,IAAIH,cAAc,CAACI,OAAO,IAAI,IAAI,EAAE;IACvE,MAAM,IAAIF,KAAK,CACb,iQAAiQ,CAClQ;EACH;;EAEA;EACA,MAAMG,MAAM,GAAGL,cAAc,CAACI,OAAO,EAAE;EACvC,IAAIC,MAAM,KAAK,IAAI,EAAE;IACnB,MAAM,IAAIH,KAAK,CACZ,iJAAgJG,MAAO,EAAC,CAC1J;EACH;;EAEA;EACA,IAAIP,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIG,KAAK,CACb,yIAAyI,CAC1I;EACH;AACF;AAEA,MAAMI,KAAK,GAAGR,MAAM,CAACC,eAAe;AAC7B,MAAMQ,QAAQ,GAAGD,KAAgB;AAAC;AAElC,MAAM;EACX;EACAE,iBAAiB;EACjB;EACAC,gBAAgB;EAChB;EACAC,qBAAqB;EACrB;EACAC,kBAAkB;EAClB;EACAC;AACF,CAAC,GAAG,CAAC,CAACX,uBAAc,CAACY,YAAY,GAC7BZ,uBAAc,CAACY,YAAY,EAAE,GAC7BZ,uBAAc;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAAA;AAAA;AAoJA,MAAMa,KAGL,GAAG,CAAC,CAAC;;AAEN;;AAEA;AACA,SAASC,kBAAkB,CAACV,MAAmB,EAAQ;EACrD;EACA,IAAIA,MAAM,CAACW,IAAI,IAAI,IAAI,EAAE;IACvBX,MAAM,CAACW,IAAI,GAAG;MACZC,MAAM,EAAE,EAAE;MACVC,MAAM,EAAE,CAAC;MACTC,IAAI,EAAGC,GAAW,IAAKf,MAAM,CAACW,IAAI,EAAEC,MAAM,CAACG,GAAG;IAChD,CAAC;EACH,CAAC,MAAM;IACLf,MAAM,CAACW,IAAI,CAACG,IAAI,GAAIC,GAAW,IAAKf,MAAM,CAACW,IAAI,EAAEC,MAAM,CAACG,GAAG,CAAC;EAC9D;AACF;AAEA,MAAMC,KAAK,GAAGd,QAAQ,CAACe,IAAI;AAC3Bf,QAAQ,CAACe,IAAI,GAAG,CAACC,MAAc,EAAEC,QAAiB,KAAK;EACrDH,KAAK,CAACE,MAAM,EAAEC,QAAQ,CAAC;EAEvBV,KAAK,CAACS,MAAM,CAAC,GAAG;IACdE,KAAK,EAAE,EAAE;IACTC,UAAU,EAAE;EACd,CAAC;AACH,CAAC;AAED,MAAMC,MAAM,GAAGpB,QAAQ,CAACqB,KAAK;AAC7BrB,QAAQ,CAACqB,KAAK,GAAIL,MAAc,IAAK;EACnCI,MAAM,CAACJ,MAAM,CAAC;EACd,OAAOT,KAAK,CAACS,MAAM,CAAC;AACtB,CAAC;AAED,MAAMM,QAAQ,GAAGtB,QAAQ,CAACuB,OAAO;AACjCvB,QAAQ,CAACuB,OAAO,GAAG,CACjBP,MAAc,EACdQ,KAAa,EACbC,MAA0B,KACV;EAChB,MAAMC,eAAe,GAAGD,MAAM,EAAEE,GAAG,CAAEC,CAAC,IAAK;IACzC,IAAIC,WAAW,CAACC,MAAM,CAACF,CAAC,CAAC,EAAE;MACzB,OAAOA,CAAC,CAACG,MAAM;IACjB;IAEA,OAAOH,CAAC;EACV,CAAC,CAAC;EAEF,MAAM9B,MAAM,GAAGwB,QAAQ,CAACN,MAAM,EAAEQ,KAAK,EAAEE,eAAe,CAAC;EACvDlB,kBAAkB,CAACV,MAAM,CAAC;EAC1B,OAAOA,MAAM;AACf,CAAC;AAED,MAAMkC,aAAa,GAAGhC,QAAQ,CAACiC,YAAY;AAC3CjC,QAAQ,CAACiC,YAAY,GAAG,OACtBjB,MAAc,EACdQ,KAAa,EACbC,MAA0B,KACD;EACzB,MAAMC,eAAe,GAAGD,MAAM,EAAEE,GAAG,CAAEC,CAAC,IAAK;IACzC,IAAIC,WAAW,CAACC,MAAM,CAACF,CAAC,CAAC,EAAE;MACzB,OAAOA,CAAC,CAACG,MAAM;IACjB;IAEA,OAAOH,CAAC;EACV,CAAC,CAAC;EAEF,MAAMM,GAAG,GAAG,MAAMF,aAAa,CAAChB,MAAM,EAAEQ,KAAK,EAAEE,eAAe,CAAC;EAC/DlB,kBAAkB,CAAC0B,GAAG,CAAC;EACvB,OAAOA,GAAG;AACZ,CAAC;AAEDlC,QAAQ,CAACmC,WAAW,GAAG,OACrBnB,MAAc,EACdoB,EAAsC,KACpB;EAClB,IAAI,CAAC7B,KAAK,CAACS,MAAM,CAAC,EAAE;IAClB,MAAMrB,KAAK,CAAE,sCAAqCqB,MAAO,EAAC,CAAC;EAC7D;EAEA,IAAIqB,WAAW,GAAG,KAAK;;EAEvB;EACA,MAAMd,OAAO,GAAG,CAACC,KAAa,EAAEC,MAAc,KAAkB;IAC9D,IAAIY,WAAW,EAAE;MACf,MAAM1C,KAAK,CACR,gEAA+DqB,MAAO,EAAC,CACzE;IACH;IACA,OAAOhB,QAAQ,CAACuB,OAAO,CAACP,MAAM,EAAEQ,KAAK,EAAEC,MAAM,CAAC;EAChD,CAAC;EAED,MAAMQ,YAAY,GAAG,CAACT,KAAa,EAAEC,MAA0B,KAAK;IAClE,IAAIY,WAAW,EAAE;MACf,MAAM1C,KAAK,CACR,gEAA+DqB,MAAO,EAAC,CACzE;IACH;IACA,OAAOhB,QAAQ,CAACiC,YAAY,CAACjB,MAAM,EAAEQ,KAAK,EAAEC,MAAM,CAAC;EACrD,CAAC;EAED,MAAMa,MAAM,GAAG,MAAM;IACnB,IAAID,WAAW,EAAE;MACf,MAAM1C,KAAK,CACR,iEAAgEqB,MAAO,EAAC,CAC1E;IACH;IACA,MAAMlB,MAAM,GAAGE,QAAQ,CAACuB,OAAO,CAACP,MAAM,EAAE,QAAQ,CAAC;IACjDqB,WAAW,GAAG,IAAI;IAClB,OAAOvC,MAAM;EACf,CAAC;EAED,MAAMyC,QAAQ,GAAG,MAAM;IACrB,IAAIF,WAAW,EAAE;MACf,MAAM1C,KAAK,CACR,mEAAkEqB,MAAO,EAAC,CAC5E;IACH;IACA,MAAMlB,MAAM,GAAGE,QAAQ,CAACuB,OAAO,CAACP,MAAM,EAAE,UAAU,CAAC;IACnDqB,WAAW,GAAG,IAAI;IAClB,OAAOvC,MAAM;EACf,CAAC;EAED,eAAe0C,GAAG,GAAG;IACnB,IAAI;MACF,MAAMxC,QAAQ,CAACiC,YAAY,CAACjB,MAAM,EAAE,mBAAmB,CAAC;MAExD,MAAMoB,EAAE,CAAC;QACPE,MAAM;QACNf,OAAO;QACPU,YAAY;QACZM;MACF,CAAC,CAAC;MAEF,IAAI,CAACF,WAAW,EAAE;QAChBC,MAAM,EAAE;MACV;IACF,CAAC,CAAC,OAAOG,cAAc,EAAE;MACvB,IAAI,CAACJ,WAAW,EAAE;QAChB,IAAI;UACFE,QAAQ,EAAE;QACZ,CAAC,CAAC,OAAOG,aAAa,EAAE;UACtB,MAAMA,aAAa;QACrB;MACF;MAEA,MAAMD,cAAc;IACtB,CAAC,SAAS;MACRlC,KAAK,CAACS,MAAM,CAAC,CAACG,UAAU,GAAG,KAAK;MAChCkB,WAAW,GAAG,KAAK;MACnBM,oBAAoB,CAAC3B,MAAM,CAAC;IAC9B;EACF;EAEA,OAAO,MAAM,IAAI4B,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IAC5C,MAAMC,EAAsB,GAAG;MAC7BC,KAAK,EAAE,MAAM;QACXR,GAAG,EAAE,CAACS,IAAI,CAACJ,OAAO,CAAC,CAACK,KAAK,CAACJ,MAAM,CAAC;MACnC;IACF,CAAC;IAEDvC,KAAK,CAACS,MAAM,CAAC,CAACE,KAAK,CAACiC,IAAI,CAACJ,EAAE,CAAC;IAC5BJ,oBAAoB,CAAC3B,MAAM,CAAC;EAC9B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM2B,oBAAoB,GAAI3B,MAAc,IAAK;EAC/C,IAAI,CAACT,KAAK,CAACS,MAAM,CAAC,EAAE;IAClB,MAAMrB,KAAK,CAAE,0BAAyBqB,MAAO,EAAC,CAAC;EACjD;EAEA,IAAIT,KAAK,CAACS,MAAM,CAAC,CAACG,UAAU,EAAE;IAC5B;IACA;EACF;EAEA,IAAIZ,KAAK,CAACS,MAAM,CAAC,CAACE,KAAK,CAACP,MAAM,EAAE;IAC9BJ,KAAK,CAACS,MAAM,CAAC,CAACG,UAAU,GAAG,IAAI;IAC/B,MAAM4B,EAAE,GAAGxC,KAAK,CAACS,MAAM,CAAC,CAACE,KAAK,CAACkC,KAAK,EAAE;IAEtC,IAAI,CAACL,EAAE,EAAE;MACP,MAAM,IAAIpD,KAAK,CAAC,uCAAuC,CAAC;IAC1D;IAEA0D,YAAY,CAAC,MAAM;MACjBN,EAAE,CAACC,KAAK,EAAE;IACZ,CAAC,CAAC;EACJ;AACF,CAAC;AA8BM,MAAMjC,IAAI,GAAIuC,OAGpB,IAAyB;EACxBtD,QAAQ,CAACe,IAAI,CAACuC,OAAO,CAACC,IAAI,EAAED,OAAO,CAACrC,QAAQ,CAAC;EAE7C,OAAO;IACLI,KAAK,EAAE,MAAMrB,QAAQ,CAACqB,KAAK,CAACiC,OAAO,CAACC,IAAI,CAAC;IACzCC,MAAM,EAAE,MAAMxD,QAAQ,CAACwD,MAAM,CAACF,OAAO,CAACC,IAAI,EAAED,OAAO,CAACrC,QAAQ,CAAC;IAC7DwC,MAAM,EAAE,CAACC,cAAsB,EAAEC,KAAa,EAAE1C,QAAiB,KAC/DjB,QAAQ,CAACyD,MAAM,CAACH,OAAO,CAACC,IAAI,EAAEG,cAAc,EAAEC,KAAK,EAAE1C,QAAQ,CAAC;IAChE2C,MAAM,EAAGD,KAAa,IAAK3D,QAAQ,CAAC4D,MAAM,CAACN,OAAO,CAACC,IAAI,EAAEI,KAAK,CAAC;IAC/DxB,WAAW,EAAGC,EAAsC,IAClDpC,QAAQ,CAACmC,WAAW,CAACmB,OAAO,CAACC,IAAI,EAAEnB,EAAE,CAAC;IACxCb,OAAO,EAAE,CAACC,KAAa,EAAEC,MAA0B,KACjDzB,QAAQ,CAACuB,OAAO,CAAC+B,OAAO,CAACC,IAAI,EAAE/B,KAAK,EAAEC,MAAM,CAAC;IAC/CQ,YAAY,EAAE,CACZT,KAAa,EACbC,MAA0B,KAE1BzB,QAAQ,CAACiC,YAAY,CAACqB,OAAO,CAACC,IAAI,EAAE/B,KAAK,EAAEC,MAAM,CAAC;IACpDoC,YAAY,EAAGC,QAAyB,IACtC9D,QAAQ,CAAC6D,YAAY,CAACP,OAAO,CAACC,IAAI,EAAEO,QAAQ,CAAC;IAC/CC,iBAAiB,EAAGD,QAAyB,IAC3C9D,QAAQ,CAAC+D,iBAAiB,CAACT,OAAO,CAACC,IAAI,EAAEO,QAAQ,CAAC;IACpDE,QAAQ,EAAG/C,QAAgB,IAAKjB,QAAQ,CAACgE,QAAQ,CAACV,OAAO,CAACC,IAAI,EAAEtC,QAAQ,CAAC;IACzEgD,UAAU,EAAGC,QAAQ,IAAKlE,QAAQ,CAACiE,UAAU,CAACX,OAAO,CAACC,IAAI,EAAEW,QAAQ,CAAC;IACrEC,UAAU,EAAGD,QAAQ,IAAKlE,QAAQ,CAACmE,UAAU,CAACb,OAAO,CAACC,IAAI,EAAEW,QAAQ,CAAC;IACrEE,YAAY,EAAGF,QAAQ,IAAKlE,QAAQ,CAACoE,YAAY,CAACd,OAAO,CAACC,IAAI,EAAEW,QAAQ,CAAC;IACzEG,gBAAgB,EAAG7C,KAAK,IAAKxB,QAAQ,CAACqE,gBAAgB,CAACf,OAAO,CAACC,IAAI,EAAE/B,KAAK,CAAC;IAC3E8C,aAAa,EAAE,CAACC,IAAI,EAAEC,UAAU,KAC9BxE,QAAQ,CAACsE,aAAa,CAAChB,OAAO,CAACC,IAAI,EAAEgB,IAAI,EAAEC,UAAU,CAAC;IACxDC,eAAe,EAAE,CAACjD,KAAK,EAAEC,MAAM,KAC7BzB,QAAQ,CAACyE,eAAe,CAACnB,OAAO,CAACC,IAAI,EAAE/B,KAAK,EAAEC,MAAM;EACxD,CAAC;AACH,CAAC;AAAC"}
|
package/lib/module/index.js
CHANGED
|
@@ -208,7 +208,9 @@ export const open = options => {
|
|
|
208
208
|
updateHook: callback => OPSQLite.updateHook(options.name, callback),
|
|
209
209
|
commitHook: callback => OPSQLite.commitHook(options.name, callback),
|
|
210
210
|
rollbackHook: callback => OPSQLite.rollbackHook(options.name, callback),
|
|
211
|
-
prepareStatement: query => OPSQLite.prepareStatement(options.name, query)
|
|
211
|
+
prepareStatement: query => OPSQLite.prepareStatement(options.name, query),
|
|
212
|
+
loadExtension: (path, entryPoint) => OPSQLite.loadExtension(options.name, path, entryPoint),
|
|
213
|
+
executeRawAsync: (query, params) => OPSQLite.executeRawAsync(options.name, query, params)
|
|
212
214
|
};
|
|
213
215
|
};
|
|
214
216
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeOPSQLite","global","__OPSQLiteProxy","OPSQLiteModule","Error","nativeCallSyncHook","install","result","proxy","OPSQLite","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","_open","open","dbName","location","queue","inProgress","_close","close","_execute","execute","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","_executeAsync","executeAsync","res","transaction","fn","isFinalized","commit","rollback","run","executionError","rollbackError","startNextTransaction","Promise","resolve","reject","tx","start","then","catch","push","shift","setImmediate","options","name","delete","attach","dbNameToAttach","alias","detach","executeBatch","commands","executeBatchAsync","loadFile","updateHook","callback","commitHook","rollbackHook","prepareStatement"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAO7C,IAAIC,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;EAClC,MAAMC,cAAc,GAAGH,cAAc;EAErC,IAAIG,cAAc,IAAI,IAAI,EAAE;IAC1B,MAAM,IAAIC,KAAK,CAAC,sDAAsD,CAAC;EACzE;;EAEA;EACA,IAAIH,MAAM,CAACI,kBAAkB,IAAI,IAAI,IAAIF,cAAc,CAACG,OAAO,IAAI,IAAI,EAAE;IACvE,MAAM,IAAIF,KAAK,CACb,iQAAiQ,CAClQ;EACH;;EAEA;EACA,MAAMG,MAAM,GAAGJ,cAAc,CAACG,OAAO,EAAE;EACvC,IAAIC,MAAM,KAAK,IAAI,EAAE;IACnB,MAAM,IAAIH,KAAK,CACZ,iJAAgJG,MAAO,EAAC,CAC1J;EACH;;EAEA;EACA,IAAIN,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIE,KAAK,CACb,yIAAyI,CAC1I;EACH;AACF;AAEA,MAAMI,KAAK,GAAGP,MAAM,CAACC,eAAe;AACpC,OAAO,MAAMO,QAAQ,GAAGD,KAAgB;AAExC,OAAO,MAAM;EACX;EACAE,iBAAiB;EACjB;EACAC,gBAAgB;EAChB;EACAC,qBAAqB;EACrB;EACAC,kBAAkB;EAClB;EACAC;AACF,CAAC,GAAG,CAAC,CAACd,cAAc,CAACe,YAAY,GAC7Bf,cAAc,CAACe,YAAY,EAAE,GAC7Bf,cAAc;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["NativeOPSQLite","global","__OPSQLiteProxy","OPSQLiteModule","Error","nativeCallSyncHook","install","result","proxy","OPSQLite","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","_open","open","dbName","location","queue","inProgress","_close","close","_execute","execute","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","_executeAsync","executeAsync","res","transaction","fn","isFinalized","commit","rollback","run","executionError","rollbackError","startNextTransaction","Promise","resolve","reject","tx","start","then","catch","push","shift","setImmediate","options","name","delete","attach","dbNameToAttach","alias","detach","executeBatch","commands","executeBatchAsync","loadFile","updateHook","callback","commitHook","rollbackHook","prepareStatement","loadExtension","path","entryPoint","executeRawAsync"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
|
|
@@ -103,6 +103,8 @@ interface ISQLite {
|
|
|
103
103
|
commitHook: (dbName: string, callback?: (() => void) | null) => void;
|
|
104
104
|
rollbackHook: (dbName: string, callback?: (() => void) | null) => void;
|
|
105
105
|
prepareStatement: (dbName: string, query: string) => PreparedStatementObj;
|
|
106
|
+
loadExtension: (dbName: string, path: string, entryPoint?: string) => void;
|
|
107
|
+
executeRawAsync: (dbName: string, query: string, params?: any[]) => Promise<any[]>;
|
|
106
108
|
}
|
|
107
109
|
export type OPSQLiteConnection = {
|
|
108
110
|
close: () => void;
|
|
@@ -124,6 +126,8 @@ export type OPSQLiteConnection = {
|
|
|
124
126
|
commitHook: (callback: (() => void) | null) => void;
|
|
125
127
|
rollbackHook: (callback: (() => void) | null) => void;
|
|
126
128
|
prepareStatement: (query: string) => PreparedStatementObj;
|
|
129
|
+
loadExtension: (path: string, entryPoint?: string) => void;
|
|
130
|
+
executeRawAsync: (query: string, params?: any[]) => Promise<any[]>;
|
|
127
131
|
};
|
|
128
132
|
export declare const open: (options: {
|
|
129
133
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/op-sqlite.podspec
CHANGED
|
@@ -15,7 +15,7 @@ Pod::Spec.new do |s|
|
|
|
15
15
|
s.platforms = { :ios => "13.0", :osx => "10.15" }
|
|
16
16
|
s.source = { :git => "https://github.com/op-engineering/op-sqlite.git", :tag => "#{s.version}" }
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
xcconfig = {
|
|
19
19
|
:GCC_PREPROCESSOR_DEFINITIONS => "HAVE_FULLFSYNC=1",
|
|
20
20
|
:WARNING_CFLAGS => "-Wno-shorten-64-to-32 -Wno-comma -Wno-unreachable-code -Wno-conditional-uninitialized -Wno-deprecated-declarations",
|
|
21
21
|
:USE_HEADERMAP => "No",
|
|
@@ -34,18 +34,16 @@ Pod::Spec.new do |s|
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
if ENV['OP_SQLITE_USE_PHONE_VERSION'] == '1' then
|
|
37
|
+
puts "OP-SQLITE using iOS embedded SQLite! 📱\n"
|
|
37
38
|
s.exclude_files = "cpp/sqlite3.c", "cpp/sqlite3.h"
|
|
38
39
|
s.library = "sqlite3"
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
if ENV['OP_SQLITE_PERF'] == '1' then
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
:WARNING_CFLAGS => "-Wno-shorten-64-to-32 -Wno-comma -Wno-unreachable-code -Wno-conditional-uninitialized -Wno-deprecated-declarations",
|
|
45
|
-
:USE_HEADERMAP => "No",
|
|
46
|
-
:CLANG_CXX_LANGUAGE_STANDARD => "c++17",
|
|
47
|
-
:OTHER_CFLAGS => '$(inherited) -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 -DSQLITE_OMIT_SHARED_CACHE=1 -DSQLITE_USE_ALLOCA=1'
|
|
48
|
-
}
|
|
43
|
+
puts "OP-SQLITE performance mode enabled! 🚀\n"
|
|
44
|
+
xcconfig[:OTHER_CFLAGS] = '$(inherited) -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 -DSQLITE_OMIT_SHARED_CACHE=1 -DSQLITE_USE_ALLOCA=1'
|
|
49
45
|
end
|
|
46
|
+
|
|
47
|
+
s.pod_target_xcconfig = xcconfig
|
|
50
48
|
|
|
51
49
|
end
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -193,6 +193,12 @@ interface ISQLite {
|
|
|
193
193
|
commitHook: (dbName: string, callback?: (() => void) | null) => void;
|
|
194
194
|
rollbackHook: (dbName: string, callback?: (() => void) | null) => void;
|
|
195
195
|
prepareStatement: (dbName: string, query: string) => PreparedStatementObj;
|
|
196
|
+
loadExtension: (dbName: string, path: string, entryPoint?: string) => void;
|
|
197
|
+
executeRawAsync: (
|
|
198
|
+
dbName: string,
|
|
199
|
+
query: string,
|
|
200
|
+
params?: any[]
|
|
201
|
+
) => Promise<any[]>;
|
|
196
202
|
}
|
|
197
203
|
|
|
198
204
|
const locks: Record<
|
|
@@ -412,6 +418,8 @@ export type OPSQLiteConnection = {
|
|
|
412
418
|
commitHook: (callback: (() => void) | null) => void;
|
|
413
419
|
rollbackHook: (callback: (() => void) | null) => void;
|
|
414
420
|
prepareStatement: (query: string) => PreparedStatementObj;
|
|
421
|
+
loadExtension: (path: string, entryPoint?: string) => void;
|
|
422
|
+
executeRawAsync: (query: string, params?: any[]) => Promise<any[]>;
|
|
415
423
|
};
|
|
416
424
|
|
|
417
425
|
export const open = (options: {
|
|
@@ -444,5 +452,9 @@ export const open = (options: {
|
|
|
444
452
|
commitHook: (callback) => OPSQLite.commitHook(options.name, callback),
|
|
445
453
|
rollbackHook: (callback) => OPSQLite.rollbackHook(options.name, callback),
|
|
446
454
|
prepareStatement: (query) => OPSQLite.prepareStatement(options.name, query),
|
|
455
|
+
loadExtension: (path, entryPoint) =>
|
|
456
|
+
OPSQLite.loadExtension(options.name, path, entryPoint),
|
|
457
|
+
executeRawAsync: (query, params) =>
|
|
458
|
+
OPSQLite.executeRawAsync(options.name, query, params),
|
|
447
459
|
};
|
|
448
460
|
};
|