@event-driven-io/dumbo 0.13.0-beta.43 → 0.13.0-beta.44
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/dist/cloudflare.cjs +122 -59
- package/dist/cloudflare.cjs.map +1 -1
- package/dist/cloudflare.d.cts +5 -9
- package/dist/cloudflare.d.ts +5 -9
- package/dist/cloudflare.js +123 -59
- package/dist/cloudflare.js.map +1 -1
- package/dist/index.cjs +130 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -2
- package/dist/index.d.ts +20 -2
- package/dist/index.js +129 -13
- package/dist/index.js.map +1 -1
- package/dist/pg.cjs +147 -44
- package/dist/pg.cjs.map +1 -1
- package/dist/pg.d.cts +20 -4
- package/dist/pg.d.ts +20 -4
- package/dist/pg.js +147 -44
- package/dist/pg.js.map +1 -1
- package/dist/postgresql.d.cts +4 -1
- package/dist/postgresql.d.ts +4 -1
- package/dist/sqlite.cjs +122 -59
- package/dist/sqlite.cjs.map +1 -1
- package/dist/sqlite.d.cts +5 -9
- package/dist/sqlite.d.ts +5 -9
- package/dist/sqlite.js +123 -59
- package/dist/sqlite.js.map +1 -1
- package/dist/sqlite3.cjs +171 -70
- package/dist/sqlite3.cjs.map +1 -1
- package/dist/sqlite3.d.cts +5 -9
- package/dist/sqlite3.d.ts +5 -9
- package/dist/sqlite3.js +172 -70
- package/dist/sqlite3.js.map +1 -1
- package/package.json +1 -1
package/dist/sqlite.d.cts
CHANGED
|
@@ -895,9 +895,12 @@ type InitTransaction<ConnectionType extends AnyConnection = AnyConnection> = (co
|
|
|
895
895
|
}) => InferTransactionFromConnection<ConnectionType>;
|
|
896
896
|
//#endregion
|
|
897
897
|
//#region src/core/connections/pool.d.ts
|
|
898
|
+
type PoolCloseOptions = {
|
|
899
|
+
force?: boolean;
|
|
900
|
+
};
|
|
898
901
|
interface ConnectionPool<ConnectionType extends AnyConnection = AnyConnection> extends WithSQLExecutor, WithConnectionFactory<ConnectionType>, WithDatabaseTransactionFactory<ConnectionType> {
|
|
899
902
|
driverType: ConnectionType['driverType'];
|
|
900
|
-
close: () => Promise<void>;
|
|
903
|
+
close: (options?: PoolCloseOptions) => Promise<void>;
|
|
901
904
|
}
|
|
902
905
|
//#endregion
|
|
903
906
|
//#region src/core/index.d.ts
|
|
@@ -988,13 +991,6 @@ type SQLitePoolConnectionDefinitionOptions<SQLiteConnectionType extends AnySQLit
|
|
|
988
991
|
};
|
|
989
992
|
type SQLiteConnectionDefinitionOptions<SQLiteConnectionType extends AnySQLitePoolClientConnection = AnySQLitePoolClientConnection, ClientOptions = SQLiteClientOptions> = SQLiteClientConnectionDefinitionOptions<SQLiteConnectionType, ClientOptions> | SQLitePoolConnectionDefinitionOptions<SQLiteConnectionType, ClientOptions>;
|
|
990
993
|
type SQLiteConnectionFactory<SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions> = (options: ConnectionOptions) => SQLiteConnectionType;
|
|
991
|
-
type TransactionNestingCounter = {
|
|
992
|
-
increment: () => void;
|
|
993
|
-
decrement: () => void;
|
|
994
|
-
reset: () => void;
|
|
995
|
-
level: number;
|
|
996
|
-
};
|
|
997
|
-
declare const transactionNestingCounter: () => TransactionNestingCounter;
|
|
998
994
|
type SqliteAmbientClientConnectionOptions<SQLiteConnectionType extends AnySQLiteClientConnection = AnySQLiteClientConnection> = {
|
|
999
995
|
driverType: SQLiteConnectionType['driverType'];
|
|
1000
996
|
client: InferDbClientFromConnection<SQLiteConnectionType>;
|
|
@@ -1103,5 +1099,5 @@ declare const SQLiteDatabaseName = "SQLite";
|
|
|
1103
1099
|
type SQLiteDriverType<DriverName extends string = string> = DatabaseDriverType<SQLiteDatabaseName, DriverName>;
|
|
1104
1100
|
type SQLiteDatabaseType = 'SQLite';
|
|
1105
1101
|
//#endregion
|
|
1106
|
-
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClient, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionOptions, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteDriverType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteJSON, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, type SQLitePragmaOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions,
|
|
1102
|
+
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClient, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionOptions, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteDriverType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteJSON, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, type SQLitePragmaOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, parsePragmasFromConnectionString, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions };
|
|
1107
1103
|
//# sourceMappingURL=sqlite.d.cts.map
|
package/dist/sqlite.d.ts
CHANGED
|
@@ -895,9 +895,12 @@ type InitTransaction<ConnectionType extends AnyConnection = AnyConnection> = (co
|
|
|
895
895
|
}) => InferTransactionFromConnection<ConnectionType>;
|
|
896
896
|
//#endregion
|
|
897
897
|
//#region src/core/connections/pool.d.ts
|
|
898
|
+
type PoolCloseOptions = {
|
|
899
|
+
force?: boolean;
|
|
900
|
+
};
|
|
898
901
|
interface ConnectionPool<ConnectionType extends AnyConnection = AnyConnection> extends WithSQLExecutor, WithConnectionFactory<ConnectionType>, WithDatabaseTransactionFactory<ConnectionType> {
|
|
899
902
|
driverType: ConnectionType['driverType'];
|
|
900
|
-
close: () => Promise<void>;
|
|
903
|
+
close: (options?: PoolCloseOptions) => Promise<void>;
|
|
901
904
|
}
|
|
902
905
|
//#endregion
|
|
903
906
|
//#region src/core/index.d.ts
|
|
@@ -988,13 +991,6 @@ type SQLitePoolConnectionDefinitionOptions<SQLiteConnectionType extends AnySQLit
|
|
|
988
991
|
};
|
|
989
992
|
type SQLiteConnectionDefinitionOptions<SQLiteConnectionType extends AnySQLitePoolClientConnection = AnySQLitePoolClientConnection, ClientOptions = SQLiteClientOptions> = SQLiteClientConnectionDefinitionOptions<SQLiteConnectionType, ClientOptions> | SQLitePoolConnectionDefinitionOptions<SQLiteConnectionType, ClientOptions>;
|
|
990
993
|
type SQLiteConnectionFactory<SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions> = (options: ConnectionOptions) => SQLiteConnectionType;
|
|
991
|
-
type TransactionNestingCounter = {
|
|
992
|
-
increment: () => void;
|
|
993
|
-
decrement: () => void;
|
|
994
|
-
reset: () => void;
|
|
995
|
-
level: number;
|
|
996
|
-
};
|
|
997
|
-
declare const transactionNestingCounter: () => TransactionNestingCounter;
|
|
998
994
|
type SqliteAmbientClientConnectionOptions<SQLiteConnectionType extends AnySQLiteClientConnection = AnySQLiteClientConnection> = {
|
|
999
995
|
driverType: SQLiteConnectionType['driverType'];
|
|
1000
996
|
client: InferDbClientFromConnection<SQLiteConnectionType>;
|
|
@@ -1103,5 +1099,5 @@ declare const SQLiteDatabaseName = "SQLite";
|
|
|
1103
1099
|
type SQLiteDriverType<DriverName extends string = string> = DatabaseDriverType<SQLiteDatabaseName, DriverName>;
|
|
1104
1100
|
type SQLiteDatabaseType = 'SQLite';
|
|
1105
1101
|
//#endregion
|
|
1106
|
-
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClient, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionOptions, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteDriverType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteJSON, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, type SQLitePragmaOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions,
|
|
1102
|
+
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClient, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionOptions, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteDriverType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteJSON, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, type SQLitePragmaOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, parsePragmasFromConnectionString, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions };
|
|
1107
1103
|
//# sourceMappingURL=sqlite.d.ts.map
|
package/dist/sqlite.js
CHANGED
|
@@ -225,6 +225,65 @@ const executeInAmbientConnection = async (handle, options) => {
|
|
|
225
225
|
|
|
226
226
|
//#endregion
|
|
227
227
|
//#region src/core/connections/transaction.ts
|
|
228
|
+
const transactionNestingCounter = () => {
|
|
229
|
+
let transactionLevel = 0;
|
|
230
|
+
return {
|
|
231
|
+
reset: () => {
|
|
232
|
+
transactionLevel = 0;
|
|
233
|
+
},
|
|
234
|
+
increment: () => {
|
|
235
|
+
transactionLevel++;
|
|
236
|
+
},
|
|
237
|
+
decrement: () => {
|
|
238
|
+
transactionLevel--;
|
|
239
|
+
if (transactionLevel < 0) throw new Error("Transaction level is out of bounds");
|
|
240
|
+
},
|
|
241
|
+
get level() {
|
|
242
|
+
return transactionLevel;
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
const databaseTransaction = (backend, options) => {
|
|
247
|
+
const allowNestedTransactions = options?.allowNestedTransactions ?? false;
|
|
248
|
+
const useSavepoints = options?.useSavepoints ?? false;
|
|
249
|
+
const counter = transactionNestingCounter();
|
|
250
|
+
let hasBegun = false;
|
|
251
|
+
return {
|
|
252
|
+
begin: async () => {
|
|
253
|
+
if (!allowNestedTransactions && hasBegun) throw new InvalidOperationError("Cannot start a nested transaction: allowNestedTransactions is false. Set transactionOptions: { allowNestedTransactions: true } on your pool or connection.");
|
|
254
|
+
if (allowNestedTransactions) {
|
|
255
|
+
if (counter.level >= 1) {
|
|
256
|
+
counter.increment();
|
|
257
|
+
if (useSavepoints && backend.savepoint) await backend.savepoint(counter.level);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
counter.increment();
|
|
261
|
+
}
|
|
262
|
+
hasBegun = true;
|
|
263
|
+
await backend.begin();
|
|
264
|
+
},
|
|
265
|
+
commit: async () => {
|
|
266
|
+
if (allowNestedTransactions && counter.level > 1) {
|
|
267
|
+
if (useSavepoints && backend.releaseSavepoint) await backend.releaseSavepoint(counter.level);
|
|
268
|
+
counter.decrement();
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
if (allowNestedTransactions) counter.reset();
|
|
272
|
+
hasBegun = false;
|
|
273
|
+
await backend.commit();
|
|
274
|
+
},
|
|
275
|
+
rollback: async (error) => {
|
|
276
|
+
if (allowNestedTransactions && counter.level > 1) {
|
|
277
|
+
if (useSavepoints && backend.rollbackToSavepoint) await backend.rollbackToSavepoint(counter.level);
|
|
278
|
+
counter.decrement();
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
if (allowNestedTransactions) counter.reset();
|
|
282
|
+
hasBegun = false;
|
|
283
|
+
await backend.rollback(error);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
};
|
|
228
287
|
const toTransactionResult = (transactionResult) => transactionResult !== void 0 && transactionResult !== null && typeof transactionResult === "object" && "success" in transactionResult ? transactionResult : {
|
|
229
288
|
success: true,
|
|
230
289
|
result: transactionResult
|
|
@@ -415,22 +474,53 @@ const createAmbientConnectionPool = (options) => {
|
|
|
415
474
|
const createSingletonConnectionPool = (options) => {
|
|
416
475
|
const { driverType, getConnection } = options;
|
|
417
476
|
let connectionPromise = null;
|
|
477
|
+
let closed = false;
|
|
478
|
+
const activeOperations = /* @__PURE__ */ new Set();
|
|
479
|
+
const closedError = () => /* @__PURE__ */ new Error("Singleton connection pool has been closed");
|
|
480
|
+
const run = async (operation) => {
|
|
481
|
+
if (closed) throw closedError();
|
|
482
|
+
const activeOperation = operation();
|
|
483
|
+
activeOperations.add(activeOperation);
|
|
484
|
+
try {
|
|
485
|
+
return await activeOperation;
|
|
486
|
+
} finally {
|
|
487
|
+
activeOperations.delete(activeOperation);
|
|
488
|
+
}
|
|
489
|
+
};
|
|
418
490
|
const getExistingOrNewConnection = () => {
|
|
419
491
|
if (!connectionPromise) connectionPromise ??= Promise.resolve(getConnection());
|
|
420
492
|
return connectionPromise;
|
|
421
493
|
};
|
|
494
|
+
const innerTransactionFactory = transactionFactoryWithAsyncAmbientConnection(options.driverType, getExistingOrNewConnection, options.closeConnection);
|
|
422
495
|
return {
|
|
423
496
|
driverType,
|
|
424
|
-
connection: () => getExistingOrNewConnection().then((conn) => wrapPooledConnection(conn, () => Promise.resolve())),
|
|
425
|
-
execute:
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
497
|
+
connection: () => run(() => getExistingOrNewConnection().then((conn) => wrapPooledConnection(conn, () => Promise.resolve()))),
|
|
498
|
+
execute: (() => {
|
|
499
|
+
const ambientExecutor = sqlExecutorInAmbientConnection({
|
|
500
|
+
driverType,
|
|
501
|
+
connection: getExistingOrNewConnection
|
|
502
|
+
});
|
|
503
|
+
return {
|
|
504
|
+
query: (sql, opts) => run(() => ambientExecutor.query(sql, opts)),
|
|
505
|
+
batchQuery: (sqls, opts) => run(() => ambientExecutor.batchQuery(sqls, opts)),
|
|
506
|
+
command: (sql, opts) => run(() => ambientExecutor.command(sql, opts)),
|
|
507
|
+
batchCommand: (sqls, opts) => run(() => ambientExecutor.batchCommand(sqls, opts))
|
|
508
|
+
};
|
|
509
|
+
})(),
|
|
510
|
+
withConnection: (handle, _options) => run(() => executeInAmbientConnection(handle, { connection: getExistingOrNewConnection })),
|
|
511
|
+
transaction: (transactionOptions) => {
|
|
512
|
+
if (closed) throw closedError();
|
|
513
|
+
return innerTransactionFactory.transaction(transactionOptions);
|
|
514
|
+
},
|
|
515
|
+
withTransaction: (handle, transactionOptions) => run(() => innerTransactionFactory.withTransaction(handle, transactionOptions)),
|
|
516
|
+
close: async (closeOptions) => {
|
|
517
|
+
if (closed) return;
|
|
518
|
+
closed = true;
|
|
519
|
+
if (!closeOptions?.force) await Promise.allSettled([...activeOperations]);
|
|
432
520
|
if (!connectionPromise) return;
|
|
433
|
-
|
|
521
|
+
const connection = await connectionPromise;
|
|
522
|
+
connectionPromise = null;
|
|
523
|
+
await connection.close();
|
|
434
524
|
}
|
|
435
525
|
};
|
|
436
526
|
};
|
|
@@ -1783,54 +1873,46 @@ const sqliteSQLExecutor = (driverType, serializer, formatter, errorMapper) => ({
|
|
|
1783
1873
|
//#endregion
|
|
1784
1874
|
//#region src/storage/sqlite/core/transactions/index.ts
|
|
1785
1875
|
const sqliteTransaction = (driverType, connection, allowNestedTransactions, serializer, defaultTransactionMode) => (getClient, options) => {
|
|
1786
|
-
const transactionCounter = transactionNestingCounter();
|
|
1787
1876
|
allowNestedTransactions = options?.allowNestedTransactions ?? allowNestedTransactions;
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
driverType,
|
|
1792
|
-
begin: async function() {
|
|
1877
|
+
const useSavepoints = options?.useSavepoints ?? false;
|
|
1878
|
+
const tx = databaseTransaction({
|
|
1879
|
+
begin: async () => {
|
|
1793
1880
|
const client = await getClient;
|
|
1794
|
-
if (allowNestedTransactions) {
|
|
1795
|
-
if (transactionCounter.level >= 1) {
|
|
1796
|
-
transactionCounter.increment();
|
|
1797
|
-
if (options?.useSavepoints) await client.command(SQL`SAVEPOINT transaction${SQL.plain(transactionCounter.level.toString())}`);
|
|
1798
|
-
return;
|
|
1799
|
-
}
|
|
1800
|
-
transactionCounter.increment();
|
|
1801
|
-
} else if (hasBegun) throw new InvalidOperationError("Cannot start a nested transaction: allowNestedTransactions is false. Set transactionOptions: { allowNestedTransactions: true } on your pool or connection.");
|
|
1802
|
-
hasBegun = true;
|
|
1803
1881
|
const mode = options?.mode ?? defaultTransactionMode ?? "IMMEDIATE";
|
|
1804
1882
|
await client.command(SQL`BEGIN ${SQL.plain(mode)} TRANSACTION`);
|
|
1805
1883
|
},
|
|
1806
|
-
commit: async
|
|
1884
|
+
commit: async () => {
|
|
1807
1885
|
const client = await getClient;
|
|
1808
|
-
if (allowNestedTransactions && transactionCounter.level > 1) {
|
|
1809
|
-
if (options?.useSavepoints) await client.command(SQL`RELEASE transaction${SQL.plain(transactionCounter.level.toString())}`);
|
|
1810
|
-
transactionCounter.decrement();
|
|
1811
|
-
return;
|
|
1812
|
-
}
|
|
1813
1886
|
try {
|
|
1814
|
-
if (allowNestedTransactions) transactionCounter.reset();
|
|
1815
|
-
hasBegun = false;
|
|
1816
1887
|
await client.command(SQL`COMMIT`);
|
|
1817
1888
|
} finally {
|
|
1818
|
-
if (options?.close) await options
|
|
1889
|
+
if (options?.close) await options.close(client);
|
|
1819
1890
|
}
|
|
1820
1891
|
},
|
|
1821
|
-
rollback: async
|
|
1892
|
+
rollback: async (error) => {
|
|
1822
1893
|
const client = await getClient;
|
|
1823
|
-
if (allowNestedTransactions && transactionCounter.level > 1) {
|
|
1824
|
-
transactionCounter.decrement();
|
|
1825
|
-
return;
|
|
1826
|
-
}
|
|
1827
1894
|
try {
|
|
1828
|
-
hasBegun = false;
|
|
1829
1895
|
await client.command(SQL`ROLLBACK`);
|
|
1830
1896
|
} finally {
|
|
1831
|
-
if (options?.close) await options
|
|
1897
|
+
if (options?.close) await options.close(client, error);
|
|
1832
1898
|
}
|
|
1833
1899
|
},
|
|
1900
|
+
savepoint: async (level) => {
|
|
1901
|
+
await (await getClient).command(SQL`SAVEPOINT transaction${SQL.plain(level.toString())}`);
|
|
1902
|
+
},
|
|
1903
|
+
releaseSavepoint: async (level) => {
|
|
1904
|
+
await (await getClient).command(SQL`RELEASE transaction${SQL.plain(level.toString())}`);
|
|
1905
|
+
}
|
|
1906
|
+
}, {
|
|
1907
|
+
allowNestedTransactions,
|
|
1908
|
+
useSavepoints
|
|
1909
|
+
});
|
|
1910
|
+
return {
|
|
1911
|
+
connection: connection(),
|
|
1912
|
+
driverType,
|
|
1913
|
+
begin: tx.begin,
|
|
1914
|
+
commit: tx.commit,
|
|
1915
|
+
rollback: tx.rollback,
|
|
1834
1916
|
execute: sqlExecutor(sqliteSQLExecutor(driverType, serializer), { connect: () => getClient }),
|
|
1835
1917
|
_transactionOptions: {
|
|
1836
1918
|
...options,
|
|
@@ -1876,24 +1958,6 @@ const isSQLiteError = (error) => {
|
|
|
1876
1958
|
if (error instanceof Error && "code" in error) return true;
|
|
1877
1959
|
return false;
|
|
1878
1960
|
};
|
|
1879
|
-
const transactionNestingCounter = () => {
|
|
1880
|
-
let transactionLevel = 0;
|
|
1881
|
-
return {
|
|
1882
|
-
reset: () => {
|
|
1883
|
-
transactionLevel = 0;
|
|
1884
|
-
},
|
|
1885
|
-
increment: () => {
|
|
1886
|
-
transactionLevel++;
|
|
1887
|
-
},
|
|
1888
|
-
decrement: () => {
|
|
1889
|
-
transactionLevel--;
|
|
1890
|
-
if (transactionLevel < 0) throw new Error("Transaction level is out of bounds");
|
|
1891
|
-
},
|
|
1892
|
-
get level() {
|
|
1893
|
-
return transactionLevel;
|
|
1894
|
-
}
|
|
1895
|
-
};
|
|
1896
|
-
};
|
|
1897
1961
|
const sqliteAmbientClientConnection = (options) => {
|
|
1898
1962
|
const { client, driverType, initTransaction, allowNestedTransactions, defaultTransactionMode, serializer, errorMapper } = options;
|
|
1899
1963
|
return createAmbientConnection({
|
|
@@ -2066,5 +2130,5 @@ const SQLiteJSON = { path };
|
|
|
2066
2130
|
const SQLiteDatabaseName = "SQLite";
|
|
2067
2131
|
|
|
2068
2132
|
//#endregion
|
|
2069
|
-
export { DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteConnectionString, SQLiteDatabaseName, SQLiteJSON, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, parsePragmasFromConnectionString, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions
|
|
2133
|
+
export { DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteConnectionString, SQLiteDatabaseName, SQLiteJSON, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, parsePragmasFromConnectionString, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions };
|
|
2070
2134
|
//# sourceMappingURL=sqlite.js.map
|