diff --git a/src/generators/clean-arch.generator.ts b/src/generators/clean-arch.generator.ts index 878b37d..92fa261 100644 --- a/src/generators/clean-arch.generator.ts +++ b/src/generators/clean-arch.generator.ts @@ -54,6 +54,19 @@ export function generateCleanArchitecture( }; }); + // Collect imports for types referenced via $ref in properties + const referencedTypes = new Set(); + Object.values(rawProperties).forEach((prop) => { + if (prop.$ref) { + referencedTypes.add(prop.$ref.split('/').pop() || ''); + } else if (prop.type === 'array' && prop.items?.$ref) { + referencedTypes.add(prop.items.$ref.split('/').pop() || ''); + } + }); + const modelImports = [...referencedTypes] + .filter(Boolean) + .map((name) => ({ classname: name, classFilename: toCamelCase(name) })); + const modelViewData = { models: [ { @@ -62,6 +75,7 @@ export function generateCleanArchitecture( classFilename: toCamelCase(baseName), classVarName: toCamelCase(baseName), description: schemaObj.description || '', + imports: modelImports, vars: varsMap } } diff --git a/templates/model.mustache b/templates/model.mustache index 8139b1f..4224b8b 100644 --- a/templates/model.mustache +++ b/templates/model.mustache @@ -1,5 +1,8 @@ {{#models}} {{#model}} +{{#imports}} +import { {{classname}} } from './{{classFilename}}.dto'; +{{/imports}} /** * {{classname}} DTO * {{#description}}{{description}}{{/description}}