@op-engineering/op-sqlite 9.2.1 → 9.2.3
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/cpp/DBHostObject.cpp +114 -81
- package/cpp/DBHostObject.h +13 -4
- 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/src/index.d.ts +2 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +7 -2
package/cpp/DBHostObject.cpp
CHANGED
|
@@ -9,13 +9,53 @@
|
|
|
9
9
|
#include "macros.h"
|
|
10
10
|
#include "utils.h"
|
|
11
11
|
#include <iostream>
|
|
12
|
+
#include <utility>
|
|
12
13
|
|
|
13
14
|
namespace opsqlite {
|
|
14
15
|
|
|
15
16
|
namespace jsi = facebook::jsi;
|
|
16
17
|
namespace react = facebook::react;
|
|
17
18
|
|
|
18
|
-
#
|
|
19
|
+
#ifdef OP_SQLITE_USE_LIBSQL
|
|
20
|
+
void DBHostObject::flush_pending_reactive_queries(std::shared_ptr<jsi::Value> resolve) {
|
|
21
|
+
invoker->invokeAsync(
|
|
22
|
+
[this, resolve]() { resolve->asObject(rt).asFunction(rt).call(rt, {}); });
|
|
23
|
+
}
|
|
24
|
+
#else
|
|
25
|
+
void DBHostObject::flush_pending_reactive_queries(std::shared_ptr<jsi::Value> resolve) {
|
|
26
|
+
for (const auto &query_ptr : pending_reactive_queries) {
|
|
27
|
+
auto query = query_ptr.get();
|
|
28
|
+
|
|
29
|
+
std::vector<DumbHostObject> results;
|
|
30
|
+
std::shared_ptr<std::vector<SmartHostObject>> metadata =
|
|
31
|
+
std::make_shared<std::vector<SmartHostObject>>();
|
|
32
|
+
|
|
33
|
+
auto status = opsqlite_execute_prepared_statement(db_name, query->stmt,
|
|
34
|
+
&results, metadata);
|
|
35
|
+
|
|
36
|
+
if (status.type == SQLiteError) {
|
|
37
|
+
invoker->invokeAsync(
|
|
38
|
+
[this, callback = query->callback, status = std::move(status)] {
|
|
39
|
+
auto errorCtr = rt.global().getPropertyAsFunction(rt, "Error");
|
|
40
|
+
auto error = errorCtr.callAsConstructor(
|
|
41
|
+
rt, jsi::String::createFromUtf8(rt, status.message));
|
|
42
|
+
callback->asObject(rt).asFunction(rt).call(rt, error);
|
|
43
|
+
});
|
|
44
|
+
} else {
|
|
45
|
+
invoker->invokeAsync(
|
|
46
|
+
[this,
|
|
47
|
+
results = std::make_shared<std::vector<DumbHostObject>>(results),
|
|
48
|
+
callback = query->callback, metadata, status = std::move(status)] {
|
|
49
|
+
auto jsiResult = createResult(rt, status, results.get(), metadata);
|
|
50
|
+
callback->asObject(rt).asFunction(rt).call(rt, jsiResult);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
invoker->invokeAsync(
|
|
56
|
+
[this, resolve]() { resolve->asObject(rt).asFunction(rt).call(rt, {}); });
|
|
57
|
+
}
|
|
58
|
+
|
|
19
59
|
void DBHostObject::auto_register_update_hook() {
|
|
20
60
|
if (update_hook_callback == nullptr && reactive_queries.empty() &&
|
|
21
61
|
is_update_hook_registered) {
|
|
@@ -31,19 +71,17 @@ void DBHostObject::auto_register_update_hook() {
|
|
|
31
71
|
auto hook = [this](std::string name, std::string table_name,
|
|
32
72
|
std::string operation, int rowid) {
|
|
33
73
|
if (update_hook_callback != nullptr) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
callback->asObject(rt).asFunction(rt).call(rt, res);
|
|
46
|
-
});
|
|
74
|
+
invoker->invokeAsync([this, callback = update_hook_callback, table_name,
|
|
75
|
+
operation = std::move(operation), rowid] {
|
|
76
|
+
auto res = jsi::Object(rt);
|
|
77
|
+
res.setProperty(rt, "table",
|
|
78
|
+
jsi::String::createFromUtf8(rt, table_name));
|
|
79
|
+
res.setProperty(rt, "operation",
|
|
80
|
+
jsi::String::createFromUtf8(rt, operation));
|
|
81
|
+
res.setProperty(rt, "rowId", jsi::Value(rowid));
|
|
82
|
+
|
|
83
|
+
callback->asObject(rt).asFunction(rt).call(rt, res);
|
|
84
|
+
});
|
|
47
85
|
}
|
|
48
86
|
|
|
49
87
|
for (const auto &query_ptr : reactive_queries) {
|
|
@@ -55,54 +93,28 @@ void DBHostObject::auto_register_update_hook() {
|
|
|
55
93
|
bool shouldFire = false;
|
|
56
94
|
|
|
57
95
|
for (const auto &discriminator : query->discriminators) {
|
|
96
|
+
// Tables don't match then skip
|
|
58
97
|
if (discriminator.table != table_name) {
|
|
59
98
|
continue;
|
|
60
99
|
}
|
|
61
|
-
// Table has matched
|
|
62
100
|
|
|
63
101
|
// If no ids are specified, then we should fire
|
|
64
102
|
if (discriminator.ids.size() == 0) {
|
|
65
103
|
shouldFire = true;
|
|
66
104
|
break;
|
|
67
|
-
} else { // If ids are specified, then we should check if the rowId
|
|
68
|
-
// matches
|
|
69
|
-
for (const auto &discrimator_id : discriminator.ids) {
|
|
70
|
-
if (rowid == discrimator_id) {
|
|
71
|
-
shouldFire = true;
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
105
|
}
|
|
76
|
-
}
|
|
77
106
|
|
|
78
|
-
|
|
79
|
-
|
|
107
|
+
// If ids are specified, then we should check if the rowId matches
|
|
108
|
+
for (const auto &discrimator_id : discriminator.ids) {
|
|
109
|
+
if (rowid == discrimator_id) {
|
|
110
|
+
shouldFire = true;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
80
114
|
}
|
|
81
115
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
std::make_shared<std::vector<SmartHostObject>>();
|
|
85
|
-
|
|
86
|
-
auto status = opsqlite_execute_prepared_statement(db_name, query->stmt,
|
|
87
|
-
&results, metadata);
|
|
88
|
-
|
|
89
|
-
if (status.type == SQLiteError) {
|
|
90
|
-
jsCallInvoker->invokeAsync(
|
|
91
|
-
[this, callback = query->callback, status = std::move(status)] {
|
|
92
|
-
auto errorCtr = rt.global().getPropertyAsFunction(rt, "Error");
|
|
93
|
-
auto error = errorCtr.callAsConstructor(
|
|
94
|
-
rt, jsi::String::createFromUtf8(rt, status.message));
|
|
95
|
-
callback->asObject(rt).asFunction(rt).call(rt, error);
|
|
96
|
-
});
|
|
97
|
-
} else {
|
|
98
|
-
jsCallInvoker->invokeAsync(
|
|
99
|
-
[this,
|
|
100
|
-
results = std::make_shared<std::vector<DumbHostObject>>(results),
|
|
101
|
-
callback = query->callback, metadata, status = std::move(status)] {
|
|
102
|
-
auto jsiResult =
|
|
103
|
-
createResult(rt, status, results.get(), metadata);
|
|
104
|
-
callback->asObject(rt).asFunction(rt).call(rt, jsiResult);
|
|
105
|
-
});
|
|
116
|
+
if (shouldFire) {
|
|
117
|
+
pending_reactive_queries.insert(query_ptr);
|
|
106
118
|
}
|
|
107
119
|
}
|
|
108
120
|
};
|
|
@@ -115,10 +127,10 @@ void DBHostObject::auto_register_update_hook() {
|
|
|
115
127
|
#ifdef OP_SQLITE_USE_LIBSQL
|
|
116
128
|
DBHostObject::DBHostObject(jsi::Runtime &rt, std::string &url,
|
|
117
129
|
std::string &auth_token,
|
|
118
|
-
std::shared_ptr<react::CallInvoker>
|
|
130
|
+
std::shared_ptr<react::CallInvoker> invoker,
|
|
119
131
|
std::shared_ptr<ThreadPool> thread_pool)
|
|
120
|
-
: db_name(url),
|
|
121
|
-
rt(rt) {
|
|
132
|
+
: db_name(url), invoker(std::move(invoker)),
|
|
133
|
+
thread_pool(std::move(thread_pool)), rt(rt) {
|
|
122
134
|
BridgeResult result = opsqlite_libsql_open_remote(url, auth_token);
|
|
123
135
|
|
|
124
136
|
if (result.type == SQLiteError) {
|
|
@@ -134,8 +146,8 @@ DBHostObject::DBHostObject(jsi::Runtime &rt,
|
|
|
134
146
|
std::string &db_name, std::string &path,
|
|
135
147
|
std::string &url, std::string &auth_token,
|
|
136
148
|
int sync_interval)
|
|
137
|
-
: db_name(db_name),
|
|
138
|
-
rt(rt) {
|
|
149
|
+
: db_name(db_name), invoker(std::move(invoker)),
|
|
150
|
+
thread_pool(std::move(thread_pool)), rt(rt) {
|
|
139
151
|
BridgeResult result =
|
|
140
152
|
opsqlite_libsql_open_sync(db_name, path, url, auth_token, sync_interval);
|
|
141
153
|
|
|
@@ -149,14 +161,14 @@ DBHostObject::DBHostObject(jsi::Runtime &rt,
|
|
|
149
161
|
#endif
|
|
150
162
|
|
|
151
163
|
DBHostObject::DBHostObject(jsi::Runtime &rt, std::string &base_path,
|
|
152
|
-
std::shared_ptr<react::CallInvoker>
|
|
164
|
+
std::shared_ptr<react::CallInvoker> invoker,
|
|
153
165
|
std::shared_ptr<ThreadPool> thread_pool,
|
|
154
166
|
std::string &db_name, std::string &path,
|
|
155
167
|
std::string &crsqlite_path,
|
|
156
168
|
std::string &sqlite_vec_path,
|
|
157
169
|
std::string &encryption_key)
|
|
158
|
-
: base_path(base_path),
|
|
159
|
-
thread_pool(thread_pool), db_name(db_name), rt(rt) {
|
|
170
|
+
: base_path(base_path), invoker(std::move(invoker)),
|
|
171
|
+
thread_pool(std::move(thread_pool)), db_name(db_name), rt(rt) {
|
|
160
172
|
|
|
161
173
|
#ifdef OP_SQLITE_USE_SQLCIPHER
|
|
162
174
|
BridgeResult result = opsqlite_open(db_name, path, crsqlite_path,
|
|
@@ -268,7 +280,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
268
280
|
if (!location.empty()) {
|
|
269
281
|
if (location == ":memory:") {
|
|
270
282
|
path = ":memory:";
|
|
271
|
-
} else if (location.rfind(
|
|
283
|
+
} else if (location.rfind('/', 0) == 0) {
|
|
272
284
|
path = location;
|
|
273
285
|
} else {
|
|
274
286
|
path = path + "/" + location;
|
|
@@ -294,8 +306,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
294
306
|
std::vector<JSVariant> params;
|
|
295
307
|
|
|
296
308
|
if (count == 2) {
|
|
297
|
-
|
|
298
|
-
params = to_variant_vec(rt, originalParams);
|
|
309
|
+
params = to_variant_vec(rt, args[1]);
|
|
299
310
|
}
|
|
300
311
|
|
|
301
312
|
auto promiseCtr = rt.global().getPropertyAsFunction(rt, "Promise");
|
|
@@ -304,7 +315,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
304
315
|
auto reject = std::make_shared<jsi::Value>(rt, args[1]);
|
|
305
316
|
|
|
306
317
|
auto task = [&rt, this, query, params = std::move(params), resolve,
|
|
307
|
-
reject
|
|
318
|
+
reject]() {
|
|
308
319
|
try {
|
|
309
320
|
std::vector<std::vector<JSVariant>> results;
|
|
310
321
|
|
|
@@ -353,7 +364,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
353
364
|
});
|
|
354
365
|
|
|
355
366
|
auto execute = HOSTFN("execute") {
|
|
356
|
-
|
|
367
|
+
std::string query = args[0].asString(rt).utf8(rt);
|
|
357
368
|
std::vector<JSVariant> params;
|
|
358
369
|
|
|
359
370
|
if (count == 2) {
|
|
@@ -361,13 +372,12 @@ void DBHostObject::create_jsi_functions() {
|
|
|
361
372
|
}
|
|
362
373
|
|
|
363
374
|
auto promiseCtr = rt.global().getPropertyAsFunction(rt, "Promise");
|
|
364
|
-
|
|
375
|
+
auto promise = promiseCtr.callAsConstructor(rt, HOSTFN("executor") {
|
|
365
376
|
auto resolve = std::make_shared<jsi::Value>(rt, args[0]);
|
|
366
377
|
auto reject = std::make_shared<jsi::Value>(rt, args[1]);
|
|
367
378
|
|
|
368
379
|
auto task = [&rt, this, query = std::move(query),
|
|
369
|
-
params = std::move(params), resolve, reject
|
|
370
|
-
invoker = this->jsCallInvoker]() {
|
|
380
|
+
params = std::move(params), resolve, reject]() {
|
|
371
381
|
try {
|
|
372
382
|
|
|
373
383
|
#ifdef OP_SQLITE_USE_LIBSQL
|
|
@@ -411,7 +421,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
411
421
|
return {};
|
|
412
422
|
}));
|
|
413
423
|
|
|
414
|
-
|
|
424
|
+
return promise;
|
|
415
425
|
});
|
|
416
426
|
|
|
417
427
|
auto execute_with_host_objects = HOSTFN("executeWithHostObjects") {
|
|
@@ -429,7 +439,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
429
439
|
auto reject = std::make_shared<jsi::Value>(rt, args[1]);
|
|
430
440
|
|
|
431
441
|
auto task = [&rt, this, query, params = std::move(params), resolve,
|
|
432
|
-
reject, invoker = this->
|
|
442
|
+
reject, invoker = this->invoker]() {
|
|
433
443
|
try {
|
|
434
444
|
std::vector<DumbHostObject> results;
|
|
435
445
|
std::shared_ptr<std::vector<SmartHostObject>> metadata =
|
|
@@ -525,8 +535,8 @@ void DBHostObject::create_jsi_functions() {
|
|
|
525
535
|
return;
|
|
526
536
|
}
|
|
527
537
|
|
|
528
|
-
|
|
529
|
-
|
|
538
|
+
invoker->invokeAsync([&rt, batchResult = std::move(batchResult),
|
|
539
|
+
resolve, reject] {
|
|
530
540
|
if (batchResult.type == SQLiteOk) {
|
|
531
541
|
auto res = jsi::Object(rt);
|
|
532
542
|
res.setProperty(rt, "rowsAffected",
|
|
@@ -541,7 +551,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
541
551
|
});
|
|
542
552
|
} catch (std::exception &exc) {
|
|
543
553
|
auto what = exc.what();
|
|
544
|
-
|
|
554
|
+
invoker->invokeAsync([&rt, what = std::move(what), reject] {
|
|
545
555
|
auto errorCtr = rt.global().getPropertyAsFunction(rt, "Error");
|
|
546
556
|
auto error = errorCtr.callAsConstructor(
|
|
547
557
|
rt, jsi::String::createFromAscii(rt, what));
|
|
@@ -585,8 +595,8 @@ void DBHostObject::create_jsi_functions() {
|
|
|
585
595
|
try {
|
|
586
596
|
const auto result = importSQLFile(db_name, sqlFileName);
|
|
587
597
|
|
|
588
|
-
|
|
589
|
-
|
|
598
|
+
invoker->invokeAsync([&rt, result = std::move(result), resolve,
|
|
599
|
+
reject] {
|
|
590
600
|
if (result.type == SQLiteOk) {
|
|
591
601
|
auto res = jsi::Object(rt);
|
|
592
602
|
res.setProperty(rt, "rowsAffected",
|
|
@@ -602,7 +612,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
602
612
|
});
|
|
603
613
|
} catch (std::exception &exc) {
|
|
604
614
|
auto what = exc.what();
|
|
605
|
-
|
|
615
|
+
invoker->invokeAsync([&rt, what = std::move(what), reject] {
|
|
606
616
|
auto errorCtr = rt.global().getPropertyAsFunction(rt, "Error");
|
|
607
617
|
auto error = errorCtr.callAsConstructor(
|
|
608
618
|
rt, jsi::String::createFromAscii(rt, what));
|
|
@@ -643,7 +653,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
643
653
|
commit_hook_callback = callback;
|
|
644
654
|
|
|
645
655
|
auto hook = [&rt, this, callback](std::string dbName) {
|
|
646
|
-
|
|
656
|
+
invoker->invokeAsync(
|
|
647
657
|
[&rt, callback] { callback->asObject(rt).asFunction(rt).call(rt); });
|
|
648
658
|
};
|
|
649
659
|
|
|
@@ -667,7 +677,7 @@ void DBHostObject::create_jsi_functions() {
|
|
|
667
677
|
rollback_hook_callback = callback;
|
|
668
678
|
|
|
669
679
|
auto hook = [&rt, this, callback](std::string db_name) {
|
|
670
|
-
|
|
680
|
+
invoker->invokeAsync(
|
|
671
681
|
[&rt, callback] { callback->asObject(rt).asFunction(rt).call(rt); });
|
|
672
682
|
};
|
|
673
683
|
|
|
@@ -772,8 +782,8 @@ void DBHostObject::create_jsi_functions() {
|
|
|
772
782
|
sqlite3_stmt *statement = opsqlite_prepare_statement(db_name, query);
|
|
773
783
|
#endif
|
|
774
784
|
auto preparedStatementHostObject =
|
|
775
|
-
std::make_shared<PreparedStatementHostObject>(
|
|
776
|
-
|
|
785
|
+
std::make_shared<PreparedStatementHostObject>(db_name, statement,
|
|
786
|
+
invoker, thread_pool);
|
|
777
787
|
|
|
778
788
|
return jsi::Object::createFromHostObject(rt, preparedStatementHostObject);
|
|
779
789
|
});
|
|
@@ -801,6 +811,24 @@ void DBHostObject::create_jsi_functions() {
|
|
|
801
811
|
return jsi::String::createFromUtf8(rt, result);
|
|
802
812
|
});
|
|
803
813
|
|
|
814
|
+
auto flush_pending_reactive_queries_js =
|
|
815
|
+
HOSTFN("flushPendingReactiveQueries") {
|
|
816
|
+
auto promiseCtr = rt.global().getPropertyAsFunction(rt, "Promise");
|
|
817
|
+
auto promise = promiseCtr.callAsConstructor(rt, HOSTFN("executor") {
|
|
818
|
+
auto resolve = std::make_shared<jsi::Value>(rt, args[0]);
|
|
819
|
+
|
|
820
|
+
auto task = [&rt, this, resolve]() {
|
|
821
|
+
flush_pending_reactive_queries(resolve);
|
|
822
|
+
};
|
|
823
|
+
|
|
824
|
+
thread_pool->queueWork(task);
|
|
825
|
+
|
|
826
|
+
return {};
|
|
827
|
+
}));
|
|
828
|
+
|
|
829
|
+
return promise;
|
|
830
|
+
});
|
|
831
|
+
|
|
804
832
|
function_map["attach"] = std::move(attach);
|
|
805
833
|
function_map["detach"] = std::move(detach);
|
|
806
834
|
function_map["close"] = std::move(close);
|
|
@@ -811,6 +839,8 @@ void DBHostObject::create_jsi_functions() {
|
|
|
811
839
|
function_map["executeBatch"] = std::move(execute_batch);
|
|
812
840
|
function_map["prepareStatement"] = std::move(prepare_statement);
|
|
813
841
|
function_map["getDbPath"] = std::move(get_db_path);
|
|
842
|
+
function_map["flushPendingReactiveQueries"] =
|
|
843
|
+
std::move(flush_pending_reactive_queries_js);
|
|
814
844
|
#ifdef OP_SQLITE_USE_LIBSQL
|
|
815
845
|
function_map["sync"] = std::move(sync);
|
|
816
846
|
#else
|
|
@@ -833,6 +863,12 @@ jsi::Value DBHostObject::get(jsi::Runtime &rt,
|
|
|
833
863
|
const jsi::PropNameID &propNameID) {
|
|
834
864
|
|
|
835
865
|
auto name = propNameID.utf8(rt);
|
|
866
|
+
if (name == "execute") {
|
|
867
|
+
return jsi::Value(rt, function_map["execute"]);
|
|
868
|
+
}
|
|
869
|
+
if (name == "flushPendingReactiveQueries") {
|
|
870
|
+
return jsi::Value(rt, function_map["flushPendingReactiveQueries"]);
|
|
871
|
+
}
|
|
836
872
|
if (name == "attach") {
|
|
837
873
|
return jsi::Value(rt, function_map["attach"]);
|
|
838
874
|
}
|
|
@@ -845,9 +881,6 @@ jsi::Value DBHostObject::get(jsi::Runtime &rt,
|
|
|
845
881
|
if (name == "executeRaw") {
|
|
846
882
|
return jsi::Value(rt, function_map["executeRaw"]);
|
|
847
883
|
}
|
|
848
|
-
if (name == "execute") {
|
|
849
|
-
return jsi::Value(rt, function_map["execute"]);
|
|
850
|
-
}
|
|
851
884
|
if (name == "executeWithHostObjects") {
|
|
852
885
|
return jsi::Value(rt, function_map["executeWithHostObjects"]);
|
|
853
886
|
}
|
package/cpp/DBHostObject.h
CHANGED
|
@@ -4,16 +4,22 @@
|
|
|
4
4
|
#include "sqlite3.h"
|
|
5
5
|
#include "types.h"
|
|
6
6
|
#include <ReactCommon/CallInvoker.h>
|
|
7
|
-
#include <any>
|
|
8
7
|
#include <jsi/jsi.h>
|
|
9
8
|
#include <unordered_map>
|
|
10
9
|
#include <vector>
|
|
10
|
+
#include <set>
|
|
11
11
|
|
|
12
12
|
namespace opsqlite {
|
|
13
13
|
|
|
14
14
|
namespace jsi = facebook::jsi;
|
|
15
15
|
namespace react = facebook::react;
|
|
16
16
|
|
|
17
|
+
struct PendingReactiveInvocation {
|
|
18
|
+
std::string db_name;
|
|
19
|
+
std::string table;
|
|
20
|
+
std::string rowid;
|
|
21
|
+
};
|
|
22
|
+
|
|
17
23
|
struct TableRowDiscriminator {
|
|
18
24
|
std::string table;
|
|
19
25
|
std::vector<int> ids;
|
|
@@ -29,7 +35,7 @@ class JSI_EXPORT DBHostObject : public jsi::HostObject {
|
|
|
29
35
|
public:
|
|
30
36
|
// Constructor for local databases
|
|
31
37
|
DBHostObject(jsi::Runtime &rt, std::string &base_path,
|
|
32
|
-
std::shared_ptr<react::CallInvoker>
|
|
38
|
+
std::shared_ptr<react::CallInvoker> invoker,
|
|
33
39
|
std::shared_ptr<ThreadPool> thread_pool, std::string &db_name,
|
|
34
40
|
std::string &path, std::string &crsqlite_path,
|
|
35
41
|
std::string &sqlite_vec_path, std::string &encryption_key);
|
|
@@ -37,7 +43,7 @@ public:
|
|
|
37
43
|
#ifdef OP_SQLITE_USE_LIBSQL
|
|
38
44
|
// Constructor for remoteOpen, purely for remote databases
|
|
39
45
|
DBHostObject(jsi::Runtime &rt, std::string &url, std::string &auth_token,
|
|
40
|
-
std::shared_ptr<react::CallInvoker>
|
|
46
|
+
std::shared_ptr<react::CallInvoker> invoker,
|
|
41
47
|
std::shared_ptr<ThreadPool> thread_pool);
|
|
42
48
|
|
|
43
49
|
// Constructor for a local database with remote sync
|
|
@@ -55,13 +61,15 @@ public:
|
|
|
55
61
|
~DBHostObject();
|
|
56
62
|
|
|
57
63
|
private:
|
|
64
|
+
std::set<std::shared_ptr<ReactiveQuery>> pending_reactive_queries;
|
|
58
65
|
void auto_register_update_hook();
|
|
59
66
|
void create_jsi_functions();
|
|
67
|
+
void flush_pending_reactive_queries(std::shared_ptr<jsi::Value> resolve);
|
|
60
68
|
|
|
61
69
|
std::unordered_map<std::string, jsi::Value> function_map;
|
|
62
70
|
std::string base_path;
|
|
63
71
|
std::shared_ptr<jsi::Value> update_hook;
|
|
64
|
-
std::shared_ptr<react::CallInvoker>
|
|
72
|
+
std::shared_ptr<react::CallInvoker> invoker;
|
|
65
73
|
std::shared_ptr<ThreadPool> thread_pool;
|
|
66
74
|
std::string db_name;
|
|
67
75
|
std::shared_ptr<jsi::Value> update_hook_callback;
|
|
@@ -69,6 +77,7 @@ private:
|
|
|
69
77
|
std::shared_ptr<jsi::Value> rollback_hook_callback;
|
|
70
78
|
jsi::Runtime &rt;
|
|
71
79
|
std::vector<std::shared_ptr<ReactiveQuery>> reactive_queries;
|
|
80
|
+
std::vector<PendingReactiveInvocation> pending_reactive_invocations;
|
|
72
81
|
bool is_update_hook_registered = false;
|
|
73
82
|
bool invalidated = false;
|
|
74
83
|
};
|
package/lib/commonjs/index.js
CHANGED
|
@@ -110,6 +110,7 @@ function enhanceDB(db, options) {
|
|
|
110
110
|
getDbPath: db.getDbPath,
|
|
111
111
|
reactiveExecute: db.reactiveExecute,
|
|
112
112
|
sync: db.sync,
|
|
113
|
+
flushPendingReactiveQueries: db.flushPendingReactiveQueries,
|
|
113
114
|
close: () => {
|
|
114
115
|
db.close();
|
|
115
116
|
delete locks[options.url];
|
|
@@ -139,7 +140,7 @@ function enhanceDB(db, options) {
|
|
|
139
140
|
let rows = [];
|
|
140
141
|
for (let i = 0; i < (intermediateResult.rawRows?.length ?? 0); i++) {
|
|
141
142
|
let row = {};
|
|
142
|
-
for (let j = 0; j < intermediateResult.columnNames.length
|
|
143
|
+
for (let j = 0; j < intermediateResult.columnNames.length; j++) {
|
|
143
144
|
let columnName = intermediateResult.columnNames[j];
|
|
144
145
|
let value = intermediateResult.rawRows[i][j];
|
|
145
146
|
row[columnName] = value;
|
|
@@ -187,6 +188,7 @@ function enhanceDB(db, options) {
|
|
|
187
188
|
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
188
189
|
}
|
|
189
190
|
const result = await enhancedDb.execute('COMMIT;');
|
|
191
|
+
await enhancedDb.flushPendingReactiveQueries();
|
|
190
192
|
isFinalized = true;
|
|
191
193
|
return result;
|
|
192
194
|
};
|
|
@@ -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","enhanceDB","db","options","lock","queue","inProgress","startNextTransaction","length","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","rows","_array","execute","intermediateResult","i","rawRows","row","j","columnNames","columnName","value","push","res","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":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOA,IAAIC,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;EAClC,IAAIC,0BAAa,CAACC,QAAQ,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIC,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,IAAIF,0BAAa,CAACC,QAAQ,CAACE,OAAO,IAAI,IAAI,EAAE;IAC1C,MAAM,IAAID,KAAK,CACb,iQACF,CAAC;EACH;;EAEA;EACA,MAAME,MAAM,GAAGJ,0BAAa,CAACC,QAAQ,CAACE,OAAO,CAAC,CAAC;EAC/C,IAAIC,MAAM,KAAK,IAAI,EAAE;IACnB,MAAM,IAAIF,KAAK,CACb,mLACF,CAAC;EACH;;EAEA;EACA,IAAIJ,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIG,KAAK,CACb,yIACF,CAAC;EACH;AACF;AAEA,MAAMG,KAAK,GAAGP,MAAM,CAACC,eAAe;AAC7B,MAAME,QAAQ,GAAAK,OAAA,CAAAL,QAAA,GAAGI,KAAsB;AAEvC,MAAM;EACXE,iBAAiB;EACjBC,gBAAgB;EAChBC,qBAAqB;EACrBC,kBAAkB;EAClBC;AACF,CAAC,GAAG,CAAC,CAACX,0BAAa,CAACC,QAAQ,CAACW,YAAY,GACrCZ,0BAAa,CAACC,QAAQ,CAACW,YAAY,CAAC,CAAC,GACrCZ,0BAAa,CAACC,QAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AAHAK,OAAA,CAAAK,2BAAA,GAAAA,2BAAA;AAAAL,OAAA,CAAAI,kBAAA,GAAAA,kBAAA;AAAAJ,OAAA,CAAAG,qBAAA,GAAAA,qBAAA;AAAAH,OAAA,CAAAE,gBAAA,GAAAA,gBAAA;AAAAF,OAAA,CAAAC,iBAAA,GAAAA,iBAAA;
|
|
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","enhanceDB","db","options","lock","queue","inProgress","startNextTransaction","length","tx","shift","setImmediate","start","enhancedDb","delete","attach","detach","executeBatch","loadFile","updateHook","commitHook","rollbackHook","loadExtension","executeRaw","getDbPath","reactiveExecute","sync","flushPendingReactiveQueries","close","url","executeWithHostObjects","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","rows","_array","execute","intermediateResult","i","rawRows","row","j","columnNames","columnName","value","push","res","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":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -100,6 +100,7 @@ function enhanceDB(db, options) {
|
|
|
100
100
|
getDbPath: db.getDbPath,
|
|
101
101
|
reactiveExecute: db.reactiveExecute,
|
|
102
102
|
sync: db.sync,
|
|
103
|
+
flushPendingReactiveQueries: db.flushPendingReactiveQueries,
|
|
103
104
|
close: () => {
|
|
104
105
|
db.close();
|
|
105
106
|
delete locks[options.url];
|
|
@@ -129,7 +130,7 @@ function enhanceDB(db, options) {
|
|
|
129
130
|
let rows = [];
|
|
130
131
|
for (let i = 0; i < (intermediateResult.rawRows?.length ?? 0); i++) {
|
|
131
132
|
let row = {};
|
|
132
|
-
for (let j = 0; j < intermediateResult.columnNames.length
|
|
133
|
+
for (let j = 0; j < intermediateResult.columnNames.length; j++) {
|
|
133
134
|
let columnName = intermediateResult.columnNames[j];
|
|
134
135
|
let value = intermediateResult.rawRows[i][j];
|
|
135
136
|
row[columnName] = value;
|
|
@@ -177,6 +178,7 @@ function enhanceDB(db, options) {
|
|
|
177
178
|
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
178
179
|
}
|
|
179
180
|
const result = await enhancedDb.execute('COMMIT;');
|
|
181
|
+
await enhancedDb.flushPendingReactiveQueries();
|
|
180
182
|
isFinalized = true;
|
|
181
183
|
return result;
|
|
182
184
|
};
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","global","__OPSQLiteProxy","OPSQLite","Error","install","result","proxy","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceDB","db","options","lock","queue","inProgress","startNextTransaction","length","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","rows","_array","execute","intermediateResult","i","rawRows","row","j","columnNames","columnName","value","push","res","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":"AAAA,SAASA,aAAa,QAAQ,cAAc;AAO5C,IAAIC,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;EAClC,IAAIF,aAAa,CAACG,QAAQ,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIC,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,IAAIJ,aAAa,CAACG,QAAQ,CAACE,OAAO,IAAI,IAAI,EAAE;IAC1C,MAAM,IAAID,KAAK,CACb,iQACF,CAAC;EACH;;EAEA;EACA,MAAME,MAAM,GAAGN,aAAa,CAACG,QAAQ,CAACE,OAAO,CAAC,CAAC;EAC/C,IAAIC,MAAM,KAAK,IAAI,EAAE;IACnB,MAAM,IAAIF,KAAK,CACb,mLACF,CAAC;EACH;;EAEA;EACA,IAAIH,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIE,KAAK,CACb,yIACF,CAAC;EACH;AACF;AAEA,MAAMG,KAAK,GAAGN,MAAM,CAACC,eAAe;AACpC,OAAO,MAAMC,QAAQ,GAAGI,KAAsB;AAE9C,OAAO,MAAM;EACXC,iBAAiB;EACjBC,gBAAgB;EAChBC,qBAAqB;EACrBC,kBAAkB;EAClBC;AACF,CAAC,GAAG,CAAC,CAACZ,aAAa,CAACG,QAAQ,CAACU,YAAY,GACrCb,aAAa,CAACG,QAAQ,CAACU,YAAY,CAAC,CAAC,GACrCb,aAAa,CAACG,QAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["NativeModules","global","__OPSQLiteProxy","OPSQLite","Error","install","result","proxy","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceDB","db","options","lock","queue","inProgress","startNextTransaction","length","tx","shift","setImmediate","start","enhancedDb","delete","attach","detach","executeBatch","loadFile","updateHook","commitHook","rollbackHook","loadExtension","executeRaw","getDbPath","reactiveExecute","sync","flushPendingReactiveQueries","close","url","executeWithHostObjects","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","rows","_array","execute","intermediateResult","i","rawRows","row","j","columnNames","columnName","value","push","res","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":[]}
|
|
@@ -18,7 +18,7 @@ export type QueryResult = {
|
|
|
18
18
|
insertId?: number;
|
|
19
19
|
rowsAffected: number;
|
|
20
20
|
res?: any[];
|
|
21
|
-
rows
|
|
21
|
+
rows: any[];
|
|
22
22
|
rawRows?: any[];
|
|
23
23
|
columnNames?: string[];
|
|
24
24
|
/**
|
|
@@ -106,6 +106,7 @@ export type DB = {
|
|
|
106
106
|
callback: (response: any) => void;
|
|
107
107
|
}) => () => void;
|
|
108
108
|
sync: () => void;
|
|
109
|
+
flushPendingReactiveQueries: () => Promise<void>;
|
|
109
110
|
};
|
|
110
111
|
type OPSQLiteProxy = {
|
|
111
112
|
open: (options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACb,SAAS,kBAAkB,IAAI,OAAO,CAAC;IACvC,IAAI,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AA8BD,eAAO,MAAM,QAAQ,eAAyB,CAAC;AAE/C,eAAO,MACL,iBAAiB,OACjB,gBAAgB,OAChB,qBAAqB,OACrB,kBAAkB,OAClB,2BAA2B,KAGH,CAAC;AAE3B;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -59,7 +59,7 @@ export type QueryResult = {
|
|
|
59
59
|
insertId?: number;
|
|
60
60
|
rowsAffected: number;
|
|
61
61
|
res?: any[];
|
|
62
|
-
rows
|
|
62
|
+
rows: any[];
|
|
63
63
|
// An array of intermediate results, just values without column names
|
|
64
64
|
rawRows?: any[];
|
|
65
65
|
columnNames?: string[];
|
|
@@ -178,6 +178,7 @@ export type DB = {
|
|
|
178
178
|
callback: (response: any) => void;
|
|
179
179
|
}) => () => void;
|
|
180
180
|
sync: () => void;
|
|
181
|
+
flushPendingReactiveQueries: () => Promise<void>;
|
|
181
182
|
};
|
|
182
183
|
|
|
183
184
|
type OPSQLiteProxy = {
|
|
@@ -243,6 +244,7 @@ function enhanceDB(db: DB, options: any): DB {
|
|
|
243
244
|
getDbPath: db.getDbPath,
|
|
244
245
|
reactiveExecute: db.reactiveExecute,
|
|
245
246
|
sync: db.sync,
|
|
247
|
+
flushPendingReactiveQueries: db.flushPendingReactiveQueries,
|
|
246
248
|
close: () => {
|
|
247
249
|
db.close();
|
|
248
250
|
delete locks[options.url];
|
|
@@ -284,7 +286,7 @@ function enhanceDB(db: DB, options: any): DB {
|
|
|
284
286
|
let rows: any[] = [];
|
|
285
287
|
for (let i = 0; i < (intermediateResult.rawRows?.length ?? 0); i++) {
|
|
286
288
|
let row: any = {};
|
|
287
|
-
for (let j = 0; j < intermediateResult.columnNames!.length
|
|
289
|
+
for (let j = 0; j < intermediateResult.columnNames!.length; j++) {
|
|
288
290
|
let columnName = intermediateResult.columnNames![j]!;
|
|
289
291
|
let value = intermediateResult.rawRows![i][j];
|
|
290
292
|
|
|
@@ -347,6 +349,9 @@ function enhanceDB(db: DB, options: any): DB {
|
|
|
347
349
|
);
|
|
348
350
|
}
|
|
349
351
|
const result = await enhancedDb.execute('COMMIT;');
|
|
352
|
+
|
|
353
|
+
await enhancedDb.flushPendingReactiveQueries();
|
|
354
|
+
|
|
350
355
|
isFinalized = true;
|
|
351
356
|
return result;
|
|
352
357
|
};
|