1
- 'use strict' ;
2
-
3
- const {
4
- retrieveContainerName,
5
- retrieveEntityName,
6
- retrieveUDA,
7
- retrieveUDF,
8
- retrieveIndexes,
9
- retrieveIsItemActivated,
10
- commentDeactivatedStatement,
11
- getUserDefinedAggregations,
12
- getUserDefinedFunctions,
13
- } = require ( './helpers/generalHelper' ) ;
14
- const { getTableStatement } = require ( './helpers/tableHelper' ) ;
15
- const { sortUdt, getUdtMap, getUdtScripts, prepareDefinitions } = require ( './helpers/udtHelper' ) ;
16
- const { getIndexes } = require ( './helpers/indexHelper' ) ;
17
- const { getKeyspaceStatement } = require ( './helpers/keyspaceHelper' ) ;
18
- const { getViewScript } = require ( './helpers/viewHelper' ) ;
19
- const { getCreateTableScript } = require ( './helpers/createHelper' ) ;
20
- const { setDependencies } = require ( './helpers/appDependencies' ) ;
21
1
const { applyToInstance, testConnection } = require ( './helpers/dbConnectionService/index' ) ;
22
- const { getScriptOptions } = require ( './helpers/getScriptOptions' ) ;
23
- const { buildContainerLevelAlterScript, isDropInStatements } = require ( './helpers/alterScriptBuilder' ) ;
2
+ const { generateScript } = require ( './generateScript' ) ;
3
+ const { generateViewScript } = require ( './generateViewScript' ) ;
4
+ const { generateContainerScript } = require ( './generateContainerScript' ) ;
5
+ const { isDropInStatements } = require ( './isDropInStatements' ) ;
24
6
25
7
module . exports = {
26
- generateScript ( data , logger , callback , app ) {
27
- try {
28
- setDependencies ( app ) ;
29
- const { udtTypeMap, modelDefinitions, externalDefinitions } = prepareDefinitions ( data ) ;
30
- const jsonSchema = JSON . parse ( data . jsonSchema ) ;
31
- const internalDefinitions = sortUdt ( JSON . parse ( data . internalDefinitions ) ) ;
32
- data = { ...data , jsonSchema, udtTypeMap, modelDefinitions, externalDefinitions, internalDefinitions } ;
33
-
34
- if ( data . isUpdateScript ) {
35
- data . scriptOptions = getScriptOptions ( data ) ;
36
-
37
- callback ( null , buildContainerLevelAlterScript ( data . jsonSchema , udtTypeMap , data ) ) ;
38
- } else {
39
- const isKeyspaceActivated = retrieveIsItemActivated ( data . containerData ) ;
40
- const statement = `${ getKeyspaceStatement ( data . containerData ) } \n\n${ getCreateTableScript ( data , isKeyspaceActivated ) } ` ;
41
- const script = commentDeactivatedStatement ( statement , isKeyspaceActivated ) ;
42
- callback ( null , script ) ;
43
- }
44
- } catch ( e ) {
45
- logger . log ( 'error' , { message : e . message , stack : e . stack } , 'Cassandra Forward-Engineering Error' ) ;
46
-
47
- setTimeout ( ( ) => {
48
- callback ( { message : e . message , stack : e . stack } ) ;
49
- } , 150 ) ;
50
- }
51
- } ,
52
-
53
- generateViewScript ( data , logger , callback , app ) {
54
- setDependencies ( app ) ;
55
- const viewSchema = JSON . parse ( data . jsonSchema || '{}' ) ;
56
- const entitySchema = JSON . parse ( data . jsonSchema [ viewSchema . viewOn ] || '{}' ) ;
57
-
58
- const script = getViewScript ( {
59
- schema : viewSchema ,
60
- entitySchema,
61
- viewData : data . viewData ,
62
- entityData : data . entityData ,
63
- containerData : data . containerData ,
64
- collectionRefsDefinitionsMap : data . collectionRefsDefinitionsMap ,
65
- ifNotExist : viewSchema . viewIfNotExist ,
66
- } ) ;
67
-
68
- callback ( null , script ) ;
69
- } ,
70
-
71
- generateContainerScript ( data , logger , callback , app ) {
72
- try {
73
- setDependencies ( app ) ;
74
- if ( data . isUpdateScript ) {
75
- const { udtTypeMap, modelDefinitions, externalDefinitions } = prepareDefinitions ( data ) ;
76
- data = { ...data , udtTypeMap, modelDefinitions, externalDefinitions } ;
77
- data . scriptOptions = getScriptOptions ( data ) ;
78
-
79
- const scripts = data . entities . map ( entityId => {
80
- const jsonSchema = JSON . parse ( data . jsonSchema [ entityId ] ) ;
81
- data . internalDefinitions = sortUdt ( JSON . parse ( data . internalDefinitions [ entityId ] ) ) ;
82
- return buildContainerLevelAlterScript ( jsonSchema , data . udtTypeMap , data ) ;
83
- } ) ;
84
- callback ( null , scripts . filter ( Boolean ) . join ( '\n\n' ) ) ;
85
- } else {
86
- const modelDefinitions = sortUdt ( JSON . parse ( data . modelDefinitions ) ) ;
87
- const externalDefinitions = JSON . parse ( data . externalDefinitions ) ;
88
- const containerData = data . containerData ;
89
- let cqlScriptData = [ ] ;
90
-
91
- const containerName = retrieveContainerName ( containerData ) ;
92
- const keyspace = getKeyspaceStatement ( containerData ) ;
93
- const isKeyspaceActivated = retrieveIsItemActivated ( containerData ) ;
94
-
95
- const generalUdtTypeMap = getUdtMap ( [ modelDefinitions , externalDefinitions ] ) ;
96
- let generalUDT = getUdtScripts (
97
- containerName ,
98
- [ externalDefinitions , modelDefinitions ] ,
99
- generalUdtTypeMap ,
100
- isKeyspaceActivated ,
101
- ) ;
102
-
103
- const UDF = getUserDefinedFunctions ( retrieveUDF ( containerData ) ) ;
104
- const UDA = getUserDefinedAggregations ( retrieveUDA ( containerData ) ) ;
105
-
106
- const dbVersion = data . modelData [ 0 ] . dbVersion ;
107
-
108
- cqlScriptData . push ( keyspace , ...generalUDT ) ;
109
-
110
- data . entities . forEach ( entityId => {
111
- const internalDefinitions = sortUdt ( JSON . parse ( data . internalDefinitions [ entityId ] ) ) ;
112
- const jsonSchema = JSON . parse ( data . jsonSchema [ entityId ] ) ;
113
- const entityData = data . entityData [ entityId ] ;
114
- const udtTypeMap = Object . assign (
115
- { } ,
116
- generalUdtTypeMap ,
117
- getUdtMap ( [ internalDefinitions , jsonSchema ] ) ,
118
- ) ;
119
-
120
- const entityName = retrieveEntityName ( entityData ) ;
121
- const isEntityActivated = retrieveIsItemActivated ( entityData ) ;
122
- const dataSources = [ jsonSchema , modelDefinitions , internalDefinitions , externalDefinitions ] ;
123
- const internalUdt = getUdtScripts (
124
- containerName ,
125
- [ internalDefinitions , jsonSchema ] ,
126
- udtTypeMap ,
127
- isKeyspaceActivated && isEntityActivated ,
128
- ) . map ( udtStatement =>
129
- commentDeactivatedStatement ( udtStatement , isEntityActivated , isKeyspaceActivated ) ,
130
- ) ;
131
-
132
- const table = getTableStatement ( {
133
- tableData : jsonSchema ,
134
- tableMetaData : entityData ,
135
- keyspaceMetaData : containerData ,
136
- dataSources,
137
- udtTypeMap,
138
- isKeyspaceActivated,
139
- } ) ;
140
- const indexes = getIndexes (
141
- retrieveIndexes ( entityData , dbVersion ) ,
142
- dataSources ,
143
- entityName ,
144
- containerName ,
145
- isEntityActivated ,
146
- isKeyspaceActivated ,
147
- dbVersion ,
148
- ) ;
149
-
150
- cqlScriptData . push ( ...internalUdt , table , indexes ) ;
151
- } ) ;
152
-
153
- cqlScriptData = cqlScriptData . concat (
154
- data . views . map ( viewId => {
155
- const viewSchema = JSON . parse ( data . jsonSchema [ viewId ] || '{}' ) ;
156
-
157
- return getViewScript ( {
158
- schema : viewSchema ,
159
- viewData : data . viewData [ viewId ] ,
160
- entityData : data . entityData [ viewSchema . viewOn ] ,
161
- containerData : data . containerData ,
162
- collectionRefsDefinitionsMap : data . collectionRefsDefinitionsMap ,
163
- isKeyspaceActivated,
164
- ifNotExist : viewSchema . viewIfNotExist ,
165
- } ) ;
166
- } ) ,
167
- ) ;
168
-
169
- cqlScriptData . push ( UDF , UDA ) ;
170
-
171
- callback ( null , commentDeactivatedStatement ( getScript ( cqlScriptData ) , isKeyspaceActivated ) ) ;
172
- }
173
- } catch ( e ) {
174
- logger . log ( 'error' , { message : e . message , stack : e . stack } , 'Cassandra Forward-Engineering Error' ) ;
175
-
176
- setTimeout ( ( ) => {
177
- callback ( { message : e . message , stack : e . stack } ) ;
178
- } , 150 ) ;
179
- }
180
- } ,
8
+ generateScript,
9
+ generateViewScript,
10
+ generateContainerScript,
11
+ isDropInStatements,
181
12
182
13
applyToInstance ( connectionInfo , logger , callback , app ) {
183
14
logger . clear ( ) ;
@@ -195,36 +26,4 @@ module.exports = {
195
26
testConnection ( connectionInfo , logger , callback , app ) {
196
27
testConnection ( connectionInfo , app ) . then ( callback , callback ) ;
197
28
} ,
198
-
199
- isDropInStatements ( data , logger , callback , app ) {
200
- try {
201
- setDependencies ( app ) ;
202
- let result ;
203
- const { udtTypeMap, modelDefinitions, externalDefinitions } = prepareDefinitions ( data ) ;
204
-
205
- if ( data . level === 'container' ) {
206
- data = { ...data , udtTypeMap, modelDefinitions, externalDefinitions } ;
207
- result = data . entities
208
- . map ( entityId => {
209
- const jsonSchema = JSON . parse ( data . jsonSchema [ entityId ] ) ;
210
- data . internalDefinitions = sortUdt ( JSON . parse ( data . internalDefinitions [ entityId ] ) ) ;
211
- return isDropInStatements ( jsonSchema , data . udtTypeMap , data ) ;
212
- } )
213
- . some ( Boolean ) ;
214
- } else if ( data . level === 'entity' ) {
215
- const jsonSchema = JSON . parse ( data . jsonSchema ) ;
216
- const internalDefinitions = sortUdt ( JSON . parse ( data . internalDefinitions ) ) ;
217
- data = { ...data , udtTypeMap, modelDefinitions, externalDefinitions, jsonSchema, internalDefinitions } ;
218
- result = isDropInStatements ( data . jsonSchema , data . udtTypeMap , data ) ;
219
- }
220
-
221
- callback ( null , result ) ;
222
- } catch ( e ) {
223
- callback ( { message : e . message , stack : e . stack } ) ;
224
- }
225
- } ,
226
- } ;
227
-
228
- const getScript = structure => {
229
- return structure . filter ( item => item ) . join ( '\n\n' ) ;
230
29
} ;
0 commit comments