@@ -6,6 +6,47 @@ const { getIndexes } = require('./helpers/indexHelper');
66const { buildScript } = require ( './helpers/buildScript' ) ;
77const { getIsPkOrFkConstraintAvailable, getIsConstraintAvailable } = require ( './helpers/constraintHelper' ) ;
88const { 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
1051const 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