From 97cd8b3b830b0701802fc2f6e7930b2f0fa62328 Mon Sep 17 00:00:00 2001 From: Vitalii Yarmus Date: Mon, 29 Dec 2025 15:28:35 +0200 Subject: [PATCH] HCK-14142: fix the priority of definitions and records in FE on model level --- forward_engineering/api.js | 7 ++++++- forward_engineering/helpers/udtHelper.js | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) 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, };