@op-engineering/op-sqlite 11.2.14 → 11.2.15

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/utils.cpp CHANGED
@@ -11,311 +11,317 @@ namespace opsqlite {
11
11
  namespace jsi = facebook::jsi;
12
12
 
13
13
  inline jsi::Value to_jsi(jsi::Runtime &rt, const JSVariant &value) {
14
- if (std::holds_alternative<bool>(value)) {
15
- return std::get<bool>(value);
16
- } else if (std::holds_alternative<int>(value)) {
17
- return jsi::Value(std::get<int>(value));
18
- } else if (std::holds_alternative<long long>(value)) {
19
- return jsi::Value(static_cast<double>(std::get<long long>(value)));
20
- } else if (std::holds_alternative<double>(value)) {
21
- return jsi::Value(std::get<double>(value));
22
- } else if (std::holds_alternative<std::string>(value)) {
23
- auto str = std::get<std::string>(value);
24
- return jsi::String::createFromUtf8(rt, str);
25
- } else if (std::holds_alternative<ArrayBuffer>(value)) {
26
- auto jsBuffer = std::get<ArrayBuffer>(value);
27
- jsi::Function array_buffer_ctor =
28
- rt.global().getPropertyAsFunction(rt, "ArrayBuffer");
29
- jsi::Object o = array_buffer_ctor.callAsConstructor(rt, (int)jsBuffer.size)
30
- .getObject(rt);
31
- jsi::ArrayBuffer buf = o.getArrayBuffer(rt);
32
- memcpy(buf.data(rt), jsBuffer.data.get(), jsBuffer.size);
33
- return o;
34
- }
35
-
36
- return jsi::Value::null();
37
-
38
- // I wanted to use the visitor pattern here but on the ArrayBuffer case it is
39
- // somehow throwing a pointer exception Somehow the v.size or v.data.get() is
40
- // loosing the data when called from the lambda I'm guessing the I created the
41
- // shared pointer wrong and the memory is being freed before the lambda is
42
- // called
43
- // return std::visit(
44
- // [&](auto &&v) -> jsi::Value {
45
- // using T = std::decay_t<decltype(v)>;
46
- // if constexpr (std::is_same_v<T, bool>) {
47
- // return jsi::Value(v);
48
- // } else if constexpr (std::is_same_v<T, int>) {
49
- // return jsi::Value(v);
50
- // } else if constexpr (std::is_same_v<T, long long>) {
51
- // return jsi::Value(
52
- // static_cast<double>(v)); // JSI doesn't support long long
53
- // } else if constexpr (std::is_same_v<T, double>) {
54
- // return jsi::Value(v);
55
- // } else if constexpr (std::is_same_v<T, std::string>) {
56
- // return jsi::String::createFromUtf8(rt, v);
57
- // } else if constexpr (std::is_same_v<T, ArrayBuffer>) {
58
- // static jsi::Function buffer_constructor =
59
- // rt.global().getPropertyAsFunction(rt, "ArrayBuffer");
60
- // jsi::Object o =
61
- // buffer_constructor.callAsConstructor(rt,
62
- // static_cast<int>(v.size))
63
- // .getObject(rt);
64
- // jsi::ArrayBuffer buf = o.getArrayBuffer(rt);
65
- // memcpy(buf.data(rt), v.data.get(), v.size);
66
- // return o;
67
- // } else {
68
- // return jsi::Value::null();
69
- // }
70
- // },
71
- // value);
14
+ if (std::holds_alternative<bool>(value)) {
15
+ return std::get<bool>(value);
16
+ } else if (std::holds_alternative<int>(value)) {
17
+ return jsi::Value(std::get<int>(value));
18
+ } else if (std::holds_alternative<long long>(value)) {
19
+ return jsi::Value(static_cast<double>(std::get<long long>(value)));
20
+ } else if (std::holds_alternative<double>(value)) {
21
+ return jsi::Value(std::get<double>(value));
22
+ } else if (std::holds_alternative<std::string>(value)) {
23
+ auto str = std::get<std::string>(value);
24
+ return jsi::String::createFromUtf8(rt, str);
25
+ } else if (std::holds_alternative<ArrayBuffer>(value)) {
26
+ auto jsBuffer = std::get<ArrayBuffer>(value);
27
+ jsi::Function array_buffer_ctor =
28
+ rt.global().getPropertyAsFunction(rt, "ArrayBuffer");
29
+ jsi::Object o =
30
+ array_buffer_ctor.callAsConstructor(rt, (int)jsBuffer.size)
31
+ .getObject(rt);
32
+ jsi::ArrayBuffer buf = o.getArrayBuffer(rt);
33
+ memcpy(buf.data(rt), jsBuffer.data.get(), jsBuffer.size);
34
+ return o;
35
+ }
36
+
37
+ return jsi::Value::null();
38
+
39
+ // I wanted to use the visitor pattern here but on the ArrayBuffer case it
40
+ // is somehow throwing a pointer exception Somehow the v.size or
41
+ // v.data.get() is loosing the data when called from the lambda I'm guessing
42
+ // the I created the shared pointer wrong and the memory is being freed
43
+ // before the lambda is called
44
+ // return std::visit(
45
+ // [&](auto &&v) -> jsi::Value {
46
+ // using T = std::decay_t<decltype(v)>;
47
+ // if constexpr (std::is_same_v<T, bool>) {
48
+ // return jsi::Value(v);
49
+ // } else if constexpr (std::is_same_v<T, int>) {
50
+ // return jsi::Value(v);
51
+ // } else if constexpr (std::is_same_v<T, long long>) {
52
+ // return jsi::Value(
53
+ // static_cast<double>(v)); // JSI doesn't support long long
54
+ // } else if constexpr (std::is_same_v<T, double>) {
55
+ // return jsi::Value(v);
56
+ // } else if constexpr (std::is_same_v<T, std::string>) {
57
+ // return jsi::String::createFromUtf8(rt, v);
58
+ // } else if constexpr (std::is_same_v<T, ArrayBuffer>) {
59
+ // static jsi::Function buffer_constructor =
60
+ // rt.global().getPropertyAsFunction(rt, "ArrayBuffer");
61
+ // jsi::Object o =
62
+ // buffer_constructor.callAsConstructor(rt,
63
+ // static_cast<int>(v.size))
64
+ // .getObject(rt);
65
+ // jsi::ArrayBuffer buf = o.getArrayBuffer(rt);
66
+ // memcpy(buf.data(rt), v.data.get(), v.size);
67
+ // return o;
68
+ // } else {
69
+ // return jsi::Value::null();
70
+ // }
71
+ // },
72
+ // value);
72
73
  }
73
74
 
74
75
  inline JSVariant to_variant(jsi::Runtime &rt, const jsi::Value &value) {
75
- if (value.isNull() || value.isUndefined()) {
76
- return JSVariant(nullptr);
77
- } else if (value.isBool()) {
78
- return JSVariant(value.getBool());
79
- } else if (value.isNumber()) {
80
- double doubleVal = value.asNumber();
81
- int intVal = (int)doubleVal;
82
- long long longVal = (long)doubleVal;
83
- if (intVal == doubleVal) {
84
- return JSVariant(intVal);
85
- } else if (longVal == doubleVal) {
86
- return JSVariant(longVal);
87
- } else {
88
- return JSVariant(doubleVal);
89
- }
90
- } else if (value.isString()) {
91
- std::string strVal = value.asString(rt).utf8(rt);
92
- return JSVariant(strVal);
93
- } else if (value.isObject()) {
94
- auto obj = value.asObject(rt);
95
-
96
- if (!obj.isArrayBuffer(rt)) {
97
- throw std::runtime_error(
98
- "Object is not an ArrayBuffer, cannot bind to SQLite");
99
- }
76
+ if (value.isNull() || value.isUndefined()) {
77
+ return JSVariant(nullptr);
78
+ } else if (value.isBool()) {
79
+ return JSVariant(value.getBool());
80
+ } else if (value.isNumber()) {
81
+ double doubleVal = value.asNumber();
82
+ int intVal = (int)doubleVal;
83
+ long long longVal = (long)doubleVal;
84
+ if (intVal == doubleVal) {
85
+ return JSVariant(intVal);
86
+ } else if (longVal == doubleVal) {
87
+ return JSVariant(longVal);
88
+ } else {
89
+ return JSVariant(doubleVal);
90
+ }
91
+ } else if (value.isString()) {
92
+ std::string strVal = value.asString(rt).utf8(rt);
93
+ return JSVariant(strVal);
94
+ } else if (value.isObject()) {
95
+ auto obj = value.asObject(rt);
96
+
97
+ if (!obj.isArrayBuffer(rt)) {
98
+ throw std::runtime_error(
99
+ "Object is not an ArrayBuffer, cannot bind to SQLite");
100
+ }
100
101
 
101
- auto buffer = obj.getArrayBuffer(rt);
102
- uint8_t *data = new uint8_t[buffer.size(rt)];
103
- memcpy(data, buffer.data(rt), buffer.size(rt));
102
+ auto buffer = obj.getArrayBuffer(rt);
103
+ uint8_t *data = new uint8_t[buffer.size(rt)];
104
+ memcpy(data, buffer.data(rt), buffer.size(rt));
104
105
 
105
- return JSVariant(ArrayBuffer{.data = std::shared_ptr<uint8_t>{data},
106
- .size = buffer.size(rt)});
107
- }
106
+ return JSVariant(ArrayBuffer{.data = std::shared_ptr<uint8_t>{data},
107
+ .size = buffer.size(rt)});
108
+ }
108
109
 
109
- throw std::runtime_error("Cannot convert JSI value to C++ Variant value");
110
+ throw std::runtime_error("Cannot convert JSI value to C++ Variant value");
110
111
  }
111
112
 
112
113
  std::vector<std::string> to_string_vec(jsi::Runtime &rt, jsi::Value const &xs) {
113
- jsi::Array values = xs.asObject(rt).asArray(rt);
114
- std::vector<std::string> res;
115
- for (int ii = 0; ii < values.length(rt); ii++) {
116
- std::string value = values.getValueAtIndex(rt, ii).asString(rt).utf8(rt);
117
- res.emplace_back(value);
118
- }
119
- return res;
114
+ jsi::Array values = xs.asObject(rt).asArray(rt);
115
+ std::vector<std::string> res;
116
+ for (int ii = 0; ii < values.length(rt); ii++) {
117
+ std::string value =
118
+ values.getValueAtIndex(rt, ii).asString(rt).utf8(rt);
119
+ res.emplace_back(value);
120
+ }
121
+ return res;
120
122
  }
121
123
 
122
124
  std::vector<int> to_int_vec(jsi::Runtime &rt, jsi::Value const &xs) {
123
- jsi::Array values = xs.asObject(rt).asArray(rt);
124
- std::vector<int> res;
125
- for (int ii = 0; ii < values.length(rt); ii++) {
126
- int value = static_cast<int>(values.getValueAtIndex(rt, ii).asNumber());
127
- res.emplace_back(value);
128
- }
129
- return res;
125
+ jsi::Array values = xs.asObject(rt).asArray(rt);
126
+ std::vector<int> res;
127
+ for (int ii = 0; ii < values.length(rt); ii++) {
128
+ int value = static_cast<int>(values.getValueAtIndex(rt, ii).asNumber());
129
+ res.emplace_back(value);
130
+ }
131
+ return res;
130
132
  }
131
133
 
132
134
  std::vector<JSVariant> to_variant_vec(jsi::Runtime &rt, jsi::Value const &xs) {
133
- std::vector<JSVariant> res;
134
- jsi::Array values = xs.asObject(rt).asArray(rt);
135
+ std::vector<JSVariant> res;
136
+ jsi::Array values = xs.asObject(rt).asArray(rt);
135
137
 
136
- for (int ii = 0; ii < values.length(rt); ii++) {
137
- jsi::Value value = values.getValueAtIndex(rt, ii);
138
- res.emplace_back(to_variant(rt, value));
139
- }
138
+ for (int ii = 0; ii < values.length(rt); ii++) {
139
+ jsi::Value value = values.getValueAtIndex(rt, ii);
140
+ res.emplace_back(to_variant(rt, value));
141
+ }
140
142
 
141
- return res;
143
+ return res;
142
144
  }
143
145
 
144
146
  jsi::Value create_js_rows(jsi::Runtime &rt, const BridgeResult &status) {
145
- jsi::Object res = jsi::Object(rt);
147
+ jsi::Object res = jsi::Object(rt);
146
148
 
147
- res.setProperty(rt, "rowsAffected", status.affectedRows);
148
- if (status.affectedRows > 0 && status.insertId != 0) {
149
- res.setProperty(rt, "insertId", jsi::Value(status.insertId));
150
- }
149
+ res.setProperty(rt, "rowsAffected", status.affectedRows);
150
+ if (status.affectedRows > 0 && status.insertId != 0) {
151
+ res.setProperty(rt, "insertId", jsi::Value(status.insertId));
152
+ }
151
153
 
152
- size_t row_count = status.rows.size();
153
- auto rows = jsi::Array(rt, row_count);
154
+ size_t row_count = status.rows.size();
155
+ auto rows = jsi::Array(rt, row_count);
156
+
157
+ if (row_count > 0) {
158
+ for (int i = 0; i < row_count; i++) {
159
+ auto row = jsi::Array(rt, status.column_names.size());
160
+ std::vector<JSVariant> native_row = status.rows[i];
161
+ for (int j = 0; j < native_row.size(); j++) {
162
+ auto value = to_jsi(rt, native_row[j]);
163
+ row.setValueAtIndex(rt, j, value);
164
+ }
165
+ rows.setValueAtIndex(rt, i, row);
166
+ }
167
+ }
168
+ res.setProperty(rt, "rawRows", rows);
154
169
 
155
- if (row_count > 0) {
156
- for (int i = 0; i < row_count; i++) {
157
- auto row = jsi::Array(rt, status.column_names.size());
158
- std::vector<JSVariant> native_row = status.rows[i];
159
- for (int j = 0; j < native_row.size(); j++) {
160
- auto value = to_jsi(rt, native_row[j]);
161
- row.setValueAtIndex(rt, j, value);
162
- }
163
- rows.setValueAtIndex(rt, i, row);
170
+ size_t column_count = status.column_names.size();
171
+ auto column_array = jsi::Array(rt, column_count);
172
+ for (int i = 0; i < column_count; i++) {
173
+ auto column = status.column_names.at(i);
174
+ column_array.setValueAtIndex(rt, i, to_jsi(rt, column));
164
175
  }
165
- }
166
- res.setProperty(rt, "rawRows", rows);
167
-
168
- size_t column_count = status.column_names.size();
169
- auto column_array = jsi::Array(rt, column_count);
170
- for (int i = 0; i < column_count; i++) {
171
- auto column = status.column_names.at(i);
172
- column_array.setValueAtIndex(rt, i, to_jsi(rt, column));
173
- }
174
- res.setProperty(rt, "columnNames", std::move(column_array));
175
- return res;
176
+ res.setProperty(rt, "columnNames", std::move(column_array));
177
+ return res;
176
178
  }
177
179
 
178
180
  jsi::Value
179
181
  create_result(jsi::Runtime &rt, const BridgeResult &status,
180
182
  std::vector<DumbHostObject> *results,
181
183
  std::shared_ptr<std::vector<SmartHostObject>> metadata) {
182
- jsi::Object res = jsi::Object(rt);
183
-
184
- res.setProperty(rt, "rowsAffected", status.affectedRows);
185
- if (status.affectedRows > 0 && status.insertId != 0) {
186
- res.setProperty(rt, "insertId", jsi::Value(status.insertId));
187
- }
188
-
189
- size_t rowCount = results->size();
190
-
191
- auto array = jsi::Array(rt, rowCount);
192
- for (int i = 0; i < rowCount; i++) {
193
- auto obj = results->at(i);
194
- array.setValueAtIndex(rt, i,
195
- jsi::Object::createFromHostObject(
196
- rt, std::make_shared<DumbHostObject>(obj)));
197
- }
198
- res.setProperty(rt, "rows", std::move(array));
199
-
200
- size_t column_count = metadata->size();
201
- auto column_array = jsi::Array(rt, column_count);
202
- for (int i = 0; i < column_count; i++) {
203
- auto column = metadata->at(i);
204
- column_array.setValueAtIndex(
205
- rt, i,
206
- jsi::Object::createFromHostObject(
207
- rt, std::make_shared<SmartHostObject>(column)));
208
- }
209
- res.setProperty(rt, "metadata", std::move(column_array));
210
-
211
- return std::move(res);
184
+ jsi::Object res = jsi::Object(rt);
185
+
186
+ res.setProperty(rt, "rowsAffected", status.affectedRows);
187
+ if (status.affectedRows > 0 && status.insertId != 0) {
188
+ res.setProperty(rt, "insertId", jsi::Value(status.insertId));
189
+ }
190
+
191
+ size_t rowCount = results->size();
192
+
193
+ auto array = jsi::Array(rt, rowCount);
194
+ for (int i = 0; i < rowCount; i++) {
195
+ auto obj = results->at(i);
196
+ array.setValueAtIndex(rt, i,
197
+ jsi::Object::createFromHostObject(
198
+ rt, std::make_shared<DumbHostObject>(obj)));
199
+ }
200
+ res.setProperty(rt, "rows", std::move(array));
201
+
202
+ size_t column_count = metadata->size();
203
+ auto column_array = jsi::Array(rt, column_count);
204
+ for (int i = 0; i < column_count; i++) {
205
+ auto column = metadata->at(i);
206
+ column_array.setValueAtIndex(
207
+ rt, i,
208
+ jsi::Object::createFromHostObject(
209
+ rt, std::make_shared<SmartHostObject>(column)));
210
+ }
211
+ res.setProperty(rt, "metadata", std::move(column_array));
212
+
213
+ return std::move(res);
212
214
  }
213
215
 
214
216
  jsi::Value
215
217
  create_raw_result(jsi::Runtime &rt, const BridgeResult &status,
216
218
  const std::vector<std::vector<JSVariant>> *results) {
217
- size_t row_count = results->size();
218
- jsi::Array res = jsi::Array(rt, row_count);
219
- for (int i = 0; i < row_count; i++) {
220
- auto row = results->at(i);
221
- auto array = jsi::Array(rt, row.size());
222
- for (int j = 0; j < row.size(); j++) {
223
- array.setValueAtIndex(rt, j, to_jsi(rt, row[j]));
219
+ size_t row_count = results->size();
220
+ jsi::Array res = jsi::Array(rt, row_count);
221
+ for (int i = 0; i < row_count; i++) {
222
+ auto row = results->at(i);
223
+ auto array = jsi::Array(rt, row.size());
224
+ for (int j = 0; j < row.size(); j++) {
225
+ array.setValueAtIndex(rt, j, to_jsi(rt, row[j]));
226
+ }
227
+ res.setValueAtIndex(rt, i, array);
224
228
  }
225
- res.setValueAtIndex(rt, i, array);
226
- }
227
- return res;
229
+ return res;
228
230
  }
229
231
 
230
- void to_batch_arguments(jsi::Runtime &rt, jsi::Array const &batch_params,
232
+ void to_batch_arguments(jsi::Runtime &rt, jsi::Array const &tuples,
231
233
  std::vector<BatchArguments> *commands) {
232
- for (int i = 0; i < batch_params.length(rt); i++) {
233
- const jsi::Array &command =
234
- batch_params.getValueAtIndex(rt, i).asObject(rt).asArray(rt);
235
- if (command.length(rt) == 0) {
236
- continue;
237
- }
234
+ for (int i = 0; i < tuples.length(rt); i++) {
235
+ const jsi::Array &tuple =
236
+ tuples.getValueAtIndex(rt, i).asObject(rt).asArray(rt);
237
+ const size_t length = tuple.length(rt);
238
+ if (length == 0) {
239
+ continue;
240
+ }
241
+
242
+ const std::string query =
243
+ tuple.getValueAtIndex(rt, 0).asString(rt).utf8(rt);
244
+ if (length == 1) {
245
+ commands->push_back({query});
246
+ continue;
247
+ }
238
248
 
239
- const std::string query =
240
- command.getValueAtIndex(rt, 0).asString(rt).utf8(rt);
241
- const jsi::Value &commandParams = command.length(rt) > 1
242
- ? command.getValueAtIndex(rt, 1)
243
- : jsi::Value::undefined();
244
- if (!commandParams.isUndefined() &&
245
- commandParams.asObject(rt).isArray(rt) &&
246
- commandParams.asObject(rt).asArray(rt).length(rt) > 0 &&
247
- commandParams.asObject(rt)
248
- .asArray(rt)
249
- .getValueAtIndex(rt, 0)
250
- .isObject()) {
251
- // This arguments is an array of arrays, like a batch update of a single
252
- // sql command.
253
- const jsi::Array &batchUpdateParams =
254
- commandParams.asObject(rt).asArray(rt);
255
- for (int x = 0; x < batchUpdateParams.length(rt); x++) {
256
- const jsi::Value &p = batchUpdateParams.getValueAtIndex(rt, x);
257
- auto params =
258
- std::make_shared<std::vector<JSVariant>>(to_variant_vec(rt, p));
259
- commands->push_back({query, params});
260
- }
261
- } else {
262
- auto params = std::make_shared<std::vector<JSVariant>>(
263
- to_variant_vec(rt, commandParams));
264
- commands->push_back({query, params});
249
+ const jsi::Value &tuple_params = tuple.getValueAtIndex(rt, 1);
250
+
251
+ if (!tuple_params.isUndefined() &&
252
+ tuple_params.asObject(rt).isArray(rt) &&
253
+ tuple_params.asObject(rt).asArray(rt).length(rt) > 0 &&
254
+ tuple_params.asObject(rt)
255
+ .asArray(rt)
256
+ .getValueAtIndex(rt, 0)
257
+ .isObject()) {
258
+ // The params for this tuple is an array itself
259
+ // The query should repeat for each element in the array
260
+ const jsi::Array &params_array =
261
+ tuple_params.asObject(rt).asArray(rt);
262
+ for (int x = 0; x < params_array.length(rt); x++) {
263
+ const jsi::Value &p = params_array.getValueAtIndex(rt, x);
264
+ auto params = std::vector<JSVariant>(to_variant_vec(rt, p));
265
+ commands->push_back({query, params});
266
+ }
267
+ } else {
268
+ auto params =
269
+ std::vector<JSVariant>(to_variant_vec(rt, tuple_params));
270
+ commands->push_back({query, params});
271
+ }
265
272
  }
266
- }
267
273
  }
268
274
 
269
275
  #ifndef OP_SQLITE_USE_LIBSQL
270
276
  BatchResult import_sql_file(sqlite3 *db, std::string path) {
271
- std::string line;
272
- std::ifstream sqFile(path);
273
- if (!sqFile.is_open()) {
274
- throw std::runtime_error("Could not open file: " + path);
275
- }
276
-
277
- try {
278
- int affectedRows = 0;
279
- int commands = 0;
280
- opsqlite_execute(db, "BEGIN EXCLUSIVE TRANSACTION", nullptr);
281
- while (std::getline(sqFile, line, '\n')) {
282
- if (!line.empty()) {
283
- try {
284
- auto result = opsqlite_execute(db, line, nullptr);
285
- affectedRows += result.affectedRows;
286
- commands++;
287
- } catch (std::exception &exc) {
288
- opsqlite_execute(db, "ROLLBACK", nullptr);
289
- sqFile.close();
290
- throw exc;
277
+ std::string line;
278
+ std::ifstream sqFile(path);
279
+ if (!sqFile.is_open()) {
280
+ throw std::runtime_error("Could not open file: " + path);
281
+ }
282
+
283
+ try {
284
+ int affectedRows = 0;
285
+ int commands = 0;
286
+ opsqlite_execute(db, "BEGIN EXCLUSIVE TRANSACTION", nullptr);
287
+ while (std::getline(sqFile, line, '\n')) {
288
+ if (!line.empty()) {
289
+ try {
290
+ auto result = opsqlite_execute(db, line, nullptr);
291
+ affectedRows += result.affectedRows;
292
+ commands++;
293
+ } catch (std::exception &exc) {
294
+ opsqlite_execute(db, "ROLLBACK", nullptr);
295
+ sqFile.close();
296
+ throw exc;
297
+ }
298
+ }
291
299
  }
292
- }
300
+ sqFile.close();
301
+ opsqlite_execute(db, "COMMIT", nullptr);
302
+ return {"", affectedRows, commands};
303
+ } catch (std::exception &exc) {
304
+ sqFile.close();
305
+ opsqlite_execute(db, "ROLLBACK", nullptr);
306
+ throw exc;
293
307
  }
294
- sqFile.close();
295
- opsqlite_execute(db, "COMMIT", nullptr);
296
- return {"", affectedRows, commands};
297
- } catch (std::exception &exc) {
298
- sqFile.close();
299
- opsqlite_execute(db, "ROLLBACK", nullptr);
300
- throw exc;
301
- }
302
308
  }
303
309
  #endif
304
310
 
305
311
  bool folder_exists(const std::string &name) {
306
- struct stat buffer;
307
- return (stat(name.c_str(), &buffer) == 0);
312
+ struct stat buffer;
313
+ return (stat(name.c_str(), &buffer) == 0);
308
314
  }
309
315
 
310
316
  bool file_exists(const std::string &path) {
311
- struct stat buffer;
312
- return (stat(path.c_str(), &buffer) == 0);
317
+ struct stat buffer;
318
+ return (stat(path.c_str(), &buffer) == 0);
313
319
  }
314
320
 
315
321
  void log_to_console(jsi::Runtime &runtime, const std::string &message) {
316
- auto console = runtime.global().getPropertyAsObject(runtime, "console");
317
- auto log = console.getPropertyAsFunction(runtime, "log");
318
- log.call(runtime, jsi::String::createFromUtf8(runtime, message));
322
+ auto console = runtime.global().getPropertyAsObject(runtime, "console");
323
+ auto log = console.getPropertyAsFunction(runtime, "log");
324
+ log.call(runtime, jsi::String::createFromUtf8(runtime, message));
319
325
  }
320
326
 
321
327
  } // namespace opsqlite
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","global","__OPSQLiteProxy","NativeModules","OPSQLite","Error","installed","install","proxy","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","exports","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","executeWithHostObjects","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","executeSync","intermediateResult","rows","i","rawRows","row","rawRow","j","columnNames","columnName","value","push","res","execute","prepareStatement","stmt","bind","transaction","fn","isFinalized","name","url","commit","result","flushPendingReactiveQueries","rollback","run","executionError","rollbackError","Promise","resolve","reject","then","catch","openSync","isLibsql","openRemote","open","location","startsWith","console","warn","substring","moveAssetsDatabase","args","getDylibPath","bundle","isSQLCipher","isIOSEmbeeded","Platform","OS","isIOSEmbedded"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAUA;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;;AAmPA,IAAIC,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;EAClC,IAAIC,0BAAa,CAACC,QAAQ,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIC,KAAK,CACb,yEACF,CAAC;EACH;;EAEA;EACA,MAAMC,SAAS,GAAGH,0BAAa,CAACC,QAAQ,CAACG,OAAO,CAAC,CAAC;EAClD,IAAI,CAACD,SAAS,EAAE;IACd,MAAM,IAAID,KAAK,CACb,mLACF,CAAC;EACH;;EAEA;EACA,IAAIJ,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIG,KAAK,CACb,0GACF,CAAC;EACH;AACF;AAEA,MAAMG,KAAK,GAAGP,MAAM,CAACC,eAAe;AACpC,MAAME,QAAQ,GAAGI,KAAsB;AAEhC,MAAM;EACXC,iBAAiB;EACjBC,gBAAgB;EAChBC,qBAAqB;EACrBC,kBAAkB;EAClBC;AACF,CAAC,GAAG,CAAC,CAACV,0BAAa,CAACC,QAAQ,CAACU,YAAY,GACrCX,0BAAa,CAACC,QAAQ,CAACU,YAAY,CAAC,CAAC,GACrCX,0BAAa,CAACC,QAAQ;AAACW,OAAA,CAAAF,2BAAA,GAAAA,2BAAA;AAAAE,OAAA,CAAAH,kBAAA,GAAAA,kBAAA;AAAAG,OAAA,CAAAJ,qBAAA,GAAAA,qBAAA;AAAAI,OAAA,CAAAL,gBAAA,GAAAA,gBAAA;AAAAK,OAAA,CAAAN,iBAAA,GAAAA,iBAAA;AAE3B,SAASO,SAASA,CAACC,EAAc,EAAEC,OAAiB,EAAM;EACxD,MAAMC,IAAI,GAAG;IACXC,KAAK,EAAE,EAA0B;IACjCC,UAAU,EAAE;EACd,CAAC;EAED,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;IACjC,IAAIH,IAAI,CAACE,UAAU,EAAE;MACnB;MACA;IACF;IAEA,IAAIF,IAAI,CAACC,KAAK,CAACG,MAAM,EAAE;MACrBJ,IAAI,CAACE,UAAU,GAAG,IAAI;MACtB,MAAMG,EAAE,GAAGL,IAAI,CAACC,KAAK,CAACK,KAAK,CAAC,CAAC;MAE7B,IAAI,CAACD,EAAE,EAAE;QACP,MAAM,IAAInB,KAAK,CAAC,uCAAuC,CAAC;MAC1D;MAEAqB,YAAY,CAAC,MAAM;QACjBF,EAAE,CAACG,KAAK,CAAC,CAAC;MACZ,CAAC,CAAC;IACJ;EACF,CAAC;;EAED;EACA;EACA,IAAIC,UAAU,GAAG;IACfC,MAAM,EAAEZ,EAAE,CAACY,MAAM;IACjBC,MAAM,EAAEb,EAAE,CAACa,MAAM;IACjBC,MAAM,EAAEd,EAAE,CAACc,MAAM;IACjBC,YAAY,EAAEf,EAAE,CAACe,YAAY;IAC7BC,QAAQ,EAAEhB,EAAE,CAACgB,QAAQ;IACrBC,UAAU,EAAEjB,EAAE,CAACiB,UAAU;IACzBC,UAAU,EAAElB,EAAE,CAACkB,UAAU;IACzBC,YAAY,EAAEnB,EAAE,CAACmB,YAAY;IAC7BC,aAAa,EAAEpB,EAAE,CAACoB,aAAa;IAC/BC,UAAU,EAAErB,EAAE,CAACqB,UAAU;IACzBC,SAAS,EAAEtB,EAAE,CAACsB,SAAS;IACvBC,eAAe,EAAEvB,EAAE,CAACuB,eAAe;IACnCC,IAAI,EAAExB,EAAE,CAACwB,IAAI;IACbC,KAAK,EAAEzB,EAAE,CAACyB,KAAK;IACfC,sBAAsB,EAAE,MAAAA,CACtBC,KAAa,EACbC,MAAiB,KACQ;MACzB,MAAMC,eAAe,GAAGD,MAAM,EAAEE,GAAG,CAAEC,CAAC,IAAK;QACzC,IAAIC,WAAW,CAACC,MAAM,CAACF,CAAC,CAAC,EAAE;UACzB,OAAOA,CAAC,CAACG,MAAM;QACjB;QAEA,OAAOH,CAAC;MACV,CAAC,CAAC;MAEF,OAAOF,eAAe,GAClB,MAAM7B,EAAE,CAAC0B,sBAAsB,CAACC,KAAK,EAAEE,eAA2B,CAAC,GACnE,MAAM7B,EAAE,CAAC0B,sBAAsB,CAACC,KAAK,CAAC;IAC5C,CAAC;IACDQ,WAAW,EAAEA,CAACR,KAAa,EAAEC,MAAiB,KAAkB;MAC9D,MAAMC,eAAe,GAAGD,MAAM,EAAEE,GAAG,CAAEC,CAAC,IAAK;QACzC,IAAIC,WAAW,CAACC,MAAM,CAACF,CAAC,CAAC,EAAE;UACzB,OAAOA,CAAC,CAACG,MAAM;QACjB;QAEA,OAAOH,CAAC;MACV,CAAC,CAAC;MAEF,IAAIK,kBAAkB,GAAGP,eAAe,GACpC7B,EAAE,CAACmC,WAAW,CAACR,KAAK,EAAEE,eAA2B,CAAC,GAClD7B,EAAE,CAACmC,WAAW,CAACR,KAAK,CAAC;MAEzB,IAAIU,IAA8B,GAAG,EAAE;MACvC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIF,kBAAkB,CAACG,OAAO,EAAEjC,MAAM,IAAI,CAAC,CAAC,EAAEgC,CAAC,EAAE,EAAE;QAClE,IAAIE,GAA2B,GAAG,CAAC,CAAC;QACpC,IAAIC,MAAM,GAAGL,kBAAkB,CAACG,OAAO,CAAED,CAAC,CAAE;QAC5C,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,kBAAkB,CAACO,WAAW,CAAErC,MAAM,EAAEoC,CAAC,EAAE,EAAE;UAC/D,IAAIE,UAAU,GAAGR,kBAAkB,CAACO,WAAW,CAAED,CAAC,CAAE;UACpD,IAAIG,KAAK,GAAGJ,MAAM,CAACC,CAAC,CAAE;UAEtBF,GAAG,CAACI,UAAU,CAAC,GAAGC,KAAK;QACzB;QACAR,IAAI,CAACS,IAAI,CAACN,GAAG,CAAC;MAChB;MAEA,IAAIO,GAAG,GAAG;QACR,GAAGX,kBAAkB;QACrBC;MACF,CAAC;MAED,OAAOU,GAAG,CAACR,OAAO;MAElB,OAAOQ,GAAG;IACZ,CAAC;IACDC,OAAO,EAAE,MAAAA,CACPrB,KAAa,EACbC,MAA6B,KACJ;MACzB,MAAMC,eAAe,GAAGD,MAAM,EAAEE,GAAG,CAAEC,CAAC,IAAK;QACzC,IAAIC,WAAW,CAACC,MAAM,CAACF,CAAC,CAAC,EAAE;UACzB,OAAOA,CAAC,CAACG,MAAM;QACjB;QAEA,OAAOH,CAAC;MACV,CAAC,CAAC;MAEF,IAAIK,kBAAkB,GAAG,MAAMpC,EAAE,CAACgD,OAAO,CACvCrB,KAAK,EACLE,eACF,CAAC;MAED,IAAIQ,IAA8B,GAAG,EAAE;MACvC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIF,kBAAkB,CAACG,OAAO,EAAEjC,MAAM,IAAI,CAAC,CAAC,EAAEgC,CAAC,EAAE,EAAE;QAClE,IAAIE,GAA2B,GAAG,CAAC,CAAC;QACpC,IAAIC,MAAM,GAAGL,kBAAkB,CAACG,OAAO,CAAED,CAAC,CAAE;QAC5C,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,kBAAkB,CAACO,WAAW,CAAErC,MAAM,EAAEoC,CAAC,EAAE,EAAE;UAC/D,IAAIE,UAAU,GAAGR,kBAAkB,CAACO,WAAW,CAAED,CAAC,CAAE;UACpD,IAAIG,KAAK,GAAGJ,MAAM,CAACC,CAAC,CAAE;UAEtBF,GAAG,CAACI,UAAU,CAAC,GAAGC,KAAK;QACzB;QACAR,IAAI,CAACS,IAAI,CAACN,GAAG,CAAC;MAChB;MAEA,IAAIO,GAAG,GAAG;QACR,GAAGX,kBAAkB;QACrBC;MACF,CAAC;MAED,OAAOU,GAAG,CAACR,OAAO;MAElB,OAAOQ,GAAG;IACZ,CAAC;IACDE,gBAAgB,EAAGtB,KAAa,IAAK;MACnC,MAAMuB,IAAI,GAAGlD,EAAE,CAACiD,gBAAgB,CAACtB,KAAK,CAAC;MAEvC,OAAO;QACLwB,IAAI,EAAE,MAAOvB,MAAgB,IAAK;UAChC,MAAMC,eAAe,GAAGD,MAAM,CAACE,GAAG,CAAEC,CAAC,IAAK;YACxC,IAAIC,WAAW,CAACC,MAAM,CAACF,CAAC,CAAC,EAAE;cACzB,OAAOA,CAAC,CAACG,MAAM;YACjB;YAEA,OAAOH,CAAC;UACV,CAAC,CAAC;UAEF,MAAMmB,IAAI,CAACC,IAAI,CAACtB,eAAe,CAAC;QAClC,CAAC;QACDmB,OAAO,EAAEE,IAAI,CAACF;MAChB,CAAC;IACH,CAAC;IACDI,WAAW,EAAE,MACXC,EAAsC,IACpB;MAClB,IAAIC,WAAW,GAAG,KAAK;MAEvB,MAAMN,OAAO,GAAG,MAAAA,CAAOrB,KAAa,EAAEC,MAAiB,KAAK;QAC1D,IAAI0B,WAAW,EAAE;UACf,MAAMlE,KAAK,CACT,8BACEa,OAAO,CAACsD,IAAI,IAAItD,OAAO,CAACuD,GAAG,iDAE/B,CAAC;QACH;QACA,OAAO,MAAM7C,UAAU,CAACqC,OAAO,CAACrB,KAAK,EAAEC,MAAM,CAAC;MAChD,CAAC;MAED,MAAM6B,MAAM,GAAG,MAAAA,CAAA,KAAkC;QAC/C,IAAIH,WAAW,EAAE;UACf,MAAMlE,KAAK,CACT,8BACEa,OAAO,CAACsD,IAAI,IAAItD,OAAO,CAACuD,GAAG,iDAE/B,CAAC;QACH;QACA,MAAME,MAAM,GAAG,MAAM/C,UAAU,CAACqC,OAAO,CAAC,SAAS,CAAC;QAElD,MAAMhD,EAAE,CAAC2D,2BAA2B,CAAC,CAAC;QAEtCL,WAAW,GAAG,IAAI;QAClB,OAAOI,MAAM;MACf,CAAC;MAED,MAAME,QAAQ,GAAG,MAAAA,CAAA,KAAkC;QACjD,IAAIN,WAAW,EAAE;UACf,MAAMlE,KAAK,CACT,8BACEa,OAAO,CAACsD,IAAI,IAAItD,OAAO,CAACuD,GAAG,iDAE/B,CAAC;QACH;QACA,MAAME,MAAM,GAAG,MAAM/C,UAAU,CAACqC,OAAO,CAAC,WAAW,CAAC;QACpDM,WAAW,GAAG,IAAI;QAClB,OAAOI,MAAM;MACf,CAAC;MAED,eAAeG,GAAGA,CAAA,EAAG;QACnB,IAAI;UACF,MAAMlD,UAAU,CAACqC,OAAO,CAAC,oBAAoB,CAAC;UAE9C,MAAMK,EAAE,CAAC;YACPI,MAAM;YACNT,OAAO;YACPY;UACF,CAAC,CAAC;UAEF,IAAI,CAACN,WAAW,EAAE;YAChB,MAAMG,MAAM,CAAC,CAAC;UAChB;QACF,CAAC,CAAC,OAAOK,cAAc,EAAE;UACvB,IAAI,CAACR,WAAW,EAAE;YAChB,IAAI;cACF,MAAMM,QAAQ,CAAC,CAAC;YAClB,CAAC,CAAC,OAAOG,aAAa,EAAE;cACtB,MAAMA,aAAa;YACrB;UACF;UAEA,MAAMD,cAAc;QACtB,CAAC,SAAS;UACR5D,IAAI,CAACE,UAAU,GAAG,KAAK;UACvBkD,WAAW,GAAG,KAAK;UACnBjD,oBAAoB,CAAC,CAAC;QACxB;MACF;MAEA,OAAO,MAAM,IAAI2D,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;QAC5C,MAAM3D,EAAsB,GAAG;UAC7BG,KAAK,EAAEA,CAAA,KAAM;YACXmD,GAAG,CAAC,CAAC,CAACM,IAAI,CAACF,OAAO,CAAC,CAACG,KAAK,CAACF,MAAM,CAAC;UACnC;QACF,CAAC;QAEDhE,IAAI,CAACC,KAAK,CAAC2C,IAAI,CAACvC,EAAE,CAAC;QACnBF,oBAAoB,CAAC,CAAC;MACxB,CAAC,CAAC;IACJ;EACF,CAAC;EAED,OAAOM,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACO,MAAM0D,QAAQ,GAAIzC,MAMxB,IAAS;EACR,IAAI,CAAC0C,QAAQ,CAAC,CAAC,EAAE;IACf,MAAM,IAAIlF,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEA,MAAMY,EAAE,GAAGb,QAAQ,CAACkF,QAAQ,CAACzC,MAAM,CAAC;EACpC,MAAMjB,UAAU,GAAGZ,SAAS,CAACC,EAAE,EAAE4B,MAAM,CAAC;EAExC,OAAOjB,UAAU;AACnB,CAAC;;AAED;AACA;AACA;AACA;AAHAb,OAAA,CAAAuE,QAAA,GAAAA,QAAA;AAIO,MAAME,UAAU,GAAI3C,MAA0C,IAAS;EAC5E,IAAI,CAAC0C,QAAQ,CAAC,CAAC,EAAE;IACf,MAAM,IAAIlF,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEA,MAAMY,EAAE,GAAGb,QAAQ,CAACoF,UAAU,CAAC3C,MAAM,CAAC;EACtC,MAAMjB,UAAU,GAAGZ,SAAS,CAACC,EAAE,EAAE4B,MAAM,CAAC;EAExC,OAAOjB,UAAU;AACnB,CAAC;;AAED;AACA;AACA;AACA;AAHAb,OAAA,CAAAyE,UAAA,GAAAA,UAAA;AAIO,MAAMC,IAAI,GAAI5C,MAIpB,IAAS;EACR,IAAIA,MAAM,CAAC6C,QAAQ,EAAEC,UAAU,CAAC,SAAS,CAAC,EAAE;IAC1CC,OAAO,CAACC,IAAI,CACV,sFACF,CAAC;IACDhD,MAAM,CAAC6C,QAAQ,GAAG7C,MAAM,CAAC6C,QAAQ,CAACI,SAAS,CAAC,CAAC,CAAC;EAChD;EAEA,MAAM7E,EAAE,GAAGb,QAAQ,CAACqF,IAAI,CAAC5C,MAAM,CAAC;EAChC,MAAMjB,UAAU,GAAGZ,SAAS,CAACC,EAAE,EAAE4B,MAAM,CAAC;EAExC,OAAOjB,UAAU;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAb,OAAA,CAAA0E,IAAA,GAAAA,IAAA;AAOO,MAAMM,kBAAkB,GAAG,MAAOC,IAIxC,IAAuB;EACtB,OAAO7F,0BAAa,CAACC,QAAQ,CAAC2F,kBAAkB,CAACC,IAAI,CAAC;AACxD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPAjF,OAAA,CAAAgF,kBAAA,GAAAA,kBAAA;AAQO,MAAME,YAAY,GAAGA,CAACC,MAAc,EAAE1B,IAAY,KAAa;EACpE,OAAOrE,0BAAa,CAACC,QAAQ,CAAC6F,YAAY,CAACC,MAAM,EAAE1B,IAAI,CAAC;AAC1D,CAAC;AAACzD,OAAA,CAAAkF,YAAA,GAAAA,YAAA;AAEK,MAAME,WAAW,GAAGA,CAAA,KAAe;EACxC,OAAO/F,QAAQ,CAAC+F,WAAW,CAAC,CAAC;AAC/B,CAAC;AAACpF,OAAA,CAAAoF,WAAA,GAAAA,WAAA;AAEK,MAAMZ,QAAQ,GAAGA,CAAA,KAAe;EACrC,OAAOnF,QAAQ,CAACmF,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAACxE,OAAA,CAAAwE,QAAA,GAAAA,QAAA;AAEK,MAAMa,aAAa,GAAGA,CAAA,KAAe;EAC1C,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACzB,OAAO,KAAK;EACd;EAEA,OAAOlG,QAAQ,CAACmG,aAAa,CAAC,CAAC;AACjC,CAAC;AAACxF,OAAA,CAAAqF,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","global","__OPSQLiteProxy","NativeModules","OPSQLite","Error","installed","install","proxy","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","exports","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","executeWithHostObjects","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","executeSync","intermediateResult","rows","i","rawRows","row","rawRow","j","columnNames","columnName","value","push","res","execute","prepareStatement","stmt","bind","transaction","fn","isFinalized","name","url","commit","result","flushPendingReactiveQueries","rollback","run","executionError","rollbackError","Promise","resolve","reject","then","catch","openSync","isLibsql","openRemote","open","location","startsWith","console","warn","substring","moveAssetsDatabase","args","getDylibPath","bundle","isSQLCipher","isIOSEmbeeded","Platform","OS","isIOSEmbedded"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}