react-native-nitro-sqlite 9.7.0 → 9.8.1

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.
Files changed (45) hide show
  1. package/RNNitroSQLite.podspec +44 -12
  2. package/cpp/NitroSQLiteException.hpp +5 -0
  3. package/cpp/databaseMigration.cpp +123 -0
  4. package/cpp/databaseMigration.hpp +13 -0
  5. package/cpp/hybridObjects/HybridNitroSQLite.cpp +65 -16
  6. package/cpp/hybridObjects/HybridNitroSQLite.hpp +5 -0
  7. package/cpp/importSqlFile.cpp +10 -5
  8. package/cpp/importSqlFile.hpp +5 -1
  9. package/cpp/operations.cpp +116 -35
  10. package/cpp/operations.hpp +29 -0
  11. package/cpp/sqliteExecuteBatch.cpp +9 -4
  12. package/cpp/sqliteExecuteBatch.hpp +4 -0
  13. package/ios/OnLoad.mm +26 -3
  14. package/lib/commonjs/DatabaseQueue.js +4 -17
  15. package/lib/commonjs/DatabaseQueue.js.map +1 -1
  16. package/lib/commonjs/operations/execute.js +28 -3
  17. package/lib/commonjs/operations/execute.js.map +1 -1
  18. package/lib/commonjs/operations/session.js +34 -9
  19. package/lib/commonjs/operations/session.js.map +1 -1
  20. package/lib/commonjs/operations/transaction.js +5 -5
  21. package/lib/commonjs/operations/transaction.js.map +1 -1
  22. package/lib/module/DatabaseQueue.js +4 -15
  23. package/lib/module/DatabaseQueue.js.map +1 -1
  24. package/lib/module/operations/execute.js +24 -4
  25. package/lib/module/operations/execute.js.map +1 -1
  26. package/lib/module/operations/session.js +36 -11
  27. package/lib/module/operations/session.js.map +1 -1
  28. package/lib/module/operations/transaction.js +6 -6
  29. package/lib/module/operations/transaction.js.map +1 -1
  30. package/lib/typescript/commonjs/DatabaseQueue.d.ts +1 -3
  31. package/lib/typescript/commonjs/DatabaseQueue.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/operations/execute.d.ts +6 -0
  33. package/lib/typescript/commonjs/operations/execute.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/operations/session.d.ts.map +1 -1
  35. package/lib/typescript/module/DatabaseQueue.d.ts +1 -3
  36. package/lib/typescript/module/DatabaseQueue.d.ts.map +1 -1
  37. package/lib/typescript/module/operations/execute.d.ts +6 -0
  38. package/lib/typescript/module/operations/execute.d.ts.map +1 -1
  39. package/lib/typescript/module/operations/session.d.ts.map +1 -1
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rnnitrosqlite/HybridNitroSQLiteOnLoadSpec.kt +2 -0
  41. package/package.json +25 -5
  42. package/src/DatabaseQueue.ts +9 -19
  43. package/src/operations/execute.ts +52 -4
  44. package/src/operations/session.ts +57 -11
  45. package/src/operations/transaction.ts +6 -6
@@ -2,9 +2,32 @@
2
2
 
3
3
  #include "hybridObjects/HybridNitroSQLiteQueryResult.hpp"
4
4
  #include "types.hpp"
5
+ #include <memory>
6
+ #include <mutex>
7
+ #include <sqlite3.h>
8
+ #include <string>
5
9
 
