json-api-nestjs
Version:
JsonApi Plugin for NestJs
89 lines • 3.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CurrentMicroOrmProvider = CurrentMicroOrmProvider;
exports.CurrentEntityManager = CurrentEntityManager;
exports.CurrentEntityRepository = CurrentEntityRepository;
exports.CurrentEntityMetadata = CurrentEntityMetadata;
exports.EntityPropsMap = EntityPropsMap;
exports.RunInTransactionFactory = RunInTransactionFactory;
exports.OrmServiceFactory = OrmServiceFactory;
const core_1 = require("@mikro-orm/core");
const nestjs_shared_1 = require("../../../utils/nestjs-shared");
const nestjs_1 = require("@mikro-orm/nestjs");
const constants_1 = require("../../../constants");
const orm_helper_1 = require("../orm-helper");
const helper_1 = require("../../mixin/helper");
const constants_2 = require("../constants");
const service_1 = require("../service");
function CurrentMicroOrmProvider(connectionName) {
return {
provide: constants_1.CURRENT_DATA_SOURCE_TOKEN,
useFactory: (mikroORM) => {
return mikroORM;
},
inject: [connectionName ? (0, nestjs_1.getMikroORMToken)(connectionName) : core_1.MikroORM],
};
}
function CurrentEntityManager() {
return {
provide: constants_1.CURRENT_ENTITY_MANAGER_TOKEN,
useFactory: (mikroORM) => mikroORM.em,
inject: [constants_1.CURRENT_DATA_SOURCE_TOKEN],
};
}
function CurrentEntityRepository(entity) {
return {
provide: constants_1.CURRENT_ENTITY_REPOSITORY,
useFactory: (entityManager) => entityManager.getRepository(entity),
inject: [constants_1.CURRENT_ENTITY_MANAGER_TOKEN],
};
}
function CurrentEntityMetadata() {
return {
provide: constants_2.ENTITY_METADATA_TOKEN,
useFactory: (mikroORM) => mikroORM.getMetadata(),
inject: [constants_1.CURRENT_DATA_SOURCE_TOKEN],
};
}
function EntityPropsMap(entities) {
return {
provide: constants_1.ENTITY_MAP_PROPS,
inject: [constants_2.ENTITY_METADATA_TOKEN, constants_1.GLOBAL_MODULE_OPTIONS_TOKEN],
useFactory: (metadataStorage, config) => {
const mapProperty = new Map();
const arrayConfig = config.options.arrayType;
for (const item of entities) {
const metadata = metadataStorage.get(item);
const className = (0, helper_1.getEntityName)(item);
mapProperty.set(item, {
props: (0, orm_helper_1.getProps)(metadata),
propsType: (0, orm_helper_1.getPropsType)(metadata, arrayConfig),
propsNullable: (0, orm_helper_1.getPropsNullable)(metadata),
primaryColumnName: (0, orm_helper_1.getPrimaryColumnName)(metadata),
primaryColumnType: (0, orm_helper_1.getPrimaryColumnType)(metadata),
typeName: (0, nestjs_shared_1.camelToKebab)(className),
className: className,
relations: (0, orm_helper_1.getRelation)(metadata),
relationProperty: (0, orm_helper_1.getRelationProperty)(metadata),
});
}
return mapProperty;
},
};
}
function RunInTransactionFactory() {
return {
provide: constants_1.RUN_IN_TRANSACTION_FUNCTION,
inject: [],
useFactory() {
return async (callback) => callback();
},
};
}
function OrmServiceFactory() {
return {
provide: constants_1.ORM_SERVICE,
useClass: service_1.MicroOrmService,
};
}
//# sourceMappingURL=index.js.map