diff --git a/forward_engineering/hiveHelpers/helpers/alterScriptHelpers/alterForeignKeyHelper.js b/forward_engineering/hiveHelpers/helpers/alterScriptHelpers/alterForeignKeyHelper.js index 8c55bf4..2af4027 100644 --- a/forward_engineering/hiveHelpers/helpers/alterScriptHelpers/alterForeignKeyHelper.js +++ b/forward_engineering/hiveHelpers/helpers/alterScriptHelpers/alterForeignKeyHelper.js @@ -3,9 +3,15 @@ const { prepareName, commentDeactivatedStatements } = require('../generalHelper' const templates = require('./config/templates'); const { getItems } = require('./common'); +const { CONSTRAINT_POSTFIX } = require('../constants'); -const getRelationshipName = relationship => { - return relationship.role.code || relationship.role.name; +const getRelationshipName = (relationship, parentTableName, childTableName) => { + const compMod = relationship.role.compMod; + const name = compMod.code?.new || compMod.name?.new || relationship.role.code || relationship.role.name; + if (name) { + return name; + } + return prepareName([parentTableName, childTableName, CONSTRAINT_POSTFIX.foreignKey].filter(Boolean).join('_')); }; const getFullParentTableName = relationship => { @@ -30,8 +36,7 @@ const getAddSingleForeignKeyScript = provider => relationship => { const parentTableName = getFullParentTableName(relationship); const childTableName = getFullChildTableName(relationship); - const relationshipName = compMod.code?.new || compMod.name?.new || getRelationshipName(relationship) || ''; - const constraintName = prepareName(relationshipName); + const constraintName = getRelationshipName(relationship, parentTableName, childTableName); const childColumns = compMod.child.collection.fkFields.map(field => prepareName(field.name)); const parentColumns = compMod.parent.collection.fkFields.map(field => prepareName(field.name)); const disableNoValidate = relationship.role?.compMod?.customProperties?.new?.disableNoValidate; @@ -53,7 +58,6 @@ const canRelationshipBeAdded = relationship => { return false; } return [ - compMod.code?.new || compMod.name?.new || getRelationshipName(relationship), compMod.parent?.bucket, compMod.parent?.collection, compMod.parent?.collection?.fkFields?.length, diff --git a/forward_engineering/hiveHelpers/helpers/foreignKeyHelper.js b/forward_engineering/hiveHelpers/helpers/foreignKeyHelper.js index ccca33b..4d4b28f 100644 --- a/forward_engineering/hiveHelpers/helpers/foreignKeyHelper.js +++ b/forward_engineering/hiveHelpers/helpers/foreignKeyHelper.js @@ -57,30 +57,24 @@ const getForeignKeyHashTable = ({ } const constraintName = relationship.code || relationship.name; - const parentDifferentSchemaName = prepareName(relatedSchemas[relationship.parentCollection]?.bucketName) || ''; + const parentSchema = + jsonSchemas[relationship.parentCollection] ?? relatedSchemas[relationship.parentCollection]; + const childSchema = jsonSchemas[relationship.childCollection] ?? relatedSchemas[relationship.childCollection]; + const parentDifferentSchemaName = prepareName(parentSchema?.bucketName) || ''; const parentTableData = getTab(0, entityData[relationship.parentCollection]); - const parentTableSingleName = - prepareName(getName(parentTableData) || relatedSchemas[relationship.parentCollection]?.collectionName) || - ''; + const parentTableSingleName = prepareName(getName(parentTableData) || parentSchema?.collectionName) || ''; const parentTableName = parentDifferentSchemaName ? `${parentDifferentSchemaName}.${parentTableSingleName}` : parentTableSingleName; const childTableData = getTab(0, entityData[relationship.childCollection]); - const childTableName = - prepareName(getName(childTableData) || relatedSchemas[relationship.childCollection]?.collectionName) || ''; + const childTableName = prepareName(getName(childTableData) || childSchema?.collectionName) || ''; const groupKey = parentTableName + constraintName; const childFieldActivated = relationship.childField.reduce((isActivated, field) => { - const fieldData = schemaHelper.getItemByPath( - field.slice(1), - jsonSchemas[relationship.childCollection] ?? relatedSchemas[relationship.childCollection], - ); + const fieldData = schemaHelper.getItemByPath(field.slice(1), childSchema); return isActivated && _.get(fieldData, 'isActivated'); }, true); const parentFieldActivated = relationship.parentField.reduce((isActivated, field) => { - const fieldData = schemaHelper.getItemByPath( - field.slice(1), - jsonSchemas[relationship.parentCollection] ?? relatedSchemas[relationship.parentCollection], - ); + const fieldData = schemaHelper.getItemByPath(field.slice(1), parentSchema); return isActivated && _.get(fieldData, 'isActivated'); }, true);