diff --git a/forward_engineering/api.js b/forward_engineering/api.js index 48579c9..f4b1c0d 100644 --- a/forward_engineering/api.js +++ b/forward_engineering/api.js @@ -11,6 +11,7 @@ const { resolveNamespaceReferences, clearDefinitions, resolveSchemaUdt, + getDefinitionsOfCollectionReferences, } = require('./helpers/udtHelper'); const convertSchema = require('./helpers/convertJsonSchemaToAvro'); const { @@ -42,7 +43,10 @@ const generateModelScript = (data, logger, cb, app) => { externalDefinitions: parseJson(externalDefinitions), })); - const script = handleCollectionReferences(entities, options).map(entity => { + const entitiesWithHandledCollectionReferences = handleCollectionReferences(entities, options); + const collectionDefinitions = getDefinitionsOfCollectionReferences(); + + const script = entitiesWithHandledCollectionReferences.map(entity => { try { const { containerData, entityData, jsonSchema, internalDefinitions, references } = entity; @@ -50,6 +54,7 @@ const generateModelScript = (data, logger, cb, app) => { addDefinitions(convertedExternalDefinitions); addDefinitions(convertedModelDefinitions); setUserDefinedTypes(internalDefinitions, true); + addDefinitions(collectionDefinitions); resetDefinitionsUsage(); const settings = getSettings({ containerData, entityData, modelData, references }); diff --git a/forward_engineering/helpers/udtHelper.js b/forward_engineering/helpers/udtHelper.js index 56f206b..1eac587 100644 --- a/forward_engineering/helpers/udtHelper.js +++ b/forward_engineering/helpers/udtHelper.js @@ -369,6 +369,10 @@ const getExternalReferenceDefinition = (field, externalDefinitions) => { }); }; +const getDefinitionsOfCollectionReferences = () => { + return Object.fromEntries(Object.entries(udt).filter(([key, value]) => value?.isCollectionReference)); +}; + module.exports = { resolveUdt, resolveSchemaUdt, @@ -379,4 +383,5 @@ module.exports = { resetDefinitionsUsage, convertCollectionReferences, resolveNamespaceReferences, + getDefinitionsOfCollectionReferences, };