UNPKG

@weverson_na/prisma-generator-nestjs-dto

Version:

Advanced Prisma Generator with Smart Merge v2: Creates DTO and Entity classes with AST-based preservation, intelligent import management, and modular architecture for NestJS

40 lines (39 loc) 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RelationFieldHelper = void 0; const field_classifiers_1 = require("../field-classifiers"); class RelationFieldHelper { static getRelationScalars(fields) { const scalars = fields.flatMap(({ relationFromFields = [] }) => relationFromFields); return scalars.reduce((result, scalar) => { const related = fields .filter(({ relationFromFields = [] }) => relationFromFields.includes(scalar)) .map(({ name }) => name); return { ...result, [scalar]: related }; }, {}); } static getRelationConnectInputFields({ field, allModels, }) { if (!(0, field_classifiers_1.isRelation)(field)) { throw new Error(`Can not resolve RelationConnectInputFields for field '${field.name}'. Not a relation field.`); } const relatedModel = allModels.find((m) => m.name === field.type); if (!relatedModel) { throw new Error(`Can not resolve RelationConnectInputFields for field '${field.name}'. Related model '${field.type}' unknown.`); } const foreignKeyFields = this.getForeignKeyFields(field, relatedModel); const idFields = relatedModel.fields.filter(field_classifiers_1.isId); const uniqueFields = relatedModel.fields.filter(field_classifiers_1.isUnique); return new Set([...foreignKeyFields, ...idFields, ...uniqueFields]); } static getForeignKeyFields(field, relatedModel) { const { relationToFields = [] } = field; return relationToFields.map((relName) => { const rf = relatedModel.fields.find((f) => f.name === relName); if (!rf) { throw new Error(`Can not find foreign key field '${relName}' on model '${relatedModel.name}'`); } return rf; }); } } exports.RelationFieldHelper = RelationFieldHelper;