@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
64 lines (63 loc) • 2.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TemplateUtilities = void 0;
const decorator_strategy_1 = require("../decorators/decorator-strategy");
const type_converter_1 = require("./type-converter");
class TemplateUtilities {
constructor(decoratorConfigPath) {
this.prismaTypeConverter = new type_converter_1.PrismaTypeConverter();
this.decoratorStrategy = new decorator_strategy_1.DecoratorStrategy(decoratorConfigPath);
}
echo(input) {
return input;
}
when(condition, thenTpl, elseTpl = '') {
return condition ? thenTpl : elseTpl;
}
unless(condition, thenTpl, elseTpl = '') {
return !condition ? thenTpl : elseTpl;
}
each(arr, fn, joinWith = '') {
return arr.map(fn).join(joinWith);
}
hasApiPropertyDoc(field) {
var _a;
return Boolean((_a = field.documentation) === null || _a === void 0 ? void 0 : _a.includes('@ApiProperty'));
}
hasSomeApiPropertyDoc(fields) {
return fields.some((f) => this.hasApiPropertyDoc(f));
}
buildEntityDecorator(field) {
var _a;
if (!this.hasApiPropertyDoc(field)) {
return '';
}
const apiPropertyLines = ((_a = field.documentation) !== null && _a !== void 0 ? _a : '')
.split('\n')
.filter((line) => line.includes('@ApiProperty'))
.map((line) => line.trim());
return apiPropertyLines.join('\n') + (apiPropertyLines.length ? '' : '');
}
buildDtoDecorator(field) {
if (field.kind === 'enum') {
return this.buildEnumDecorator(field);
}
if (['scalar', 'relation-input', 'object'].includes(field.kind)) {
return this.buildFieldDecorator(field);
}
return '';
}
buildEnumDecorator(field) {
var _a;
const isValid = this.decoratorStrategy.verifyIfDecoratorIsValid((_a = field.documentation) !== null && _a !== void 0 ? _a : '');
return isValid
? `${field.documentation}\n`
: `@ApiProperty({ enum: ${this.prismaTypeConverter.fieldType(field)} })\n`;
}
buildFieldDecorator(field) {
var _a;
const decorators = this.decoratorStrategy.getValidDecorators((_a = field.documentation) !== null && _a !== void 0 ? _a : '');
return (decorators === null || decorators === void 0 ? void 0 : decorators.length) ? `${decorators.join('\n')}` : '';
}
}
exports.TemplateUtilities = TemplateUtilities;