typegraphql-prisma-nestjs
Version:
This project is a fork of another with minor changes, created for personal use.
45 lines • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = generateCrudResolverClassFromMapping;
const tslib_1 = require("tslib");
const path_1 = tslib_1.__importDefault(require("path"));
const config_1 = require("../config");
const imports_1 = require("../imports");
const helpers_1 = require("./helpers");
function generateCrudResolverClassFromMapping(project, baseDirPath, mapping, model, dmmfDocument, generatorOptions) {
const resolverDirPath = path_1.default.resolve(baseDirPath, config_1.resolversFolderName, config_1.crudResolversFolderName, model.typeName);
const filePath = path_1.default.resolve(resolverDirPath, `${mapping.resolverName}.ts`);
const sourceFile = project.createSourceFile(filePath, undefined, {
overwrite: true,
});
(0, imports_1.generateTypeGraphQLImport)(sourceFile);
(0, imports_1.generateGraphQLInfoImport)(sourceFile);
(0, imports_1.generateArgsImports)(sourceFile, mapping.actions
.filter(a => !generatorOptions.emitActions?.includes(a.prismaMethod))
.filter(it => it.argsTypeName !== undefined)
.map(it => it.argsTypeName), 0);
(0, imports_1.generateHelpersFileImport)(sourceFile, 3);
const distinctOutputTypesNames = [
...new Set(mapping.actions
.filter(a => !generatorOptions.emitActions?.includes(a.prismaMethod))
.map(it => it.outputTypeName)),
];
const modelOutputTypeNames = distinctOutputTypesNames.filter(typeName => dmmfDocument.isModelTypeName(typeName));
const otherOutputTypeNames = distinctOutputTypesNames.filter(typeName => !dmmfDocument.isModelTypeName(typeName));
(0, imports_1.generateModelsImports)(sourceFile, modelOutputTypeNames, 3);
(0, imports_1.generateOutputsImports)(sourceFile, otherOutputTypeNames, 2);
sourceFile.addClass({
name: mapping.resolverName,
isExported: true,
decorators: [
{
name: "Resolver",
arguments: [`_of => ${model.typeName}`],
},
],
methods: mapping.actions
.filter(a => !generatorOptions.emitActions?.includes(a.prismaMethod))
.map(action => (0, helpers_1.generateCrudResolverClassMethodDeclaration)(action, mapping, dmmfDocument, generatorOptions)),
});
}
//# sourceMappingURL=full-crud.js.map