@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
48 lines (47 loc) • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.computeConnectDtoParams = exports.ConnectDtoParamsComputer = void 0;
const base_model_params_computer_1 = require("./base-model-params-computer");
const connect_dto_field_config_1 = require("./configs/connect-dto-field-config");
const helpers_1 = require("../helpers/helpers");
const field_classifiers_1 = require("../field-classifiers");
class ConnectDtoParamsComputer extends base_model_params_computer_1.BaseModelParamsComputer {
constructor(customDecoratorConfigsPath, templateHelpers) {
super(templateHelpers, customDecoratorConfigsPath);
this.customDecoratorConfigsPath = customDecoratorConfigsPath;
this.fieldConfig = new connect_dto_field_config_1.ConnectDtoFieldConfig(templateHelpers);
}
getFieldConfig() {
return this.fieldConfig;
}
computeParams(model, _allModels, addExposePropertyDecorator) {
const idFields = model.fields.filter((field) => (0, field_classifiers_1.isId)(field));
const isUniqueFields = model.fields.filter((field) => (0, field_classifiers_1.isUnique)(field));
const uniqueFields = helpers_1.Helpers.uniq([...idFields, ...isUniqueFields]);
const overrides = uniqueFields.length > 1 ? { isRequired: false } : {};
const fields = uniqueFields.map((field) => helpers_1.Helpers.mapDMMFToParsedField(field, overrides));
let imports = [];
if (this.templateHelpers) {
const fieldResult = this.processModelFields(model, [], addExposePropertyDecorator);
imports = this.finalizeImports(fieldResult.imports, fields, false, fieldResult.hasEnum);
}
else {
const importPrismaClient = helpers_1.Helpers.makeImportsFromPrismaClient(fields);
if (importPrismaClient) {
imports.push(importPrismaClient);
}
imports = helpers_1.Helpers.zipImportStatementParams(imports);
}
return {
model,
fields,
imports,
};
}
}
exports.ConnectDtoParamsComputer = ConnectDtoParamsComputer;
const computeConnectDtoParams = ({ model, templateHelpers, addExposePropertyDecorator, customDecoratorConfigsPath, }) => {
const computer = new ConnectDtoParamsComputer(customDecoratorConfigsPath, templateHelpers);
return computer.computeParams(model, [], addExposePropertyDecorator);
};
exports.computeConnectDtoParams = computeConnectDtoParams;