@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
JavaScript
;
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;