UNPKG

nestjs-typeorm-transactions

Version:

A NestJS module to make transaction management easier across different services

30 lines 1.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.transaction = void 0; const async_local_storage_1 = require("./async-local-storage"); const datasource_storage_1 = require("./datasource-storage"); /** Runs the callback within a transaction. Any subsequent calls will also run queries in a transaction */ const transaction = async (cb, connection = datasource_storage_1.DEFAULT_DATASOURCE_NAME) => { const queryRunner = datasource_storage_1.DataSourceStorage.getDataSource(connection).createQueryRunner(); await queryRunner.connect(); await queryRunner.startTransaction(); const store = { [connection]: queryRunner.manager, }; try { const result = await async_local_storage_1.asyncLocalStorage.run(store, async () => { return await cb(); }); await queryRunner.commitTransaction(); return result; } catch (error) { await queryRunner.rollbackTransaction(); throw error; } finally { await queryRunner.release(); } }; exports.transaction = transaction; //# sourceMappingURL=transaction.js.map