@softkit/typeorm
Version:
This library has some useful utilities for typeorm, entities, repositories, useful subscribers, interceptors.
39 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupTypeormModule = void 0;
const typeorm_1 = require("@nestjs/typeorm");
const typeorm_2 = require("typeorm");
const common_1 = require("typeorm-transactional/dist/common");
const typeorm_transactional_1 = require("typeorm-transactional");
const setup_typeorm_options_1 = require("./vo/setup-typeorm-options");
function setupTypeormModule(options) {
const optionsWithDefault = {
...setup_typeorm_options_1.DEFAULT_SETUP_TYPEORM_OPTIONS,
...options,
};
return typeorm_1.TypeOrmModule.forRootAsync({
useClass: optionsWithDefault.optionsFactory,
dataSourceFactory: async (baseOptions) => {
/* istanbul ignore next */
if (!baseOptions) {
// this will be a startup error we don't need to cover it with tests
throw new Error(`Can not initialize data source, options are empty`);
}
// it's needed only for e2e tests
const existDatasource = (0, common_1.getDataSourceByName)('default');
if (existDatasource) {
return existDatasource;
}
const options = {
...baseOptions,
// eslint-disable-next-line @typescript-eslint/ban-types
migrations: optionsWithDefault.migrations,
};
const dataSource = new typeorm_2.DataSource(options);
(0, typeorm_transactional_1.addTransactionalDataSource)(dataSource);
return await dataSource.initialize();
},
});
}
exports.setupTypeormModule = setupTypeormModule;
//# sourceMappingURL=setup-typeorm-module.js.map