json-api-nestjs
Version:
JsonApi Plugin for NestJs
79 lines • 3.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.prepareConfig = prepareConfig;
exports.createMixinModule = createMixinModule;
exports.createAtomicModule = createAtomicModule;
exports.entityForClass = entityForClass;
const common_1 = require("@nestjs/common");
const constants_1 = require("../constants");
const modules_1 = require("../modules");
const mixin_module_1 = require("../modules/mixin/mixin.module");
const core_1 = require("@nestjs/core");
const constants_2 = require("../modules/micro-orm/constants");
function prepareConfig(moduleOptions, type) {
const { options: inputOptions } = moduleOptions;
let resulOptions;
const configParam = {
debug: !!inputOptions.debug,
requiredSelectField: !!inputOptions.requiredSelectField,
operationUrl: inputOptions.operationUrl || false,
overrideRoute: inputOptions.overrideRoute || false,
pipeForId: inputOptions.pipeForId || common_1.ParseIntPipe,
};
if (type === 'typeOrm') {
const { runInTransaction, useSoftDelete } = moduleOptions.options;
resulOptions = {
...configParam,
useSoftDelete: useSoftDelete ? useSoftDelete : false,
runInTransaction: runInTransaction ? runInTransaction : false,
};
}
else {
const { arrayType } = moduleOptions.options;
resulOptions = {
...configParam,
arrayType: [...constants_2.DEFAULT_ARRAY_TYPE, ...(arrayType || [])],
};
}
return {
connectionName: type === 'typeOrm'
? moduleOptions.connectionName || constants_1.DEFAULT_CONNECTION_NAME
: moduleOptions.connectionName,
entities: moduleOptions.entities,
imports: moduleOptions.imports || [],
providers: moduleOptions.providers || [],
controllers: moduleOptions.controllers || [],
options: resulOptions,
};
}
function createMixinModule(entity, resultOption, commonOrmModule) {
const controller = (resultOption.controllers || []).find((item) => item && Reflect.getMetadata(constants_1.JSON_API_DECORATOR_ENTITY, item) === entity);
return mixin_module_1.MixinModule.forRoot({
entity,
controller,
config: resultOption.options,
imports: [commonOrmModule, ...resultOption.imports],
ormModule: resultOption.type,
});
}
function createAtomicModule(options, entitiesMixinModules, commonOrmModule) {
const { operationUrl } = options.options;
if (!operationUrl)
return [];
return [
modules_1.AtomicOperationModule.forRoot({
...options,
connectionName: options.connectionName,
}, entitiesMixinModules, commonOrmModule),
core_1.RouterModule.register([
{
module: modules_1.AtomicOperationModule,
path: operationUrl,
},
]),
];
}
function entityForClass(type) {
return Reflect.getMetadata(constants_1.JSON_API_DECORATOR_ENTITY, type);
}
//# sourceMappingURL=helper.js.map