nestjs-typeorm-transactions
Version:
A NestJS module to make transaction management easier across different services
30 lines • 1.14 kB
JavaScript
;
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