kapix-typegraphql-prisma
Version:

65 lines • 2.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
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(it => it.argsTypeName !== undefined)
.map(it => it.argsTypeName), 0);
(0, imports_1.generateHelpersFileImport)(sourceFile, 3);
const distinctOutputTypesNames = [
...new Set(mapping.actions.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);
const hasGeom = generateGeomSupport(sourceFile, model);
sourceFile.addClass({
name: mapping.resolverName,
isExported: true,
decorators: [
{
name: "TypeGraphQL.Resolver",
arguments: [`_of => ${model.typeName}`],
},
],
methods: mapping.actions.map(action => (0, helpers_1.generateCrudResolverClassMethodDeclaration)(action, mapping, dmmfDocument, generatorOptions, hasGeom)),
});
}
exports.default = generateCrudResolverClassFromMapping;
function generateGeomSupport(sourceFile, model) {
const geometryRaws = [];
model.fields.forEach(field => {
if (field.documentation && field.documentation.includes("@geometry")) {
geometryRaws.push(field.name);
}
});
if (geometryRaws.length > 0) {
sourceFile.addStatements(`
const geomFieldsList = [${geometryRaws
.map(raw => `"${raw}"`)
.join(", ")}]`);
sourceFile.addImportDeclaration({
moduleSpecifier: `./../PostgisQuery`,
namedImports: [
"updateGeomFields",
"filterGeomByIds",
"applyGeomPointFilter",
],
});
return true;
}
return false;
}
//# sourceMappingURL=full-crud.js.map