UNPKG

typeorm-transactional-async-callbacks

Version:

A Transactional Method Decorator for typeorm that uses cls-hooked to handle and propagate transactions between different repositories and service methods. Inpired by Spring Trasnactional Annotation and Sequelize CLS

46 lines 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Storage = void 0; var semver_1 = require("semver"); var storage_driver_1 = require("../enums/storage-driver"); var async_local_storage_1 = require("./driver/async-local-storage"); var cls_hooked_1 = require("./driver/cls-hooked"); var Storage = /** @class */ (function () { function Storage() { } Storage.prototype.create = function (storageDriverEnum) { if (this.driver) { // We probably should not allow calling this function when driver is already defined return this.driver; } var DriverConstructor = this.getDriverConstructor(storageDriverEnum); this.driver = new DriverConstructor(); return this.driver; }; Storage.prototype.get = function () { if (!this.driver) { throw new Error('No storage driver defined in your app ... please call initializeTransactionalContext() before application start.'); } return this.driver; }; Storage.prototype.getDriverConstructor = function (storageDriverEnum) { switch (storageDriverEnum) { case storage_driver_1.StorageDriver.ASYNC_LOCAL_STORAGE: return async_local_storage_1.AsyncLocalStorageDriver; case storage_driver_1.StorageDriver.CLS_HOOKED: return cls_hooked_1.ClsHookedDriver; case storage_driver_1.StorageDriver.AUTO: default: return this.getBestSupportedDriverConstructor(); } }; Storage.prototype.getBestSupportedDriverConstructor = function () { if (process && (0, semver_1.gte)(process.versions.node, '16.0.0')) { return async_local_storage_1.AsyncLocalStorageDriver; } return cls_hooked_1.ClsHookedDriver; }; return Storage; }()); exports.Storage = Storage; //# sourceMappingURL=storage.js.map