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

50 lines (49 loc) 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClassMerger = void 0; class ClassMerger { mergeClass(file, genCls) { const name = genCls.getName() || ''; const existCls = file.getClass(name); if (!existCls) { file.addStatements(genCls.getText()); return; } this.mergeProperties(existCls, genCls); } mergeProperties(existCls, genCls) { const genProps = genCls.getProperties(); const genNames = genProps.map((p) => p.getName()); this.addOrUpdateProperties(existCls, genProps); this.removeObsoleteProperties(existCls, genNames); } addOrUpdateProperties(existCls, genProps) { for (const genProp of genProps) { const name = genProp.getName(); const existProp = existCls.getProperty(name); if (!existProp) { existCls.addMember(genProp.getText()); } else { this.updatePropertyType(existProp, genProp); } } } removeObsoleteProperties(existCls, genNames) { for (const existProp of existCls.getProperties()) { const name = existProp.getName(); if (!genNames.includes(name)) { existProp.remove(); } } } updatePropertyType(existProp, genProp) { var _a, _b; const oldType = (_a = existProp.getTypeNode()) === null || _a === void 0 ? void 0 : _a.getText(); const newType = (_b = genProp.getTypeNode()) === null || _b === void 0 ? void 0 : _b.getText(); if (newType && oldType !== newType) { existProp.setType(newType); } } } exports.ClassMerger = ClassMerger;