Skip to content

Commit 3067d4b

Browse files
authored
HCK-14740: Absence of FK constraint in CREATE statement. (#167)
* HCK-14740: Add logic to generate FKs on table level * HCK-14740: Send additional params to generateScript method * HCK-14740: Move logic to separate function * HCK-14740: rename param
1 parent 503fa63 commit 3067d4b

1 file changed

Lines changed: 52 additions & 1 deletion

File tree

forward_engineering/generateScript.js

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,47 @@ const { getIndexes } = require('./helpers/indexHelper');
66
const { buildScript } = require('./helpers/buildScript');
77
const { getIsPkOrFkConstraintAvailable, getIsConstraintAvailable } = require('./helpers/constraintHelper');
88
const { setMinify } = require('./helpers/generalHelper');
9+
const { getForeignKeyStatementsByHashItem } = require('./helpers/foreignKeyHelper');
10+
const { parseEntities } = require('./helpers/parseEntities');
11+
const foreignKeyHelper = require('./helpers/foreignKeyHelper');
12+
13+
const getForeignKeyStatements = ({
14+
jsonSchema,
15+
entityData,
16+
modelDefinitions,
17+
internalDefinitions,
18+
externalDefinitions,
19+
relatedCollectionsJsonSchema = [],
20+
relationships = [],
21+
}) => {
22+
if (!relationships.length || !relatedCollectionsJsonSchema.length) {
23+
return null;
24+
}
25+
26+
const parsedEntitiesById = relatedCollectionsJsonSchema.reduce((result, schema) => {
27+
const data = JSON.parse(schema);
28+
result[data.GUID] = data;
29+
return result;
30+
}, {});
31+
32+
const foreignKeyHashTable = foreignKeyHelper.getForeignKeyHashTable({
33+
relationships,
34+
entities: Object.keys(parsedEntitiesById),
35+
entityData: {
36+
[jsonSchema.GUID]: entityData,
37+
},
38+
jsonSchemas: parsedEntitiesById,
39+
modelDefinitions,
40+
internalDefinitions,
41+
otherDefinitions: [modelDefinitions, externalDefinitions],
42+
isContainerActivated: true,
43+
relatedSchemas: {},
44+
});
45+
46+
return foreignKeyHashTable[jsonSchema.GUID]
47+
? foreignKeyHelper.getForeignKeyStatementsByHashItem(foreignKeyHashTable[jsonSchema.GUID])
48+
: null;
49+
};
950

1051
const generateScript = (data, logger, callback, app) => {
1152
try {
@@ -27,6 +68,16 @@ const generateScript = (data, logger, callback, app) => {
2768
return;
2869
}
2970

71+
const foreignKeys = getForeignKeyStatements({
72+
jsonSchema,
73+
entityData,
74+
modelDefinitions,
75+
internalDefinitions,
76+
externalDefinitions,
77+
relatedCollectionsJsonSchema: data.relatedCollectionsJsonSchema,
78+
relationships: data.modelData.find(modelData => 'relationships' in modelData)?.relationships,
79+
});
80+
3081
callback(
3182
null,
3283
buildScript(
@@ -36,7 +87,7 @@ const generateScript = (data, logger, callback, app) => {
3687
entityData,
3788
jsonSchema,
3889
[modelDefinitions, internalDefinitions, externalDefinitions],
39-
null,
90+
foreignKeys,
4091
areColumnConstraintsAvailable,
4192
isPkOrFkConstraintAvailable,
4293
),

0 commit comments

Comments
 (0)