6
10
  namespace margelo::rnnitrosqlite {
7
11
 
12
+ // Calls against one connection are serialized by `mutex`. Separate connections
13
+ // intentionally remain independent, so SQLITE_THREADSAFE=0 still requires the
14
+ // caller to serialize SQLite calls globally.
15
+ struct SQLiteConnection final {
16
+ SQLiteConnection(std::string name, sqlite3* database);
17
+ ~SQLiteConnection();
18
+
19
+ SQLiteConnection(const SQLiteConnection&) = delete;
20
+ SQLiteConnection& operator=(const SQLiteConnection&) = delete;
21
+
22
+ void close() noexcept;
23
+
24
+ const std::string name;
25
+ sqlite3* database;
26
+ std::recursive_mutex mutex;
27
+ };
28
+
29
+ using SQLiteConnectionPtr = std::shared_ptr<SQLiteConnection>;
30
+
8
31
  void sqliteOpenDb(const std::string& dbName, const std::string& docPath);
9
32
 
10
33
  void sqliteCloseDb(const std::string& dbName);
@@ -16,11 +39,17 @@ void sqliteAttachDb(const std::string& mainDBName, const std::string& docPath, c
16
39
 
17
40
  void sqliteDetachDb(const std::string& mainDBName, const std::string& alias);
18
41
 
42
+ SQLiteConnectionPtr sqliteGetOpenDatabase(const std::string& dbName);
43
+
19
44
  std::shared_ptr<HybridNitroSQLiteQueryResult> sqliteExecute(const std::string& dbName, const std::string& query,
20
45
  const std::optional<SQLiteQueryParams>& params);
46
+ std::shared_ptr<HybridNitroSQLiteQueryResult> sqliteExecute(const SQLiteConnectionPtr& connection, const std::string& query,
47
+ const std::optional<SQLiteQueryParams>& params);
21
48
 
22
49
  SQLiteOperationResult sqliteExecuteCommand(const std::string& dbName, const std::string& query,
23
50
  const std::optional<SQLiteQueryParams>& params = std::nullopt);
51
+ SQLiteOperationResult sqliteExecuteCommand(const SQLiteConnectionPtr& connection, const std::string& query,
52
+ const std::optional<SQLiteQueryParams>& params = std::nullopt);
24
53
 
25
54
  void sqliteCloseAll();
26
55
 
@@ -33,6 +33,11 @@ std::vector<BatchQuery> batchParamsToCommands(const std::vector<BatchQueryComman
33
33
  }
34
34
 
35
35
  SQLiteOperationResult sqliteExecuteBatch(const std::string& dbName, const std::vector<BatchQuery>& commands) {
36
+ return sqliteExecuteBatch(sqliteGetOpenDatabase(dbName), commands);
37
+ }
38
+
39
+ SQLiteOperationResult sqliteExecuteBatch(const SQLiteConnectionPtr& connection, const std::vector<BatchQuery>& commands) {
40
+ std::lock_guard lock(connection->mutex);
36
41
  size_t commandCount = commands.size();
37
42
  if (commandCount <= 0) {
38
43
  throw NitroSQLiteException(NitroSQLiteExceptionType::NoBatchCommandsProvided, "No SQL batch commands provided");
@@ -40,13 +45,13 @@ SQLiteOperationResult sqliteExecuteBatch(const std::string& dbName, const std::v
40
45
 
41
46
  try {
42
47
  int rowsAffected = 0;
43
- sqliteExecuteCommand(dbName, "BEGIN EXCLUSIVE TRANSACTION");
48
+ sqliteExecuteCommand(connection, "BEGIN EXCLUSIVE TRANSACTION");
44
49
  for (const auto& command : commands) {
45
- auto result = sqliteExecuteCommand(dbName, command.sql, command.params);
50
+ auto result = sqliteExecuteCommand(connection, command.sql, command.params);
46
51
  rowsAffected += result.rowsAffected;
47
52
  }
48
53
 
49
- sqliteExecuteCommand(dbName, "COMMIT");
54
+ sqliteExecuteCommand(connection, "COMMIT");
50
55
  return {
51
56
  .rowsAffected = rowsAffected,
52
57
  .commands = (int)commandCount,
@@ -54,7 +59,7 @@ SQLiteOperationResult sqliteExecuteBatch(const std::string& dbName, const std::v
54
59
  } catch (NitroSQLiteException& e) {
55
60
  // Roll back exactly once; a failed ROLLBACK must not mask the original error.
56
61
  try {
57
- sqliteExecuteCommand(dbName, "ROLLBACK");
62
+ sqliteExecuteCommand(connection, "ROLLBACK");
58
63
  } catch (...) {
59
64
  // ignore — surface the original error below
60
65
  }
@@ -5,12 +5,15 @@
5
5
 
6
6
  #include "BatchQueryCommand.hpp"
7
7
  #include "types.hpp"
8
+ #include <memory>
8
9
 
9
10
  using namespace facebook;
10
11
  using namespace margelo::nitro;
11
12
 
12
13
  namespace margelo::rnnitrosqlite {
13
14
 
15
+ struct SQLiteConnection;
16
+
14
17
  struct BatchQuery {
15
18
  std::string sql;
16
19
  std::optional<SQLiteQueryParams> params;
@@ -26,5 +29,6 @@ std::vector<BatchQuery> batchParamsToCommands(const std::vector<BatchQueryComman
26
29
  * Execute a batch of commands in a exclusive transaction
27
30
  */
28
31
  SQLiteOperationResult sqliteExecuteBatch(const std::string& dbName, const std::vector<BatchQuery>& commands);
32
+ SQLiteOperationResult sqliteExecuteBatch(const std::shared_ptr<SQLiteConnection>& connection, const std::vector<BatchQuery>& commands);
29
33
 
30
34
  } // namespace margelo::rnnitrosqlite
package/ios/OnLoad.mm CHANGED
@@ -30,9 +30,32 @@ using namespace margelo::nitro::rnnitrosqlite;
30
30
 
31
31
  documentPath = [storeUrl path];
32
32
  } else {
33
- // Get iOS app's document directory (to safely store database .sqlite3 file)
34
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true);
35
- documentPath = [paths objectAtIndex:0];
33
+ NSString *databaseLocation = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"RNNitroSQLite_DatabaseLocation"];
34
+
35
+ if ([databaseLocation isEqualToString:@"ApplicationSupport"]) {
36
+ // Library/Application Support is persistent, backed up, and never exposed to the user
37
+ // via the Files app (unlike the Documents directory, which becomes user-visible when
38
+ // the app enables file sharing).
39
+ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, true);
40
+ documentPath = [paths objectAtIndex:0];
41
+
42
+ NSFileManager *fileManager = [NSFileManager defaultManager];
43
+ if (![fileManager fileExistsAtPath:documentPath]) {
44
+ [fileManager createDirectoryAtPath:documentPath withIntermediateDirectories:YES attributes:nil error:nil];
45
+ }
46
+
47
+ // Databases created before this option was enabled still live in Documents; each one is
48
+ // moved over when it is opened (see HybridNitroSQLite::open).
49
+ NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true) objectAtIndex:0];
50
+ HybridNitroSQLite::migrationDocPath = [documentsDirectory UTF8String];
51
+ } else {
52
+ if (databaseLocation != nil && ![databaseLocation isEqualToString:@"Documents"]) {
53
+ NSLog(@"Invalid RNNitroSQLite_DatabaseLocation value provided (%@). Supported values are \"Documents\" and \"ApplicationSupport\". Falling back to \"Documents\".", databaseLocation);
54
+ }
55
+ // Get iOS app's document directory (to safely store database .sqlite3 file)
56
+ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true);
57
+ documentPath = [paths objectAtIndex:0];
58
+ }
36
59
  }
37
60
 
38
61
  HybridNitroSQLite::docPath = [documentPath UTF8String];
@@ -3,11 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.closeDatabase = closeDatabase;
7
6
  exports.closeDatabaseQueue = closeDatabaseQueue;
8
7
  exports.getDatabaseQueue = getDatabaseQueue;
9
8
  exports.isDatabaseOpen = isDatabaseOpen;
10
- exports.openDatabase = openDatabase;
11
9
  exports.openDatabaseQueue = openDatabaseQueue;
12
10
  exports.queueOperationAsync = queueOperationAsync;
13
11
  exports.startOperationSync = startOperationSync;
@@ -27,7 +25,7 @@ function openDatabaseQueue(dbName) {
27
25
  function closeDatabaseQueue(dbName) {
28
26
  const databaseQueue = getDatabaseQueue(dbName);
29
27
  if (databaseQueue.inProgress || databaseQueue.queue.length > 0) {
30
- console.warn(`Database queue for ${dbName} has operations in the queue. Closing anyway.`);
28
+ throw new _NitroSQLiteError.default(`Cannot close database ${dbName}. The database is busy with another operation.`);
31
29
  }
32
30
  databaseQueues.delete(dbName);
33
31
  }
@@ -42,15 +40,6 @@ function getDatabaseQueue(dbName) {
42
40
  const queue = databaseQueues.get(dbName);
43
41
  return queue;
44
42
  }
45
- function openDatabase(dbName) {
46
- databaseQueues.set(dbName, {
47
- queue: [],
48
- inProgress: false
49
- });
50
- }
51
- function closeDatabase(dbName) {
52
- databaseQueues.delete(dbName);
53
- }
54
43
  function queueOperationAsync(dbName, callback) {
55
44
  const databaseQueue = getDatabaseQueue(dbName);
56
45
  return new Promise((resolve, reject) => {
@@ -62,19 +51,17 @@ function queueOperationAsync(dbName, callback) {
62
51
  reject(error);
63
52
  } finally {
64
53
  databaseQueue.inProgress = false;
65
- startOperationAsync(dbName);
54
+ startOperationAsync(databaseQueue);
66
55
  }
67
56
  }
68
57
  const operation = {
69
58
  start
70
59
  };
71
60
  databaseQueue.queue.push(operation);
72
- startOperationAsync(dbName);
61
+ startOperationAsync(databaseQueue);
73
62
  });
74
63
  }
75
- function startOperationAsync(dbName) {
76
- const queue = getDatabaseQueue(dbName);
77
-
64
+ function startOperationAsync(queue) {
78
65
  // Queue is empty or in progress. Bail out.
79
66
  if (queue.inProgress || queue.queue.length === 0) {
80
67
  return;
@@ -1 +1 @@
1
- {"version":3,"names":["_NitroSQLiteError","_interopRequireDefault","require","e","__esModule","default","databaseQueues","Map","openDatabaseQueue","dbName","isDatabaseOpen","NitroSQLiteError","set","queue","inProgress","closeDatabaseQueue","databaseQueue","getDatabaseQueue","length","console","warn","delete","has","throwIfDatabaseIsNotOpen","get","openDatabase","closeDatabase","queueOperationAsync","callback","Promise","resolve","reject","start","result","error","startOperationAsync","operation","push","shift","setImmediate","startOperationSync"],"sourceRoot":"../../src","sources":["DatabaseQueue.ts"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAiD,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAcjD,MAAMG,cAAc,GAAG,IAAIC,GAAG,CAAwB,CAAC;AAEhD,SAASC,iBAAiBA,CAACC,MAAc,EAAE;EAChD,IAAIC,cAAc,CAACD,MAAM,CAAC,EAAE;IAC1B,MAAM,IAAIE,yBAAgB,CACxB,YAAYF,MAAM,kEACpB,CAAC;EACH;EAEAH,cAAc,CAACM,GAAG,CAACH,MAAM,EAAE;IAAEI,KAAK,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAM,CAAC,CAAC;AAC9D;AAEO,SAASC,kBAAkBA,CAACN,MAAc,EAAE;EACjD,MAAMO,aAAa,GAAGC,gBAAgB,CAACR,MAAM,CAAC;EAE9C,IAAIO,aAAa,CAACF,UAAU,IAAIE,aAAa,CAACH,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;IAC9DC,OAAO,CAACC,IAAI,CACV,sBAAsBX,MAAM,+CAC9B,CAAC;EACH;EAEAH,cAAc,CAACe,MAAM,CAACZ,MAAM,CAAC;AAC/B;AAEO,SAASC,cAAcA,CAACD,MAAc,EAAE;EAC7C,OAAOH,cAAc,CAACgB,GAAG,CAACb,MAAM,CAAC;AACnC;AAEO,SAASc,wBAAwBA,CAACd,MAAc,EAAE;EACvD,IAAI,CAACC,cAAc,CAACD,MAAM,CAAC,EACzB,MAAM,IAAIE,yBAAgB,CACxB,YAAYF,MAAM,uDACpB,CAAC;AACL;AAEO,SAASQ,gBAAgBA,CAACR,MAAc,EAAE;EAC/Cc,wBAAwB,CAACd,MAAM,CAAC;EAEhC,MAAMI,KAAK,GAAGP,cAAc,CAACkB,GAAG,CAACf,MAAM,CAAE;EACzC,OAAOI,KAAK;AACd;AAEO,SAASY,YAAYA,CAAChB,MAAc,EAAE;EAC3CH,cAAc,CAACM,GAAG,CAACH,MAAM,EAAE;IAAEI,KAAK,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAM,CAAC,CAAC;AAC9D;AAEO,SAASY,aAAaA,CAACjB,MAAc,EAAE;EAC5CH,cAAc,CAACe,MAAM,CAACZ,MAAM,CAAC;AAC/B;AAEO,SAASkB,mBAAmBA,CACjClB,MAAc,EACdmB,QAA+B,EAC/B;EACA,MAAMZ,aAAa,GAAGC,gBAAgB,CAACR,MAAM,CAAC;EAE9C,OAAO,IAAIoB,OAAO,CAAS,CAACC,OAAO,EAAEC,MAAM,KAAK;IAC9C,eAAeC,KAAKA,CAAA,EAAG;MACrB,IAAI;QACF,MAAMC,MAAM,GAAG,MAAML,QAAQ,CAAC,CAAC;QAC/BE,OAAO,CAACG,MAAM,CAAC;MACjB,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdH,MAAM,CAACG,KAAK,CAAC;MACf,CAAC,SAAS;QACRlB,aAAa,CAACF,UAAU,GAAG,KAAK;QAChCqB,mBAAmB,CAAC1B,MAAM,CAAC;MAC7B;IACF;IAEA,MAAM2B,SAA0B,GAAG;MACjCJ;IACF,CAAC;IAEDhB,aAAa,CAACH,KAAK,CAACwB,IAAI,CAACD,SAAS,CAAC;IACnCD,mBAAmB,CAAC1B,MAAM,CAAC;EAC7B,CAAC,CAAC;AACJ;AAEA,SAAS0B,mBAAmBA,CAAC1B,MAAc,EAAE;EAC3C,MAAMI,KAAK,GAAGI,gBAAgB,CAACR,MAAM,CAAC;;EAEtC;EACA,IAAII,KAAK,CAACC,UAAU,IAAID,KAAK,CAACA,KAAK,CAACK,MAAM,KAAK,CAAC,EAAE;IAChD;EACF;EAEAL,KAAK,CAACC,UAAU,GAAG,IAAI;EAEvB,MAAMsB,SAAS,GAAGvB,KAAK,CAACA,KAAK,CAACyB,KAAK,CAAC,CAAE;EACtCC,YAAY,CAAC,MAAM;IACjBH,SAAS,CAACJ,KAAK,CAAC,CAAC;EACnB,CAAC,CAAC;AACJ;AAEO,SAASQ,kBAAkBA,CAGhC/B,MAAc,EAAEmB,QAA2B,EAAE;EAC7C,MAAMZ,aAAa,GAAGC,gBAAgB,CAACR,MAAM,CAAC;;EAE9C;EACA,IAAIO,aAAa,CAACF,UAAU,IAAIE,aAAa,CAACH,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;IAC9D,MAAM,IAAIP,yBAAgB,CACxB,0DAA0DF,MAAM,kCAClE,CAAC;EACH;;EAEA;EACAO,aAAa,CAACF,UAAU,GAAG,IAAI;EAC/B,IAAI;IACF,OAAOc,QAAQ,CAAC,CAAC;EACnB,CAAC,SAAS;IACRZ,aAAa,CAACF,UAAU,GAAG,KAAK;EAClC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["_NitroSQLiteError","_interopRequireDefault","require","e","__esModule","default","databaseQueues","Map","openDatabaseQueue","dbName","isDatabaseOpen","NitroSQLiteError","set","queue","inProgress","closeDatabaseQueue","databaseQueue","getDatabaseQueue","length","delete","has","throwIfDatabaseIsNotOpen","get","queueOperationAsync","callback","Promise","resolve","reject","start","result","error","startOperationAsync","operation","push","shift","setImmediate","startOperationSync"],"sourceRoot":"../../src","sources":["DatabaseQueue.ts"],"mappings":"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","ignoreList":[]}
@@ -3,12 +3,27 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.buildJSQueryResult = buildJSQueryResult;
6
7
  exports.execute = execute;
7
8
  exports.executeAsync = executeAsync;
9
+ exports.executeAsyncManaged = executeAsyncManaged;
10
+ exports.executeAsyncNative = executeAsyncNative;
11
+ exports.executeManaged = executeManaged;
12
+ exports.executeNative = executeNative;
8
13
  var _nitro = require("../nitro.js");
9
14
  var _NitroSQLiteError = _interopRequireDefault(require("../NitroSQLiteError.js"));
15
+ var _DatabaseQueue = require("../DatabaseQueue.js");
10
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
17
  function execute(dbName, query, params) {
18
+ if (!(0, _DatabaseQueue.isDatabaseOpen)(dbName)) {
19
+ return executeNative(dbName, query, params);
20
+ }
21
+ return executeManaged(dbName, query, params);
22
+ }
23
+ function executeManaged(dbName, query, params) {
24
+ return (0, _DatabaseQueue.startOperationSync)(dbName, () => executeNative(dbName, query, params));
25
+ }
26
+ function executeNative(dbName, query, params) {
12
27
  try {
13
28
  const nativeResult = _nitro.HybridNitroSQLite.execute(dbName, query, params);
14
29
  return buildJSQueryResult(nativeResult);
@@ -17,6 +32,15 @@ function execute(dbName, query, params) {
17
32
  }
18
33
  }
19
34
  async function executeAsync(dbName, query, params) {
35
+ if (!(0, _DatabaseQueue.isDatabaseOpen)(dbName)) {
36
+ return executeAsyncNative(dbName, query, params);
37
+ }
38
+ return executeAsyncManaged(dbName, query, params);
39
+ }
40
+ async function executeAsyncManaged(dbName, query, params) {
41
+ return (0, _DatabaseQueue.queueOperationAsync)(dbName, () => executeAsyncNative(dbName, query, params));
42
+ }
43
+ async function executeAsyncNative(dbName, query, params) {
20
44
  try {
21
45
  const nativeResult = await _nitro.HybridNitroSQLite.executeAsync(dbName, query, params);
22
46
  return buildJSQueryResult(nativeResult);
@@ -26,10 +50,11 @@ async function executeAsync(dbName, query, params) {
26
50
  }
27
51
  function buildJSQueryResult(result) {
28
52
  const resultWithRows = result;
53
+ const results = result.results;
29
54
  resultWithRows.rows = {
30
- _array: result.results,
31
- length: result.results.length,
32
- item: idx => result.results[idx]
55
+ _array: results,
56
+ length: results.length,
57
+ item: idx => results[idx]
33
58
  };
34
59
  return resultWithRows;
35
60
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_nitro","require","_NitroSQLiteError","_interopRequireDefault","e","__esModule","default","execute","dbName","query","params","nativeResult","HybridNitroSQLite","buildJSQueryResult","error","NitroSQLiteError","fromError","executeAsync","result","resultWithRows","rows","_array","results","length","item","idx"],"sourceRoot":"../../../src","sources":["operations/execute.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAkD,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG3C,SAASG,OAAOA,CACrBC,MAAc,EACdC,KAAa,EACbC,MAA0B,EACR;EAClB,IAAI;IACF,MAAMC,YAAY,GAAGC,wBAAiB,CAACL,OAAO,CAACC,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;IACrE,OAAOG,kBAAkB,CAAMF,YAAY,CAAC;EAC9C,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,MAAMC,yBAAgB,CAACC,SAAS,CAACF,KAAK,CAAC;EACzC;AACF;AAEO,eAAeG,YAAYA,CAChCT,MAAc,EACdC,KAAa,EACbC,MAA0B,EACC;EAC3B,IAAI;IACF,MAAMC,YAAY,GAAG,MAAMC,wBAAiB,CAACK,YAAY,CACvDT,MAAM,EACNC,KAAK,EACLC,MACF,CAAC;IACD,OAAOG,kBAAkB,CAAMF,YAAY,CAAC;EAC9C,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,MAAMC,yBAAgB,CAACC,SAAS,CAACF,KAAK,CAAC;EACzC;AACF;AAEA,SAASD,kBAAkBA,CACzBK,MAA8B,EACZ;EAClB,MAAMC,cAAc,GAAGD,MAA0B;EAEjDC,cAAc,CAACC,IAAI,GAAG;IACpBC,MAAM,EAAEH,MAAM,CAACI,OAAgB;IAC/BC,MAAM,EAAEL,MAAM,CAACI,OAAO,CAACC,MAAM;IAC7BC,IAAI,EAAGC,GAAW,IAAKP,MAAM,CAACI,OAAO,CAACG,GAAG;EAC3C,CAAC;EAED,OAAON,cAAc;AACvB","ignoreList":[]}
1
+ {"version":3,"names":["_nitro","require","_NitroSQLiteError","_interopRequireDefault","_DatabaseQueue","e","__esModule","default","execute","dbName","query","params","isDatabaseOpen","executeNative","executeManaged","startOperationSync","nativeResult","HybridNitroSQLite","buildJSQueryResult","error","NitroSQLiteError","fromError","executeAsync","executeAsyncNative","executeAsyncManaged","queueOperationAsync","result","resultWithRows","results","rows","_array","length","item","idx"],"sourceRoot":"../../../src","sources":["operations/execute.ts"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,cAAA,GAAAH,OAAA;AAIyB,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAElB,SAASG,OAAOA,CACrBC,MAAc,EACdC,KAAa,EACbC,MAA0B,EACR;EAClB,IAAI,CAAC,IAAAC,6BAAc,EAACH,MAAM,CAAC,EAAE;IAC3B,OAAOI,aAAa,CAACJ,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;EAC7C;EAEA,OAAOG,cAAc,CAACL,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;AAC9C;AAEO,SAASG,cAAcA,CAC5BL,MAAc,EACdC,KAAa,EACbC,MAA0B,EACR;EAClB,OAAO,IAAAI,iCAAkB,EAACN,MAAM,EAAE,MAAMI,aAAa,CAACJ,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC,CAAC;AAC/E;AAEO,SAASE,aAAaA,CAC3BJ,MAAc,EACdC,KAAa,EACbC,MAA0B,EACR;EAClB,IAAI;IACF,MAAMK,YAAY,GAAGC,wBAAiB,CAACT,OAAO,CAACC,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;IACrE,OAAOO,kBAAkB,CAAMF,YAAY,CAAC;EAC9C,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,MAAMC,yBAAgB,CAACC,SAAS,CAACF,KAAK,CAAC;EACzC;AACF;AAEO,eAAeG,YAAYA,CAChCb,MAAc,EACdC,KAAa,EACbC,MAA0B,EACC;EAC3B,IAAI,CAAC,IAAAC,6BAAc,EAACH,MAAM,CAAC,EAAE;IAC3B,OAAOc,kBAAkB,CAACd,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;EAClD;EAEA,OAAOa,mBAAmB,CAACf,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;AACnD;AAEO,eAAea,mBAAmBA,CACvCf,MAAc,EACdC,KAAa,EACbC,MAA0B,EACC;EAC3B,OAAO,IAAAc,kCAAmB,EAAChB,MAAM,EAAE,MACjCc,kBAAkB,CAACd,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAC1C,CAAC;AACH;AAEO,eAAeY,kBAAkBA,CACtCd,MAAc,EACdC,KAAa,EACbC,MAA0B,EACC;EAC3B,IAAI;IACF,MAAMK,YAAY,GAAG,MAAMC,wBAAiB,CAACK,YAAY,CACvDb,MAAM,EACNC,KAAK,EACLC,MACF,CAAC;IACD,OAAOO,kBAAkB,CAAMF,YAAY,CAAC;EAC9C,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,MAAMC,yBAAgB,CAACC,SAAS,CAACF,KAAK,CAAC;EACzC;AACF;AAEO,SAASD,kBAAkBA,CAChCQ,MAA8B,EACZ;EAClB,MAAMC,cAAc,GAAGD,MAA0B;EACjD,MAAME,OAAO,GAAGF,MAAM,CAACE,OAAgB;EAEvCD,cAAc,CAACE,IAAI,GAAG;IACpBC,MAAM,EAAEF,OAAO;IACfG,MAAM,EAAEH,OAAO,CAACG,MAAM;IACtBC,IAAI,EAAGC,GAAW,IAAKL,OAAO,CAACK,GAAG;EACpC,CAAC;EAED,OAAON,cAAc;AACvB","ignoreList":[]}
@@ -12,31 +12,56 @@ var _NitroSQLiteError = _interopRequireDefault(require("../NitroSQLiteError.js")
12
12
  var _DatabaseQueue = require("../DatabaseQueue.js");
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
14
  function open(options) {
15
+ (0, _DatabaseQueue.openDatabaseQueue)(options.name);
15
16
  try {
16
17
  _nitro.HybridNitroSQLite.open(options.name, options.location);
17
- (0, _DatabaseQueue.openDatabaseQueue)(options.name);
18
18
  } catch (error) {
19
+ (0, _DatabaseQueue.closeDatabaseQueue)(options.name);
19
20
  throw _NitroSQLiteError.default.fromError(error);
20
21
  }
21
22
  return {
22
23
  close: () => {
23
24
  try {
24
- _nitro.HybridNitroSQLite.close(options.name);
25
+ (0, _DatabaseQueue.startOperationSync)(options.name, () => _nitro.HybridNitroSQLite.close(options.name));
25
26
  (0, _DatabaseQueue.closeDatabaseQueue)(options.name);
26
27
  } catch (error) {
27
28
  throw _NitroSQLiteError.default.fromError(error);
28
29
  }
29
30
  },
30
- delete: () => _nitro.HybridNitroSQLite.drop(options.name, options.location),
31
- attach: (dbNameToAttach, alias, location) => _nitro.HybridNitroSQLite.attach(options.name, dbNameToAttach, alias, location),
32
- detach: alias => _nitro.HybridNitroSQLite.detach(options.name, alias),
31
+ delete: () => {
32
+ try {
33
+ if (!(0, _DatabaseQueue.isDatabaseOpen)(options.name)) {
34
+ _nitro.HybridNitroSQLite.drop(options.name, options.location);
35
+ return;
36
+ }
37
+ (0, _DatabaseQueue.startOperationSync)(options.name, () => _nitro.HybridNitroSQLite.drop(options.name, options.location));
38
+ (0, _DatabaseQueue.closeDatabaseQueue)(options.name);
39
+ } catch (error) {
40
+ throw _NitroSQLiteError.default.fromError(error);
41
+ }
42
+ },
43
+ attach: (dbNameToAttach, alias, location) => runSyncOperation(options.name, () => _nitro.HybridNitroSQLite.attach(options.name, dbNameToAttach, alias, location)),
44
+ detach: alias => runSyncOperation(options.name, () => _nitro.HybridNitroSQLite.detach(options.name, alias)),
33
45
  transaction: fn => (0, _transaction.transaction)(options.name, fn),
34
- execute: (query, params) => (0, _execute.execute)(options.name, query, params),
35
- executeAsync: (query, params) => (0, _execute.executeAsync)(options.name, query, params),
46
+ execute: (query, params) => (0, _execute.executeManaged)(options.name, query, params),
47
+ executeAsync: (query, params) => (0, _execute.executeAsyncManaged)(options.name, query, params),
36
48
  executeBatch: commands => (0, _executeBatch.executeBatch)(options.name, commands),
37
49
  executeBatchAsync: commands => (0, _executeBatch.executeBatchAsync)(options.name, commands),
38
- loadFile: location => _nitro.HybridNitroSQLite.loadFile(options.name, location),
39
- loadFileAsync: location => _nitro.HybridNitroSQLite.loadFileAsync(options.name, location)
50
+ loadFile: location => runSyncOperation(options.name, () => _nitro.HybridNitroSQLite.loadFile(options.name, location)),
51
+ loadFileAsync: location => (0, _DatabaseQueue.queueOperationAsync)(options.name, async () => {
52
+ try {
53
+ return await _nitro.HybridNitroSQLite.loadFileAsync(options.name, location);
54
+ } catch (error) {
55
+ throw _NitroSQLiteError.default.fromError(error);
56
+ }
57
+ })
40
58
  };
41
59
  }
60
+ function runSyncOperation(dbName, callback) {
61
+ try {
62
+ return (0, _DatabaseQueue.startOperationSync)(dbName, callback);
63
+ } catch (error) {
64
+ throw _NitroSQLiteError.default.fromError(error);
65
+ }
66
+ }
42
67
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_nitro","require","_transaction","_execute","_executeBatch","_NitroSQLiteError","_interopRequireDefault","_DatabaseQueue","e","__esModule","default","open","options","HybridNitroSQLite","name","location","openDatabaseQueue","error","NitroSQLiteError","fromError","close","closeDatabaseQueue","delete","drop","attach","dbNameToAttach","alias","detach","transaction","fn","execute","query","params","executeAsync","executeBatch","commands","executeBatchAsync","loadFile","loadFileAsync"],"sourceRoot":"../../../src","sources":["operations/session.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAUA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AAAwE,SAAAK,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEjE,SAASG,IAAIA,CAClBC,OAAqC,EACd;EACvB,IAAI;IACFC,wBAAiB,CAACF,IAAI,CAACC,OAAO,CAACE,IAAI,EAAEF,OAAO,CAACG,QAAQ,CAAC;IACtD,IAAAC,gCAAiB,EAACJ,OAAO,CAACE,IAAI,CAAC;EACjC,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,MAAMC,yBAAgB,CAACC,SAAS,CAACF,KAAK,CAAC;EACzC;EAEA,OAAO;IACLG,KAAK,EAAEA,CAAA,KAAM;MACX,IAAI;QACFP,wBAAiB,CAACO,KAAK,CAACR,OAAO,CAACE,IAAI,CAAC;QACrC,IAAAO,iCAAkB,EAACT,OAAO,CAACE,IAAI,CAAC;MAClC,CAAC,CAAC,OAAOG,KAAK,EAAE;QACd,MAAMC,yBAAgB,CAACC,SAAS,CAACF,KAAK,CAAC;MACzC;IACF,CAAC;IACDK,MAAM,EAAEA,CAAA,KAAMT,wBAAiB,CAACU,IAAI,CAACX,OAAO,CAACE,IAAI,EAAEF,OAAO,CAACG,QAAQ,CAAC;IACpES,MAAM,EAAEA,CAACC,cAAsB,EAAEC,KAAa,EAAEX,QAAiB,KAC/DF,wBAAiB,CAACW,MAAM,CAACZ,OAAO,CAACE,IAAI,EAAEW,cAAc,EAAEC,KAAK,EAAEX,QAAQ,CAAC;IACzEY,MAAM,EAAGD,KAAa,IAAKb,wBAAiB,CAACc,MAAM,CAACf,OAAO,CAACE,IAAI,EAAEY,KAAK,CAAC;IACxEE,WAAW,EAAkBC,EAAwC,IACnE,IAAAD,wBAAW,EAAChB,OAAO,CAACE,IAAI,EAAEe,EAAE,CAAC;IAC/BC,OAAO,EAAEA,CACPC,KAAa,EACbC,MAA0B,KACL,IAAAF,gBAAO,EAAClB,OAAO,CAACE,IAAI,EAAEiB,KAAK,EAAEC,MAAM,CAAC;IAC3DC,YAAY,EAAEA,CACZF,KAAa,EACbC,MAA0B,KACI,IAAAC,qBAAY,EAACrB,OAAO,CAACE,IAAI,EAAEiB,KAAK,EAAEC,MAAM,CAAC;IACzEE,YAAY,EAAGC,QAA6B,IAC1C,IAAAD,0BAAY,EAACtB,OAAO,CAACE,IAAI,EAAEqB,QAAQ,CAAC;IACtCC,iBAAiB,EAAGD,QAA6B,IAC/C,IAAAC,+BAAiB,EAACxB,OAAO,CAACE,IAAI,EAAEqB,QAAQ,CAAC;IAC3CE,QAAQ,EAAGtB,QAAgB,IACzBF,wBAAiB,CAACwB,QAAQ,CAACzB,OAAO,CAACE,IAAI,EAAEC,QAAQ,CAAC;IACpDuB,aAAa,EAAGvB,QAAgB,IAC9BF,wBAAiB,CAACyB,aAAa,CAAC1B,OAAO,CAACE,IAAI,EAAEC,QAAQ;EAC1D,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_nitro","require","_transaction","_execute","_executeBatch","_NitroSQLiteError","_interopRequireDefault","_DatabaseQueue","e","__esModule","default","open","options","openDatabaseQueue","name","HybridNitroSQLite","location","error","closeDatabaseQueue","NitroSQLiteError","fromError","close","startOperationSync","delete","isDatabaseOpen","drop","attach","dbNameToAttach","alias","runSyncOperation","detach","transaction","fn","execute","query","params","executeManaged","executeAsync","executeAsyncManaged","executeBatch","commands","executeBatchAsync","loadFile","loadFileAsync","queueOperationAsync","dbName","callback"],"sourceRoot":"../../../src","sources":["operations/session.ts"],"mappings":"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","ignoreList":[]}
@@ -15,31 +15,31 @@ const transaction = async (dbName, transactionCallback, isExclusive = false) =>
15
15
  if (isFinished) {
16
16
  throw new _NitroSQLiteError.default(`Cannot execute query on finalized transaction: ${dbName}`);
17
17
  }
18
- return (0, _execute.execute)(dbName, query, params);
18
+ return (0, _execute.executeNative)(dbName, query, params);
19
19
  };
20
20
  const executeAsyncOnTransaction = (query, params) => {
21
21
  if (isFinished) {
22
22
  throw new _NitroSQLiteError.default(`Cannot execute query on finalized transaction: ${dbName}`);
23
23
  }
24
- return (0, _execute.executeAsync)(dbName, query, params);
24
+ return (0, _execute.executeAsyncNative)(dbName, query, params);
25
25
  };
26
26
  const commit = () => {
27
27
  if (isFinished) {
28
28
  throw new _NitroSQLiteError.default(`Cannot execute commit on finalized transaction: ${dbName}`);
29
29
  }
30
30
  isFinished = true;
31
- return (0, _execute.execute)(dbName, 'COMMIT');
31
+ return (0, _execute.executeNative)(dbName, 'COMMIT');
32
32
  };
33
33
  const rollback = () => {
34
34
  if (isFinished) {
35
35
  throw new _NitroSQLiteError.default(`Cannot execute rollback on finalized transaction: ${dbName}`);
36
36
  }
37
37
  isFinished = true;
38
- return (0, _execute.execute)(dbName, 'ROLLBACK');
38
+ return (0, _execute.executeNative)(dbName, 'ROLLBACK');
39
39
  };
40
40
  return await (0, _DatabaseQueue.queueOperationAsync)(dbName, async () => {
41
41
  try {
42
- await (0, _execute.executeAsync)(dbName, isExclusive ? 'BEGIN EXCLUSIVE TRANSACTION' : 'BEGIN TRANSACTION');
42
+ await (0, _execute.executeAsyncNative)(dbName, isExclusive ? 'BEGIN EXCLUSIVE TRANSACTION' : 'BEGIN TRANSACTION');
43
43
  const result = await transactionCallback({
44
44
  commit,
45
45
  execute: executeOnTransaction,
@@ -1 +1 @@
1
- {"version":3,"names":["_DatabaseQueue","require","_execute","_NitroSQLiteError","_interopRequireDefault","e","__esModule","default","transaction","dbName","transactionCallback","isExclusive","throwIfDatabaseIsNotOpen","isFinished","executeOnTransaction","query","params","NitroSQLiteError","execute","executeAsyncOnTransaction","executeAsync","commit","rollback","queueOperationAsync","result","executionError","rollbackError","fromError","exports"],"sourceRoot":"../../../src","sources":["operations/transaction.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAOA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAkD,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE3C,MAAMG,WAAW,GAAG,MAAAA,CACzBC,MAAc,EACdC,mBAAyD,EACzDC,WAAW,GAAG,KAAK,KAChB;EACH,IAAAC,uCAAwB,EAACH,MAAM,CAAC;EAEhC,IAAII,UAAU,GAAG,KAAK;EAEtB,MAAMC,oBAAoB,GAAGA,CAC3BC,KAAa,EACbC,MAA0B,KACL;IACrB,IAAIH,UAAU,EAAE;MACd,MAAM,IAAII,yBAAgB,CACxB,kDAAkDR,MAAM,EAC1D,CAAC;IACH;IACA,OAAO,IAAAS,gBAAO,EAACT,MAAM,EAAEM,KAAK,EAAEC,MAAM,CAAC;EACvC,CAAC;EAED,MAAMG,yBAAyB,GAAGA,CAChCJ,KAAa,EACbC,MAA0B,KACI;IAC9B,IAAIH,UAAU,EAAE;MACd,MAAM,IAAII,yBAAgB,CACxB,kDAAkDR,MAAM,EAC1D,CAAC;IACH;IACA,OAAO,IAAAW,qBAAY,EAACX,MAAM,EAAEM,KAAK,EAAEC,MAAM,CAAC;EAC5C,CAAC;EAED,MAAMK,MAAM,GAAGA,CAAA,KAAM;IACnB,IAAIR,UAAU,EAAE;MACd,MAAM,IAAII,yBAAgB,CACxB,mDAAmDR,MAAM,EAC3D,CAAC;IACH;IACAI,UAAU,GAAG,IAAI;IACjB,OAAO,IAAAK,gBAAO,EAACT,MAAM,EAAE,QAAQ,CAAC;EAClC,CAAC;EAED,MAAMa,QAAQ,GAAGA,CAAA,KAAM;IACrB,IAAIT,UAAU,EAAE;MACd,MAAM,IAAII,yBAAgB,CACxB,qDAAqDR,MAAM,EAC7D,CAAC;IACH;IACAI,UAAU,GAAG,IAAI;IACjB,OAAO,IAAAK,gBAAO,EAACT,MAAM,EAAE,UAAU,CAAC;EACpC,CAAC;EAED,OAAO,MAAM,IAAAc,kCAAmB,EAACd,MAAM,EAAE,YAAY;IACnD,IAAI;MACF,MAAM,IAAAW,qBAAY,EAChBX,MAAM,EACNE,WAAW,GAAG,6BAA6B,GAAG,mBAChD,CAAC;MAED,MAAMa,MAAM,GAAG,MAAMd,mBAAmB,CAAC;QACvCW,MAAM;QACNH,OAAO,EAAEJ,oBAAoB;QAC7BM,YAAY,EAAED,yBAAyB;QACvCG;MACF,CAAC,CAAC;MAEF,IAAI,CAACT,UAAU,EAAEQ,MAAM,CAAC,CAAC;MAEzB,OAAOG,MAAM;IACf,CAAC,CAAC,OAAOC,cAAc,EAAE;MACvB,IAAI,CAACZ,UAAU,EAAE;QACf,IAAI;UACFS,QAAQ,CAAC,CAAC;QACZ,CAAC,CAAC,OAAOI,aAAa,EAAE;UACtB,MAAMT,yBAAgB,CAACU,SAAS,CAACD,aAAa,CAAC;QACjD;MACF;MAEA,MAAMT,yBAAgB,CAACU,SAAS,CAACF,cAAc,CAAC;IAClD;EACF,CAAC,CAAC;AACJ,CAAC;AAAAG,OAAA,CAAApB,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_DatabaseQueue","require","_execute","_NitroSQLiteError","_interopRequireDefault","e","__esModule","default","transaction","dbName","transactionCallback","isExclusive","throwIfDatabaseIsNotOpen","isFinished","executeOnTransaction","query","params","NitroSQLiteError","executeNative","executeAsyncOnTransaction","executeAsyncNative","commit","rollback","queueOperationAsync","result","execute","executeAsync","executionError","rollbackError","fromError","exports"],"sourceRoot":"../../../src","sources":["operations/transaction.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAOA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAkD,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE3C,MAAMG,WAAW,GAAG,MAAAA,CACzBC,MAAc,EACdC,mBAAyD,EACzDC,WAAW,GAAG,KAAK,KAChB;EACH,IAAAC,uCAAwB,EAACH,MAAM,CAAC;EAEhC,IAAII,UAAU,GAAG,KAAK;EAEtB,MAAMC,oBAAoB,GAAGA,CAC3BC,KAAa,EACbC,MAA0B,KACL;IACrB,IAAIH,UAAU,EAAE;MACd,MAAM,IAAII,yBAAgB,CACxB,kDAAkDR,MAAM,EAC1D,CAAC;IACH;IACA,OAAO,IAAAS,sBAAa,EAACT,MAAM,EAAEM,KAAK,EAAEC,MAAM,CAAC;EAC7C,CAAC;EAED,MAAMG,yBAAyB,GAAGA,CAChCJ,KAAa,EACbC,MAA0B,KACI;IAC9B,IAAIH,UAAU,EAAE;MACd,MAAM,IAAII,yBAAgB,CACxB,kDAAkDR,MAAM,EAC1D,CAAC;IACH;IACA,OAAO,IAAAW,2BAAkB,EAACX,MAAM,EAAEM,KAAK,EAAEC,MAAM,CAAC;EAClD,CAAC;EAED,MAAMK,MAAM,GAAGA,CAAA,KAAM;IACnB,IAAIR,UAAU,EAAE;MACd,MAAM,IAAII,yBAAgB,CACxB,mDAAmDR,MAAM,EAC3D,CAAC;IACH;IACAI,UAAU,GAAG,IAAI;IACjB,OAAO,IAAAK,sBAAa,EAACT,MAAM,EAAE,QAAQ,CAAC;EACxC,CAAC;EAED,MAAMa,QAAQ,GAAGA,CAAA,KAAM;IACrB,IAAIT,UAAU,EAAE;MACd,MAAM,IAAII,yBAAgB,CACxB,qDAAqDR,MAAM,EAC7D,CAAC;IACH;IACAI,UAAU,GAAG,IAAI;IACjB,OAAO,IAAAK,sBAAa,EAACT,MAAM,EAAE,UAAU,CAAC;EAC1C,CAAC;EAED,OAAO,MAAM,IAAAc,kCAAmB,EAACd,MAAM,EAAE,YAAY;IACnD,IAAI;MACF,MAAM,IAAAW,2BAAkB,EACtBX,MAAM,EACNE,WAAW,GAAG,6BAA6B,GAAG,mBAChD,CAAC;MAED,MAAMa,MAAM,GAAG,MAAMd,mBAAmB,CAAC;QACvCW,MAAM;QACNI,OAAO,EAAEX,oBAAoB;QAC7BY,YAAY,EAAEP,yBAAyB;QACvCG;MACF,CAAC,CAAC;MAEF,IAAI,CAACT,UAAU,EAAEQ,MAAM,CAAC,CAAC;MAEzB,OAAOG,MAAM;IACf,CAAC,CAAC,OAAOG,cAAc,EAAE;MACvB,IAAI,CAACd,UAAU,EAAE;QACf,IAAI;UACFS,QAAQ,CAAC,CAAC;QACZ,CAAC,CAAC,OAAOM,aAAa,EAAE;UACtB,MAAMX,yBAAgB,CAACY,SAAS,CAACD,aAAa,CAAC;QACjD;MACF;MAEA,MAAMX,yBAAgB,CAACY,SAAS,CAACF,cAAc,CAAC;IAClD;EACF,CAAC,CAAC;AACJ,CAAC;AAAAG,OAAA,CAAAtB,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -14,7 +14,7 @@ export function openDatabaseQueue(dbName) {
14
14
  export function closeDatabaseQueue(dbName) {
15
15
  const databaseQueue = getDatabaseQueue(dbName);
16
16
  if (databaseQueue.inProgress || databaseQueue.queue.length > 0) {
17
- console.warn(`Database queue for ${dbName} has operations in the queue. Closing anyway.`);
17
+ throw new NitroSQLiteError(`Cannot close database ${dbName}. The database is busy with another operation.`);
18
18
  }
19
19
  databaseQueues.delete(dbName);
20
20
  }
@@ -29,15 +29,6 @@ export function getDatabaseQueue(dbName) {
29
29
  const queue = databaseQueues.get(dbName);
30
30
  return queue;
31
31
  }
32
- export function openDatabase(dbName) {
33
- databaseQueues.set(dbName, {
34
- queue: [],
35
- inProgress: false
36
- });
37
- }
38
- export function closeDatabase(dbName) {
39
- databaseQueues.delete(dbName);
40
- }
41
32
  export function queueOperationAsync(dbName, callback) {
42
33
  const databaseQueue = getDatabaseQueue(dbName);
43
34
  return new Promise((resolve, reject) => {
@@ -49,19 +40,17 @@ export function queueOperationAsync(dbName, callback) {
49
40
  reject(error);
50
41
  } finally {
51
42
  databaseQueue.inProgress = false;
52
- startOperationAsync(dbName);
43
+ startOperationAsync(databaseQueue);
53
44
  }
54
45
  }
55
46
  const operation = {
56
47
  start
57
48
  };
58
49
  databaseQueue.queue.push(operation);
59
- startOperationAsync(dbName);
50
+ startOperationAsync(databaseQueue);
60
51
  });
61
52
  }
62
- function startOperationAsync(dbName) {
63
- const queue = getDatabaseQueue(dbName);
64
-
53
+ function startOperationAsync(queue) {
65
54
  // Queue is empty or in progress. Bail out.
66
55
  if (queue.inProgress || queue.queue.length === 0) {
67
56
  return;
@@ -1 +1 @@
1
- {"version":3,"names":["NitroSQLiteError","databaseQueues","Map","openDatabaseQueue","dbName","isDatabaseOpen","set","queue","inProgress","closeDatabaseQueue","databaseQueue","getDatabaseQueue","length","console","warn","delete","has","throwIfDatabaseIsNotOpen","get","openDatabase","closeDatabase","queueOperationAsync","callback","Promise","resolve","reject","start","result","error","startOperationAsync","operation","push","shift","setImmediate","startOperationSync"],"sourceRoot":"../../src","sources":["DatabaseQueue.ts"],"mappings":";;AAAA,OAAOA,gBAAgB,MAAM,uBAAoB;AAcjD,MAAMC,cAAc,GAAG,IAAIC,GAAG,CAAwB,CAAC;AAEvD,OAAO,SAASC,iBAAiBA,CAACC,MAAc,EAAE;EAChD,IAAIC,cAAc,CAACD,MAAM,CAAC,EAAE;IAC1B,MAAM,IAAIJ,gBAAgB,CACxB,YAAYI,MAAM,kEACpB,CAAC;EACH;EAEAH,cAAc,CAACK,GAAG,CAACF,MAAM,EAAE;IAAEG,KAAK,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAM,CAAC,CAAC;AAC9D;AAEA,OAAO,SAASC,kBAAkBA,CAACL,MAAc,EAAE;EACjD,MAAMM,aAAa,GAAGC,gBAAgB,CAACP,MAAM,CAAC;EAE9C,IAAIM,aAAa,CAACF,UAAU,IAAIE,aAAa,CAACH,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;IAC9DC,OAAO,CAACC,IAAI,CACV,sBAAsBV,MAAM,+CAC9B,CAAC;EACH;EAEAH,cAAc,CAACc,MAAM,CAACX,MAAM,CAAC;AAC/B;AAEA,OAAO,SAASC,cAAcA,CAACD,MAAc,EAAE;EAC7C,OAAOH,cAAc,CAACe,GAAG,CAACZ,MAAM,CAAC;AACnC;AAEA,OAAO,SAASa,wBAAwBA,CAACb,MAAc,EAAE;EACvD,IAAI,CAACC,cAAc,CAACD,MAAM,CAAC,EACzB,MAAM,IAAIJ,gBAAgB,CACxB,YAAYI,MAAM,uDACpB,CAAC;AACL;AAEA,OAAO,SAASO,gBAAgBA,CAACP,MAAc,EAAE;EAC/Ca,wBAAwB,CAACb,MAAM,CAAC;EAEhC,MAAMG,KAAK,GAAGN,cAAc,CAACiB,GAAG,CAACd,MAAM,CAAE;EACzC,OAAOG,KAAK;AACd;AAEA,OAAO,SAASY,YAAYA,CAACf,MAAc,EAAE;EAC3CH,cAAc,CAACK,GAAG,CAACF,MAAM,EAAE;IAAEG,KAAK,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAM,CAAC,CAAC;AAC9D;AAEA,OAAO,SAASY,aAAaA,CAAChB,MAAc,EAAE;EAC5CH,cAAc,CAACc,MAAM,CAACX,MAAM,CAAC;AAC/B;AAEA,OAAO,SAASiB,mBAAmBA,CACjCjB,MAAc,EACdkB,QAA+B,EAC/B;EACA,MAAMZ,aAAa,GAAGC,gBAAgB,CAACP,MAAM,CAAC;EAE9C,OAAO,IAAImB,OAAO,CAAS,CAACC,OAAO,EAAEC,MAAM,KAAK;IAC9C,eAAeC,KAAKA,CAAA,EAAG;MACrB,IAAI;QACF,MAAMC,MAAM,GAAG,MAAML,QAAQ,CAAC,CAAC;QAC/BE,OAAO,CAACG,MAAM,CAAC;MACjB,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdH,MAAM,CAACG,KAAK,CAAC;MACf,CAAC,SAAS;QACRlB,aAAa,CAACF,UAAU,GAAG,KAAK;QAChCqB,mBAAmB,CAACzB,MAAM,CAAC;MAC7B;IACF;IAEA,MAAM0B,SAA0B,GAAG;MACjCJ;IACF,CAAC;IAEDhB,aAAa,CAACH,KAAK,CAACwB,IAAI,CAACD,SAAS,CAAC;IACnCD,mBAAmB,CAACzB,MAAM,CAAC;EAC7B,CAAC,CAAC;AACJ;AAEA,SAASyB,mBAAmBA,CAACzB,MAAc,EAAE;EAC3C,MAAMG,KAAK,GAAGI,gBAAgB,CAACP,MAAM,CAAC;;EAEtC;EACA,IAAIG,KAAK,CAACC,UAAU,IAAID,KAAK,CAACA,KAAK,CAACK,MAAM,KAAK,CAAC,EAAE;IAChD;EACF;EAEAL,KAAK,CAACC,UAAU,GAAG,IAAI;EAEvB,MAAMsB,SAAS,GAAGvB,KAAK,CAACA,KAAK,CAACyB,KAAK,CAAC,CAAE;EACtCC,YAAY,CAAC,MAAM;IACjBH,SAAS,CAACJ,KAAK,CAAC,CAAC;EACnB,CAAC,CAAC;AACJ;AAEA,OAAO,SAASQ,kBAAkBA,CAGhC9B,MAAc,EAAEkB,QAA2B,EAAE;EAC7C,MAAMZ,aAAa,GAAGC,gBAAgB,CAACP,MAAM,CAAC;;EAE9C;EACA,IAAIM,aAAa,CAACF,UAAU,IAAIE,aAAa,CAACH,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;IAC9D,MAAM,IAAIZ,gBAAgB,CACxB,0DAA0DI,MAAM,kCAClE,CAAC;EACH;;EAEA;EACAM,aAAa,CAACF,UAAU,GAAG,IAAI;EAC/B,IAAI;IACF,OAAOc,QAAQ,CAAC,CAAC;EACnB,CAAC,SAAS;IACRZ,aAAa,CAACF,UAAU,GAAG,KAAK;EAClC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["NitroSQLiteError","databaseQueues","Map","openDatabaseQueue","dbName","isDatabaseOpen","set","queue","inProgress","closeDatabaseQueue","databaseQueue","getDatabaseQueue","length","delete","has","throwIfDatabaseIsNotOpen","get","queueOperationAsync","callback","Promise","resolve","reject","start","result","error","startOperationAsync","operation","push","shift","setImmediate","startOperationSync"],"sourceRoot":"../../src","sources":["DatabaseQueue.ts"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,17 @@
2
2
 
3
3
  import { HybridNitroSQLite } from "../nitro.js";
4
4
  import NitroSQLiteError from "../NitroSQLiteError.js";
5
+ import { isDatabaseOpen, queueOperationAsync, startOperationSync } from "../DatabaseQueue.js";
5
6
  export function execute(dbName, query, params) {
7
+ if (!isDatabaseOpen(dbName)) {
8
+ return executeNative(dbName, query, params);
9
+ }
10
+ return executeManaged(dbName, query, params);
11
+ }
12
+ export function executeManaged(dbName, query, params) {
13
+ return startOperationSync(dbName, () => executeNative(dbName, query, params));
14
+ }
15
+ export function executeNative(dbName, query, params) {
6
16
  try {
7
17
  const nativeResult = HybridNitroSQLite.execute(dbName, query, params);
8
18
  return buildJSQueryResult(nativeResult);
@@ -11,6 +21,15 @@ export function execute(dbName, query, params) {
11
21
  }
12
22
  }
13
23
  export async function executeAsync(dbName, query, params) {
24
+ if (!isDatabaseOpen(dbName)) {
25
+ return executeAsyncNative(dbName, query, params);
26
+ }
27
+ return executeAsyncManaged(dbName, query, params);
28
+ }
29
+ export async function executeAsyncManaged(dbName, query, params) {
30
+ return queueOperationAsync(dbName, () => executeAsyncNative(dbName, query, params));
31
+ }
32
+ export async function executeAsyncNative(dbName, query, params) {
14
33
  try {
15
34
  const nativeResult = await HybridNitroSQLite.executeAsync(dbName, query, params);
16
35
  return buildJSQueryResult(nativeResult);
@@ -18,12 +37,13 @@ export async function executeAsync(dbName, query, params) {
18
37
  throw NitroSQLiteError.fromError(error);
19
38
  }
20
39
  }
21
- function buildJSQueryResult(result) {
40
+ export function buildJSQueryResult(result) {
22
41
  const resultWithRows = result;
42
+ const results = result.results;
23
43
  resultWithRows.rows = {
24
- _array: result.results,
25
- length: result.results.length,
26
- item: idx => result.results[idx]
44
+ _array: results,
45
+ length: results.length,
46
+ item: idx => results[idx]
27
47
  };
28
48
  return resultWithRows;
29
49
  }
@@ -1 +1 @@
1
- {"version":3,"names":["HybridNitroSQLite","NitroSQLiteError","execute","dbName","query","params","nativeResult","buildJSQueryResult","error","fromError","executeAsync","result","resultWithRows","rows","_array","results","length","item","idx"],"sourceRoot":"../../../src","sources":["operations/execute.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,aAAU;AAE5C,OAAOC,gBAAgB,MAAM,wBAAqB;AAGlD,OAAO,SAASC,OAAOA,CACrBC,MAAc,EACdC,KAAa,EACbC,MAA0B,EACR;EAClB,IAAI;IACF,MAAMC,YAAY,GAAGN,iBAAiB,CAACE,OAAO,CAACC,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;IACrE,OAAOE,kBAAkB,CAAMD,YAAY,CAAC;EAC9C,CAAC,CAAC,OAAOE,KAAK,EAAE;IACd,MAAMP,gBAAgB,CAACQ,SAAS,CAACD,KAAK,CAAC;EACzC;AACF;AAEA,OAAO,eAAeE,YAAYA,CAChCP,MAAc,EACdC,KAAa,EACbC,MAA0B,EACC;EAC3B,IAAI;IACF,MAAMC,YAAY,GAAG,MAAMN,iBAAiB,CAACU,YAAY,CACvDP,MAAM,EACNC,KAAK,EACLC,MACF,CAAC;IACD,OAAOE,kBAAkB,CAAMD,YAAY,CAAC;EAC9C,CAAC,CAAC,OAAOE,KAAK,EAAE;IACd,MAAMP,gBAAgB,CAACQ,SAAS,CAACD,KAAK,CAAC;EACzC;AACF;AAEA,SAASD,kBAAkBA,CACzBI,MAA8B,EACZ;EAClB,MAAMC,cAAc,GAAGD,MAA0B;EAEjDC,cAAc,CAACC,IAAI,GAAG;IACpBC,MAAM,EAAEH,MAAM,CAACI,OAAgB;IAC/BC,MAAM,EAAEL,MAAM,CAACI,OAAO,CAACC,MAAM;IAC7BC,IAAI,EAAGC,GAAW,IAAKP,MAAM,CAACI,OAAO,CAACG,GAAG;EAC3C,CAAC;EAED,OAAON,cAAc;AACvB","ignoreList":[]}
1
+ {"version":3,"names":["HybridNitroSQLite","NitroSQLiteError","isDatabaseOpen","queueOperationAsync","startOperationSync","execute","dbName","query","params","executeNative","executeManaged","nativeResult","buildJSQueryResult","error","fromError","executeAsync","executeAsyncNative","executeAsyncManaged","result","resultWithRows","results","rows","_array","length","item","idx"],"sourceRoot":"../../../src","sources":["operations/execute.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,aAAU;AAE5C,OAAOC,gBAAgB,MAAM,wBAAqB;AAElD,SACEC,cAAc,EACdC,mBAAmB,EACnBC,kBAAkB,QACb,qBAAkB;AAEzB,OAAO,SAASC,OAAOA,CACrBC,MAAc,EACdC,KAAa,EACbC,MAA0B,EACR;EAClB,IAAI,CAACN,cAAc,CAACI,MAAM,CAAC,EAAE;IAC3B,OAAOG,aAAa,CAACH,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;EAC7C;EAEA,OAAOE,cAAc,CAACJ,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;AAC9C;AAEA,OAAO,SAASE,cAAcA,CAC5BJ,MAAc,EACdC,KAAa,EACbC,MAA0B,EACR;EAClB,OAAOJ,kBAAkB,CAACE,MAAM,EAAE,MAAMG,aAAa,CAACH,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC,CAAC;AAC/E;AAEA,OAAO,SAASC,aAAaA,CAC3BH,MAAc,EACdC,KAAa,EACbC,MAA0B,EACR;EAClB,IAAI;IACF,MAAMG,YAAY,GAAGX,iBAAiB,CAACK,OAAO,CAACC,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;IACrE,OAAOI,kBAAkB,CAAMD,YAAY,CAAC;EAC9C,CAAC,CAAC,OAAOE,KAAK,EAAE;IACd,MAAMZ,gBAAgB,CAACa,SAAS,CAACD,KAAK,CAAC;EACzC;AACF;AAEA,OAAO,eAAeE,YAAYA,CAChCT,MAAc,EACdC,KAAa,EACbC,MAA0B,EACC;EAC3B,IAAI,CAACN,cAAc,CAACI,MAAM,CAAC,EAAE;IAC3B,OAAOU,kBAAkB,CAACV,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;EAClD;EAEA,OAAOS,mBAAmB,CAACX,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAAC;AACnD;AAEA,OAAO,eAAeS,mBAAmBA,CACvCX,MAAc,EACdC,KAAa,EACbC,MAA0B,EACC;EAC3B,OAAOL,mBAAmB,CAACG,MAAM,EAAE,MACjCU,kBAAkB,CAACV,MAAM,EAAEC,KAAK,EAAEC,MAAM,CAC1C,CAAC;AACH;AAEA,OAAO,eAAeQ,kBAAkBA,CACtCV,MAAc,EACdC,KAAa,EACbC,MAA0B,EACC;EAC3B,IAAI;IACF,MAAMG,YAAY,GAAG,MAAMX,iBAAiB,CAACe,YAAY,CACvDT,MAAM,EACNC,KAAK,EACLC,MACF,CAAC;IACD,OAAOI,kBAAkB,CAAMD,YAAY,CAAC;EAC9C,CAAC,CAAC,OAAOE,KAAK,EAAE;IACd,MAAMZ,gBAAgB,CAACa,SAAS,CAACD,KAAK,CAAC;EACzC;AACF;AAEA,OAAO,SAASD,kBAAkBA,CAChCM,MAA8B,EACZ;EAClB,MAAMC,cAAc,GAAGD,MAA0B;EACjD,MAAME,OAAO,GAAGF,MAAM,CAACE,OAAgB;EAEvCD,cAAc,CAACE,IAAI,GAAG;IACpBC,MAAM,EAAEF,OAAO;IACfG,MAAM,EAAEH,OAAO,CAACG,MAAM;IACtBC,IAAI,EAAGC,GAAW,IAAKL,OAAO,CAACK,GAAG;EACpC,CAAC;EAED,OAAON,cAAc;AACvB","ignoreList":[]}