@izara_project/izara-core-generate-service-code 1.0.68 → 1.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/package.json +1 -1
  2. package/scripts/format-ejs.js +36 -32
  3. package/src/compile/compileProject.js +26 -10
  4. package/src/compile/loadSchemas.js +122 -59
  5. package/src/emit/coreFunction/emitCoreFunctionArtifacts.js +163 -0
  6. package/src/emit/coreFunction/templates/CoreFunction_Yaml.ejs +38 -0
  7. package/src/emit/coreFunction/templates/CoreResource_Yaml.ejs +235 -0
  8. package/src/emit/coreFunction/templates/GenerateSeedDataDynamo_HdrInv.ejs +16 -0
  9. package/src/emit/coreFunction/templates/GenerateSeedDataDynamo_Main.ejs +38 -0
  10. package/src/emit/coreFunction/templates/GenerateSeedDataGraphData_HdrInv.ejs +16 -0
  11. package/src/emit/coreFunction/templates/GenerateSeedDataGraphData_Main.ejs +32 -0
  12. package/src/emit/coreFunction/templates/GenerateSeedDataGraphSchema_HdrInv.ejs +16 -0
  13. package/src/emit/coreFunction/templates/GenerateSeedDataGraphSchema_Main.ejs +71 -0
  14. package/src/emit/coreFunction/templates/GeneratedGraphNodeSchemas.ejs +47 -0
  15. package/src/emit/coreFunction/templates/GeneratedGraphRelSchemas.ejs +27 -0
  16. package/src/emit/coreFunction/templates/GeneratedTableConfigs.ejs +34 -0
  17. package/src/emit/coreFunction/templates/InitialSetupConfig.ejs +108 -0
  18. package/src/emit/coreFunction/templates/InitialSetup_HdrInv.ejs +12 -0
  19. package/src/emit/coreFunction/templates/InitialSetup_Main.ejs +51 -0
  20. package/src/emit/coreFunction/templates/RemoveSeedDataDynamo_HdrInv.ejs +16 -0
  21. package/src/emit/coreFunction/templates/RemoveSeedDataDynamo_Main.ejs +31 -0
  22. package/src/emit/coreFunction/templates/UploadSchema_HdrInv.ejs +37 -0
  23. package/src/emit/coreFunction/templates/UploadSchema_Main.ejs +52 -0
  24. package/src/emit/crud/emitCrudApplicationArtifacts.js +194 -41
  25. package/src/emit/crud/emitDynamicCrudFlowSchemas.js +34 -17
  26. package/src/emit/crud/generateCrudApplicationArtifacts.js +14 -6
  27. package/src/emit/crud/generateDynamicCrudFlowSchemas.js +4 -1
  28. package/src/emit/crud/templates/CreateEndpoint_Main.ejs +1 -1
  29. package/src/emit/crud/templates/DeleteEndpoint_Main.ejs +1 -1
  30. package/src/emit/crud/templates/GetEndpoint_Main.ejs +2 -2
  31. package/src/emit/crud/templates/GetRangeEndpoint_Main.ejs +1 -1
  32. package/src/emit/crud/templates/UpdateEndpoint_Main.ejs +1 -1
  33. package/src/emit/custom/customFlows.js +23 -13
  34. package/src/emit/custom/emitCustomFlowApplicationArtifacts.js +535 -114
  35. package/src/emit/custom/generateCustomFlowApplicationArtifacts.js +28 -8
  36. package/src/emit/custom/templates/FlowEndpoint_Main.ejs +2 -2
  37. package/src/emit/custom/templates/FlowStep_Main.ejs +1 -1
  38. package/src/emit/custom/templates/s3/CreateObject_Main.ejs +1 -1
  39. package/src/emit/custom/templates/s3/FlowHandler_HdrS3.ejs +2 -2
  40. package/src/emit/custom/templates/s3/ReservedLimit_HdrSqs.ejs +1 -1
  41. package/src/emit/custom/templates/s3/ReservedLimit_Main.ejs +1 -1
  42. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_HdrSqs.ejs +4 -4
  43. package/src/emit/function/functionYamlArtifact.js +273 -97
  44. package/src/emit/function/templates/ApiFunction_Yaml.ejs +7 -0
  45. package/src/emit/function/templates/EventBridgeFunction_Yaml.ejs +6 -0
  46. package/src/emit/function/templates/InvFunction_Yaml.ejs +5 -0
  47. package/src/emit/function/templates/S3Function_Yaml.ejs +16 -0
  48. package/src/emit/function/templates/SqsFunction_Yaml.ejs +10 -0
  49. package/src/emit/function/templates/WbsFunction_Yaml.ejs +10 -0
  50. package/src/emit/rbac/emitDynamicRbacFlowSchemas.js +28 -30
  51. package/src/emit/rbac/emitRbacApplicationArtifacts.js +6 -6
  52. package/src/emit/rbac/generateCreateTargetRoleHandler.js +6 -4
  53. package/src/emit/rbac/generateDynamicRbacFlowSchemas.js +8 -2
  54. package/src/emit/rbac/rbacFlowTag.js +3 -1
  55. package/src/emit/rbac/templates/UserRbacFlow_Main.ejs +1 -1
  56. package/src/emit/relationship/emitDynamicRelationshipFlowSchemas.js +26 -10
  57. package/src/emit/relationship/emitRelationshipApplicationArtifacts.js +189 -37
  58. package/src/emit/relationship/generateDynamicRelationshipFlowSchemas.js +8 -2
  59. package/src/emit/relationship/generateRelationshipApplicationArtifacts.js +15 -6
  60. package/src/emit/relationship/templates/ChangeRelationship_Main.ejs +1 -1
  61. package/src/emit/relationship/templates/CreateRelationship_Main.ejs +1 -1
  62. package/src/emit/relationship/templates/DeleteRelationship_Main.ejs +1 -1
  63. package/src/emit/relationship/templates/GetRelationship_Main.ejs +1 -1
  64. package/src/emit/relationship/templates/MoveRelationship_Main.ejs +1 -1
  65. package/src/emit/relationship/templates/UpdateRelationship_Main.ejs +1 -1
  66. package/src/emit/resource/emitResourceArtifacts.js +249 -123
  67. package/src/emit/resource/generateResourceArtifacts.js +15 -6
  68. package/src/emit/resource/templates/DynamoDBTable_Yaml.ejs +18 -18
  69. package/src/emit/resource/templates/FlowOut_Yaml.ejs +5 -5
  70. package/src/emit/resource/templates/GeneratedLambdaRoleServiceConfig.ejs +10 -9
  71. package/src/emit/resource/templates/ResourceBeforeLogicalYaml.ejs +44 -44
  72. package/src/emit/resource/templates/ResourceSqsYaml.ejs +36 -36
  73. package/src/emit/resource/templates/ResourceYaml.ejs +48 -48
  74. package/src/emit/resource/templates/S3Subscription_Yaml.ejs +7 -0
  75. package/src/emit/resource/templates/SharedResource_Yaml.ejs +11 -11
  76. package/src/emit/resource/templates/SystemDynamoDB_Yaml.ejs +122 -105
  77. package/src/emit/resource/templates/WebSocketSubscription_Yaml.ejs +7 -0
  78. package/src/emit/shared/templates/FindData_HdrSqs.ejs +120 -0
  79. package/src/emit/shared/templates/FindData_Main.ejs +345 -0
  80. package/src/emit/{crud → shared}/templates/FlowHandler_HdrApi.ejs +1 -1
  81. package/src/emit/{relationship → shared}/templates/FlowHandler_HdrDsq.ejs +4 -4
  82. package/src/emit/{crud → shared}/templates/FlowHandler_HdrInv.ejs +1 -1
  83. package/src/emit/{crud → shared}/templates/FlowHandler_HdrSqs.ejs +4 -4
  84. package/src/emit/shared/templates/PaginateProcessLogical_HdrDsq.ejs +162 -0
  85. package/src/emit/shared/templates/PaginateProcessLogical_HdrSqs.ejs +140 -0
  86. package/src/emit/shared/templates/PaginateProcessLogical_Main.ejs +268 -0
  87. package/src/emit/{relationship/templates/FlowHandler_HdrSqs.ejs → shared/templates/ProcessLogical_HdrSqs.ejs} +40 -55
  88. package/src/emit/shared/templates/ProcessLogical_Main.ejs +448 -0
  89. package/src/emit/system/emitSystemFindDataArtifacts.js +266 -0
  90. package/src/emit/system/emitSystemWebSocketArtifacts.js +61 -165
  91. package/src/emit/system/templates/WebSocketComplete_HdrSqs.ejs +48 -0
  92. package/src/emit/system/templates/WebSocketComplete_Main.ejs +91 -0
  93. package/src/emit/system/templates/WebSocketComplete_Yaml.ejs +19 -0
  94. package/src/emit/system/templates/WebSocketConnect.ejs +45 -0
  95. package/src/emit/system/templates/WebSocketConnect_Yaml.ejs +11 -0
  96. package/src/generate.js +166 -36
  97. package/src/generateIntTest.js +76 -28
  98. package/src/generateResourceIntTest.js +35 -12
  99. package/src/generateResources/IntTest/generateResources/generateResources.js +5 -2
  100. package/src/generateResources/IntTest/generateResources/templateResources.ejs +18 -30
  101. package/src/generateResources/IntTest/generateTests/events/events.js +1 -1
  102. package/src/generateResources/IntTest/generateTests/events/templateEvents.ejs +13 -10
  103. package/src/generateResources/IntTest/generateTests/generateTemplate.js +2 -2
  104. package/src/generateResources/IntTest/generateTests/pathIntTest/pathIntTest.js +2 -1
  105. package/src/generateResources/IntTest/generateTests/pathIntTest/template.ejs +1 -3
  106. package/src/generateResources/IntTest/generateTests/tests/templateTests.ejs +1 -1
  107. package/src/generateResources/IntTest/generateTests/tests/tests.js +7 -3
  108. package/src/generateResources/IntTest/libs/{libs.js → IntTestGenerateLib.js} +34 -23
  109. package/src/generateResources/IntTest/upload/uploadIntTest.js +33 -19
  110. package/src/intTestGeneratorShared.js +15 -10
  111. package/src/output/commitArtifacts.js +99 -39
  112. package/src/output/mergeHooks.js +34 -21
  113. package/src/output/validateArtifacts.js +37 -27
  114. package/src/plan/buildGenerationPlan.js +24 -13
  115. package/test/core.test.js +117 -58
  116. package/test/createTargetRoleHandler.test.js +1 -1
  117. package/test/crudApplicationArtifacts.test.js +132 -31
  118. package/test/customFlowApplicationArtifacts.test.js +353 -71
  119. package/test/dynamicCrudFlowSchemas.test.js +74 -26
  120. package/test/dynamicRbacFlowSchemas.test.js +61 -14
  121. package/test/dynamicRelationshipFlowSchemas.test.js +65 -18
  122. package/test/functionYamlArtifact.test.js +67 -10
  123. package/test/intTestApi.test.js +9 -10
  124. package/test/publicApi.test.js +178 -36
  125. package/test/relationshipApplicationArtifacts.test.js +90 -19
  126. package/test/resourceArtifacts.test.js +173 -33
  127. package/src/emit/relationship/dynamicRelationshipFlowSchemaTemplate.js +0 -11
  128. package/src/emit/relationship/templates/FlowHandler_HdrApi.ejs +0 -59
  129. package/src/emit/relationship/templates/FlowHandler_HdrInv.ejs +0 -47
@@ -0,0 +1,235 @@
1
+ Resources:
2
+ UploadSchemaRole:
3
+ Type: AWS::IAM::Role
4
+ Properties:
5
+ RoleName: ${self:custom.iz_resourcePrefix}UploadSchemaRole
6
+ AssumeRolePolicyDocument:
7
+ Version: '2012-10-17'
8
+ Statement:
9
+ - Effect: Allow
10
+ Principal:
11
+ Service: 'lambda.amazonaws.com'
12
+ Action: sts:AssumeRole
13
+ #<#UploadSchemaRoleAssumeRoleStatementHookCode#>
14
+ #<#/UploadSchemaRoleAssumeRoleStatementHookCode#>
15
+ ManagedPolicyArns:
16
+ - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
17
+ #<#UploadSchemaRoleManagedPolicyArns#>
18
+ #<#/UploadSchemaRoleManagedPolicyArns#>
19
+ Policies:
20
+ - PolicyName: ${self:custom.iz_resourcePrefix}UploadSchemaPolicy
21
+ PolicyDocument:
22
+ Version: '2012-10-17'
23
+ Statement:
24
+ - Effect: Allow
25
+ Action:
26
+ - s3:PutObject
27
+ - s3:GetObject
28
+ - s3:ListBucket
29
+ - s3:DeleteObject
30
+ Resource:
31
+ - arn:aws:s3:::${self:custom.iz_serviceSchemaBucketName}
32
+ - arn:aws:s3:::${self:custom.iz_serviceSchemaBucketName}/*
33
+ - arn:aws:s3:::${self:custom.iz_serviceSchemaBucketName}/perServiceSchemas/${self:custom.iz_serviceTag}/*
34
+ - Effect: Allow
35
+ Action:
36
+ - apigateway:GET
37
+ Resource:
38
+ - arn:aws:apigateway:${self:custom.iz_region}::/*
39
+ - Effect: Allow
40
+ Action:
41
+ - lambda:InvokeFunction
42
+ Resource:
43
+ - arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:${self:custom.iz_resourcePrefix}AddLinkCreateByRelHdrInv
44
+ - arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:${self:custom.iz_resourcePrefix}AddLinkBelongToHdrInv
45
+ - arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:GraphHandler${self:custom.iz_stage}CreateAllIndexSchemasHdrInv
46
+ - arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:TranslateIds${self:custom.iz_stage}CreatePermissionHdrInv
47
+ - arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:Translations${self:custom.iz_stage}AddLinkToTranslationLinksHdrInv
48
+ - Effect: Allow
49
+ Action:
50
+ - sns:Publish
51
+ Resource:
52
+ - arn:aws:sns:${self:custom.iz_region}:${self:custom.iz_accountId}:Translations_${self:custom.iz_stage}_RegisterSystemTag_In
53
+ #<#UploadSchemaRoleStatementHookCode#>
54
+ #<#/UploadSchemaRoleStatementHookCode#>
55
+
56
+ GenerateSeedDynamoRole:
57
+ Type: AWS::IAM::Role
58
+ Properties:
59
+ RoleName: ${self:custom.iz_resourcePrefix}GenerateSeedDynamoRole
60
+ AssumeRolePolicyDocument:
61
+ Version: '2012-10-17'
62
+ Statement:
63
+ - Effect: Allow
64
+ Principal:
65
+ Service: lambda.amazonaws.com
66
+ Action: sts:AssumeRole
67
+ #<#GenerateSeedDynamoRoleAssumeRoleStatementHookCode#>
68
+ #<#/GenerateSeedDynamoRoleAssumeRoleStatementHookCode#>
69
+ ManagedPolicyArns:
70
+ - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
71
+ #<#GenerateSeedDynamoRoleManagedPolicyArns#>
72
+ #<#/GenerateSeedDynamoRoleManagedPolicyArns#>
73
+ Policies:
74
+ - PolicyName: ${self:custom.iz_resourcePrefix}GenerateSeedDynamoPolicy
75
+ PolicyDocument:
76
+ Version: '2012-10-17'
77
+ Statement:
78
+ - Effect: Allow
79
+ Action:
80
+ - dynamodb:PutItem
81
+ Resource:
82
+ - arn:aws:dynamodb:${self:custom.iz_region}:${self:custom.iz_accountId}:table/${self:custom.iz_resourcePrefix}Config
83
+ #<#GenerateSeedDynamoRoleStatementHookCode#>
84
+ #<#/GenerateSeedDynamoRoleStatementHookCode#>
85
+
86
+ GenerateSeedGraphRole:
87
+ Type: AWS::IAM::Role
88
+ Properties:
89
+ RoleName: ${self:custom.iz_resourcePrefix}GenerateSeedGraphRole
90
+ AssumeRolePolicyDocument:
91
+ Version: '2012-10-17'
92
+ Statement:
93
+ - Effect: Allow
94
+ Principal:
95
+ Service: lambda.amazonaws.com
96
+ Action: sts:AssumeRole
97
+ #<#GenerateSeedGraphRoleAssumeRoleStatementHookCode#>
98
+ #<#/GenerateSeedGraphRoleAssumeRoleStatementHookCode#>
99
+ ManagedPolicyArns:
100
+ - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
101
+ #<#GenerateSeedGraphRoleManagedPolicyArns#>
102
+ #<#/GenerateSeedGraphRoleManagedPolicyArns#>
103
+ Policies:
104
+ - PolicyName: ${self:custom.iz_resourcePrefix}GenerateSeedGraphPolicy
105
+ PolicyDocument:
106
+ Version: '2012-10-17'
107
+ Statement:
108
+ - Effect: Allow
109
+ Action:
110
+ - dynamodb:GetItem
111
+ Resource:
112
+ - arn:aws:dynamodb:${self:custom.iz_region}:${self:custom.iz_accountId}:table/${self:custom.iz_resourcePrefix}Config
113
+ - Effect: Allow
114
+ Action:
115
+ - SNS:Publish
116
+ Resource:
117
+ - arn:aws:sns:${self:custom.iz_region}:${self:custom.iz_accountId}:GraphHandler_${self:custom.iz_stage}_CreateNode_In
118
+ - arn:aws:sns:${self:custom.iz_region}:${self:custom.iz_accountId}:GraphHandler_${self:custom.iz_stage}_UpdateNode_In
119
+ - arn:aws:sns:${self:custom.iz_region}:${self:custom.iz_accountId}:GraphHandler_${self:custom.iz_stage}_CreateRelationship_In
120
+ #<#GenerateSeedGraphRoleStatementHookCode#>
121
+ #<#/GenerateSeedGraphRoleStatementHookCode#>
122
+
123
+ GenerateGraphSchemaRole:
124
+ Type: AWS::IAM::Role
125
+ Properties:
126
+ RoleName: ${self:custom.iz_resourcePrefix}GenerateGraphSchemaRole
127
+ AssumeRolePolicyDocument:
128
+ Version: '2012-10-17'
129
+ Statement:
130
+ - Effect: Allow
131
+ Principal:
132
+ Service: lambda.amazonaws.com
133
+ Action: sts:AssumeRole
134
+ #<#GenerateGraphSchemaRoleAssumeRoleStatementHookCode#>
135
+ #<#/GenerateGraphSchemaRoleAssumeRoleStatementHookCode#>
136
+ ManagedPolicyArns:
137
+ - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
138
+ #<#GenerateGraphSchemaRoleManagedPolicyArns#>
139
+ #<#/GenerateGraphSchemaRoleManagedPolicyArns#>
140
+ Policies:
141
+ - PolicyName: ${self:custom.iz_resourcePrefix}GenerateGraphSchemaPolicy
142
+ PolicyDocument:
143
+ Version: '2012-10-17'
144
+ Statement:
145
+ - Effect: Allow
146
+ Action:
147
+ - lambda:InvokeFunction
148
+ - dynamodb:GetItem
149
+ Resource:
150
+ - arn:aws:dynamodb:${self:custom.iz_region}:${self:custom.iz_accountId}:table/*NodeSchema
151
+ - arn:aws:dynamodb:${self:custom.iz_region}:${self:custom.iz_accountId}:table/*RelationshipSchema
152
+ - arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:*AddNodeSchemasHdrInv
153
+ - arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:*AddRelationshipSchemasHdrInv
154
+ #<#GenerateGraphSchemaRoleStatementHookCode#>
155
+ #<#/GenerateGraphSchemaRoleStatementHookCode#>
156
+
157
+ RemoveSeedDataDynamoRole:
158
+ Type: AWS::IAM::Role
159
+ Properties:
160
+ RoleName: ${self:custom.iz_resourcePrefix}RemoveSeedDataDynamoRole
161
+ AssumeRolePolicyDocument:
162
+ Version: '2012-10-17'
163
+ Statement:
164
+ - Effect: Allow
165
+ Principal:
166
+ Service: lambda.amazonaws.com
167
+ Action: sts:AssumeRole
168
+ #<#RemoveSeedDataDynamoRoleAssumeRoleStatementHookCode#>
169
+ #<#/RemoveSeedDataDynamoRoleAssumeRoleStatementHookCode#>
170
+ ManagedPolicyArns:
171
+ - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
172
+ #<#RemoveSeedDataDynamoRoleManagedPolicyArns#>
173
+ #<#/RemoveSeedDataDynamoRoleManagedPolicyArns#>
174
+ Policies:
175
+ - PolicyName: ${self:custom.iz_resourcePrefix}RemoveSeedDataDynamoPolicy
176
+ PolicyDocument:
177
+ Version: '2012-10-17'
178
+ Statement:
179
+ - Effect: Allow
180
+ Action:
181
+ - dynamodb:Scan
182
+ - dynamodb:DescribeTable
183
+ - dynamodb:GetItem
184
+ - dynamodb:PutItem
185
+ - dynamodb:DeleteItem
186
+ Resource:
187
+ - arn:aws:dynamodb:${self:custom.iz_region}:${self:custom.iz_accountId}:table/${self:custom.iz_resourcePrefix}Config
188
+ #<#RemoveSeedDataDynamoRoleStatementHookCode#>
189
+ #<#/RemoveSeedDataDynamoRoleStatementHookCode#>
190
+
191
+ InitialSetupRole:
192
+ Type: AWS::IAM::Role
193
+ Properties:
194
+ RoleName: ${self:custom.iz_resourcePrefix}InitialSetupRole
195
+ AssumeRolePolicyDocument:
196
+ Version: '2012-10-17'
197
+ Statement:
198
+ - Effect: Allow
199
+ Principal:
200
+ Service: lambda.amazonaws.com
201
+ Action: sts:AssumeRole
202
+ #<#InitialSetupRoleAssumeRoleStatementHookCode#>
203
+ #<#/InitialSetupRoleAssumeRoleStatementHookCode#>
204
+ ManagedPolicyArns:
205
+ - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
206
+ - arn:aws:iam::aws:policy/IAMFullAccess
207
+ #<#InitialSetupRoleManagedPolicyArns#>
208
+ #<#/InitialSetupRoleManagedPolicyArns#>
209
+ Policies:
210
+ - PolicyName: ${self:custom.iz_resourcePrefix}InitialSetupPolicy
211
+ PolicyDocument:
212
+ Version: '2012-10-17'
213
+ Statement:
214
+ - Effect: Allow
215
+ Action:
216
+ - dynamodb:PutItem
217
+ - dynamodb:GetItem
218
+ Resource:
219
+ - arn:aws:dynamodb:${self:custom.iz_region}:${self:custom.iz_accountId}:table/${self:custom.iz_resourcePrefix}Config
220
+ - Effect: Allow
221
+ Action:
222
+ - lambda:InvokeFunction
223
+ - dynamodb:GetItem
224
+ Resource:
225
+ - arn:aws:dynamodb:${self:custom.iz_region}:${self:custom.iz_accountId}:table/*NodeSchema
226
+ - arn:aws:dynamodb:${self:custom.iz_region}:${self:custom.iz_accountId}:table/*RelationshipSchema
227
+ - arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:*AddNodeSchemasHdrInv
228
+ - arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:*AddRelationshipSchemasHdrInv
229
+ - Effect: Allow
230
+ Action:
231
+ - sns:Publish
232
+ Resource:
233
+ - arn:aws:sns:${self:custom.iz_region}:${self:custom.iz_accountId}:*
234
+ #<#InitialSetupRoleStatementHookCode#>
235
+ #<#/InitialSetupRoleStatementHookCode#>
@@ -0,0 +1,16 @@
1
+ import { middlewareHandler as middleware } from '@izara_project/izara-middleware';
2
+ import generateMain from './GenerateSeedDataDynamo_Main.js';
3
+
4
+ const main = middleware.wrap(async (event, context, callback) => {
5
+ event._izContext.logger.debug('Event:', event);
6
+ event._izContext.logger.debug('context:', context);
7
+
8
+ try {
9
+ return await generateMain.generateSeedDataDynamo(event);
10
+ } catch (err) {
11
+ event._izContext.logger.error('Error, GenerateSeedDataDynamo_HdrInv: ', err);
12
+ throw err;
13
+ }
14
+ });
15
+
16
+ export { main };
@@ -0,0 +1,38 @@
1
+ import Logger from '@izara_project/izara-core-library-logger';
2
+ import correlationIds from '@izara_project/izara-core-library-correlation-ids';
3
+ import initialSetupSharedLib from '@izara_project/izara-core-library-initial-setup';
4
+ import config from './InitialSetupConfig.js';
5
+
6
+ const generateSeedDataDynamo = async (params) => {
7
+ const _izContext = {
8
+ correlationIds: correlationIds,
9
+ logger: Logger
10
+ };
11
+ try {
12
+ Logger.debug('======== Start Generate Seed Data ========', { params });
13
+
14
+ // // === generate new seed data test env ===
15
+ // --- generate new both
16
+ // await initialSetupSharedLib.generateSeedData(initialSetupServiceConfig) // prod
17
+ await initialSetupSharedLib.generateSeedDataTestEnv(
18
+ _izContext,
19
+ // test env
20
+ config.tableConfigs,
21
+ config.tableConfigsTestEnv,
22
+ config.paths.seedDataFilepath,
23
+ params.folderName,
24
+ params.bucketS3
25
+ );
26
+
27
+ // // ===== Generate all new initial setup =====
28
+ // await initialSetupSharedLib.removeUserAccountTestEnv()
29
+ // await initialSetupSharedLib.generateUserAccountTestEnv(initialSetupConfigTestEnv.seedUserFilepath)
30
+
31
+ console.log('-------- Finish GenerateSeedDataDynamoTestEnv --------');
32
+ return 'Finish GenerateSeedDataDynamoTestEnv';
33
+ } catch (err) {
34
+ console.log(err);
35
+ }
36
+ };
37
+
38
+ export default { generateSeedDataDynamo };
@@ -0,0 +1,16 @@
1
+ import { middlewareHandler as middleware } from '@izara_project/izara-middleware';
2
+ import generateMain from './GenerateSeedDataGraphData_Main.js';
3
+
4
+ const main = middleware.wrap(async (event, context, callback) => {
5
+ event._izContext.logger.debug('Event:', event);
6
+ event._izContext.logger.debug('context:', context);
7
+
8
+ try {
9
+ return await generateMain.generateSeedDataGraphData(event);
10
+ } catch (err) {
11
+ event._izContext.logger.error('Error, GenerateSeedDataGraphData_HdrInv: ', err);
12
+ throw err;
13
+ }
14
+ });
15
+
16
+ export { main };
@@ -0,0 +1,32 @@
1
+ import CorrelationIds from '@izara_project/izara-core-library-correlation-ids';
2
+ import Logger from '@izara_project/izara-core-library-logger';
3
+ import IntegrationTestDetail from '@izara_project/izara-core-library-integration-tests/src/IntegrationTests.js';
4
+ const _izContext = { CorrelationIds, Logger, IntegrationTestDetail };
5
+ import { consts } from '@izara_project/izara-core-library-core';
6
+
7
+ import initialSetupSharedLib from '@izara_project/izara-core-library-initial-setup';
8
+ import config from './InitialSetupConfig.js';
9
+
10
+ const generateSeedDataGraphData = async (event) => {
11
+ try {
12
+ _izContext.correlationIds = new CorrelationIds();
13
+ _izContext.correlationIds.set(consts.BASE_USER_ID, config.paths.userId);
14
+ _izContext.correlationIds.set(
15
+ consts.RESOURCE_USE_USER_ID,
16
+ config.paths.userId
17
+ );
18
+
19
+ await initialSetupSharedLib.generateSeedDataGraphHandler(
20
+ _izContext,
21
+ config.paths.seedGraphFilepath // path
22
+ );
23
+
24
+ console.log('-------- Finished createSeedDataToGraph --------');
25
+ return '-------- Finished createSeedDataToGraph --------';
26
+ } catch (err) {
27
+ console.log(err);
28
+ throw err;
29
+ }
30
+ };
31
+
32
+ export default { generateSeedDataGraphData };
@@ -0,0 +1,16 @@
1
+ import { middlewareHandler as middleware } from '@izara_project/izara-middleware';
2
+ import generateMain from './GenerateSeedDataGraphSchema_Main.js';
3
+
4
+ const main = middleware.wrap(async (event, context, callback) => {
5
+ event._izContext.logger.debug('Event:', event);
6
+ event._izContext.logger.debug('context:', context);
7
+
8
+ try {
9
+ return await generateMain.generateSeedDataGraphSchema(event);
10
+ } catch (err) {
11
+ event._izContext.logger.error('Error, GenerateSeedDataGraphSchema_HdrInv: ', err);
12
+ throw err;
13
+ }
14
+ });
15
+
16
+ export { main };
@@ -0,0 +1,71 @@
1
+ import initialSetupSharedLib from '@izara_project/izara-core-library-initial-setup';
2
+ import Logger from '@izara_project/izara-core-library-logger';
3
+ import correlationIds from '@izara_project/izara-core-library-correlation-ids';
4
+
5
+ // require schema from prod env
6
+ import nodeSchemas from '../../../DataSchema/GraphNodes.js';
7
+ import relationshipSchemas from '../../../DataSchema/GraphRelationships.js';
8
+ import versionedData from '../../../DataSchema/GraphVersionedData.js';
9
+ const [versionedDataNodeSchemas, versionedDataRelationshipSchemas] =
10
+ versionedData();
11
+
12
+ // require schema from test env
13
+ import config from './InitialSetupConfig.js';
14
+ const [
15
+ versionedDataNodeSchemasTestEnv,
16
+ versionedDataRelationshipSchemasTestEnv
17
+ ] = config.graphVersionedDataSchemas();
18
+
19
+ const generateSeedDataGraphSchema = async (event) => {
20
+ const _izContext = {
21
+ correlationIds: correlationIds,
22
+ logger: Logger
23
+ };
24
+ try {
25
+ console.log('====== Start refresh Seed Data: graph schema ======');
26
+
27
+ // for production env
28
+ await initialSetupSharedLib.generateSchema(_izContext, nodeSchemas(), 'node'); // node schema
29
+ await initialSetupSharedLib.generateSchema(
30
+ _izContext,
31
+ relationshipSchemas(),
32
+ 'relationship'
33
+ ); // relationship schema
34
+ await initialSetupSharedLib.generateSchema(
35
+ _izContext,
36
+ versionedDataNodeSchemas,
37
+ 'node'
38
+ ); // node version data schema
39
+ await initialSetupSharedLib.generateSchema(
40
+ _izContext,
41
+ versionedDataRelationshipSchemas,
42
+ 'relationship'
43
+ ); // relationship version data schema
44
+
45
+ // for test env
46
+ await initialSetupSharedLib.generateSchema(_izContext, config.graphNodeSchemas(), 'node'); // node schema
47
+ await initialSetupSharedLib.generateSchema(
48
+ _izContext,
49
+ config.graphRelationshipSchemas(),
50
+ 'relationship'
51
+ ); // relationship schema
52
+ await initialSetupSharedLib.generateSchema(
53
+ _izContext,
54
+ versionedDataNodeSchemasTestEnv,
55
+ 'node'
56
+ ); // node version data schema
57
+ await initialSetupSharedLib.generateSchema(
58
+ _izContext,
59
+ versionedDataRelationshipSchemasTestEnv,
60
+ 'relationship'
61
+ ); // relationship version data schema
62
+
63
+ console.log('-------- Finish GenerateSeedDataGraphSchemaTestEnv --------');
64
+ return 'Finish GenerateSeedDataGraphSchemaTestEnv';
65
+ } catch (err) {
66
+ console.log(err);
67
+ throw err;
68
+ }
69
+ };
70
+
71
+ export default { generateSeedDataGraphSchema };
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Auto-generated by Code Generator — DO NOT EDIT
3
+ */
4
+
5
+ export function generatedGraphNodeSchemas() {
6
+ const schemas = {};
7
+
8
+ <% objects.forEach(obj => { -%>
9
+ <% if (obj.storageResources && obj.storageResources.graph) { -%>
10
+ const serverTag_<%= obj.objectType %> = '<%= obj.storageResources.graph.graphServerTag %>';
11
+ if (!schemas[serverTag_<%= obj.objectType %>]) {
12
+ schemas[serverTag_<%= obj.objectType %>] = {};
13
+ }
14
+
15
+ schemas[serverTag_<%= obj.objectType %>].<%= obj.objectType %> = {
16
+ identifier: true,
17
+ immutable: false,
18
+ restrictProperties: false,
19
+ restrictRelationships: false,
20
+ properties: {
21
+ <% if (obj.identifiers && obj.identifiers.length > 0) { -%>
22
+ <% obj.identifiers.forEach(id => { -%>
23
+ <%= id.fieldName %>: {
24
+ identifier: true,
25
+ immutable: true
26
+ },
27
+ <% }); -%>
28
+ <% } -%>
29
+ <% if (obj.fieldNames) { -%>
30
+ <% Object.keys(obj.fieldNames).forEach(fieldName => { -%>
31
+ <% const isId = obj.identifiers && obj.identifiers.some(i => i.fieldName === fieldName); -%>
32
+ <% if (!isId) { -%>
33
+ <%= fieldName %>: {
34
+ identifier: false,
35
+ immutable: <%= obj.fieldNames[fieldName].canUpdate === false ? 'true' : 'false' %>
36
+ },
37
+ <% } -%>
38
+ <% }); -%>
39
+ <% } -%>
40
+ }
41
+ };
42
+
43
+ <% } -%>
44
+ <% }); -%>
45
+
46
+ return schemas;
47
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Auto-generated by Code Generator — DO NOT EDIT
3
+ */
4
+
5
+ export function generatedGraphRelationshipSchemas() {
6
+ const schemas = {};
7
+
8
+ <% relationships.forEach(relObj => { -%>
9
+ <% const relName = Object.keys(relObj)[0]; -%>
10
+ <% const relData = relObj[relName]; -%>
11
+ <% if (relData && relData.storageResources && relData.storageResources.graph) { -%>
12
+ const serverTag_<%= relName %> = '<%= relData.storageResources.graph.graphServerTag %>';
13
+ if (!schemas[serverTag_<%= relName %>]) {
14
+ schemas[serverTag_<%= relName %>] = {};
15
+ }
16
+
17
+ schemas[serverTag_<%= relName %>].<%= relName %> = {
18
+ immutable: false,
19
+ restrictProperties: false,
20
+ properties: {}
21
+ };
22
+
23
+ <% } -%>
24
+ <% }); -%>
25
+
26
+ return schemas;
27
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Auto-generated by Code Generator — DO NOT EDIT
3
+ */
4
+
5
+ // Prod table configs (ตารางที่ Service นี้เป็นเจ้าของ)
6
+ export const prodTableConfigs = {
7
+ Config: {}
8
+ <% objects.forEach(obj => { -%>
9
+ <% if (obj.storageResources && obj.storageResources.dynamo) { -%>
10
+ , <%= obj.storageResources.dynamo.tableName %>: {}
11
+ <% } -%>
12
+ <% }); -%>
13
+ };
14
+
15
+ // Test table configs (flag สำหรับ refresh seed data)
16
+ export const testTableConfigs = {
17
+ Config: {
18
+ clearDataWhenRefresh: true,
19
+ rawSource: false
20
+ },
21
+ GraphHandlerNodeSchema: {
22
+ clearDataWhenRefresh: true
23
+ },
24
+ GraphHandlerRelationshipSchema: {
25
+ clearDataWhenRefresh: true
26
+ }
27
+ <% objects.forEach(obj => { -%>
28
+ <% if (obj.storageResources && obj.storageResources.dynamo) { -%>
29
+ , <%= obj.storageResources.dynamo.tableName %>: {
30
+ clearDataWhenRefresh: true
31
+ }
32
+ <% } -%>
33
+ <% }); -%>
34
+ };
@@ -0,0 +1,108 @@
1
+ /*
2
+ Copyright (C) 2020 Sven Mason <http://izara.io>
3
+
4
+ This program is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU Affero General Public License as
6
+ published by the Free Software Foundation, either version 3 of the
7
+ License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU Affero General Public License for more details.
13
+
14
+ You should have received a copy of the GNU Affero General Public License
15
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+
18
+ import Logger from '@izara_project/izara-core-library-logger';
19
+ import graphSharedLib from '@izara_project/izara-core-library-graph-service';
20
+
21
+ // Auto-generated configurations
22
+ import { prodTableConfigs, testTableConfigs } from './generated/GeneratedTableConfigs.js';
23
+ import { generatedGraphNodeSchemas } from './generated/GeneratedGraphNodeSchemas.js';
24
+ import { generatedGraphRelationshipSchemas } from './generated/GeneratedGraphRelSchemas.js';
25
+
26
+ // ============================================================
27
+ // External Service Config
28
+ // ============================================================
29
+ // <#InitialSetupConfig_ExternalServices#>
30
+ const externalServices = {
31
+ serviceTagGraphHandler: 'GraphHandler',
32
+ serviceTagRbac: 'Rbac'
33
+ };
34
+ // <#/InitialSetupConfig_ExternalServices#>
35
+
36
+ // ============================================================
37
+ // Paths
38
+ // ============================================================
39
+ // <#InitialSetupConfig_Paths#>
40
+ const paths = {
41
+ seedGraphFilepath: './__test__/graph_seed_data/',
42
+ seedDataFilepath: './__test__/dynamodb_seed_data/default/',
43
+ seedUserFilepath: './__test__/userAccounts.json',
44
+ userId: ''
45
+ };
46
+ // <#/InitialSetupConfig_Paths#>
47
+
48
+ // ============================================================
49
+ // Table Configs (generated + manual merge)
50
+ // ============================================================
51
+ const tableConfigs = {
52
+ ...prodTableConfigs
53
+ // <#InitialSetupConfig_ExtraProdTableConfigs#>
54
+ // <#/InitialSetupConfig_ExtraProdTableConfigs#>
55
+ };
56
+
57
+ const tableConfigsTestEnv = {
58
+ ...testTableConfigs
59
+ // <#InitialSetupConfig_ExtraTestTableConfigs#>
60
+ // <#/InitialSetupConfig_ExtraTestTableConfigs#>
61
+ };
62
+
63
+ // ============================================================
64
+ // Graph Node Schemas (generated + manual merge)
65
+ // ============================================================
66
+ function graphNodeSchemas() {
67
+ let schemas = generatedGraphNodeSchemas();
68
+ // <#InitialSetupConfig_ExtraNodeSchemas#>
69
+ // <#/InitialSetupConfig_ExtraNodeSchemas#>
70
+ Logger.debug('nodeSchemas after merge', schemas);
71
+ return schemas;
72
+ }
73
+
74
+ // ============================================================
75
+ // Graph Relationship Schemas (generated + manual merge)
76
+ // ============================================================
77
+ function graphRelationshipSchemas() {
78
+ let schemas = generatedGraphRelationshipSchemas();
79
+ // <#InitialSetupConfig_ExtraRelSchemas#>
80
+ // <#/InitialSetupConfig_ExtraRelSchemas#>
81
+ Logger.debug('relationshipSchemas after merge', schemas);
82
+ return schemas;
83
+ }
84
+
85
+ // ============================================================
86
+ // Graph Versioned Data Schemas
87
+ // ============================================================
88
+ function graphVersionedDataSchemas() {
89
+ let versionedDataSchemas = {
90
+ // <#InitialSetupConfig_VersionedDataSchemas#>
91
+ // <#/InitialSetupConfig_VersionedDataSchemas#>
92
+ };
93
+
94
+ let [versionedDataNodeSchemas, versionedDataRelationshipSchemas] =
95
+ graphSharedLib.graphVersionedDataSchemaAll(versionedDataSchemas);
96
+
97
+ return [versionedDataNodeSchemas, versionedDataRelationshipSchemas];
98
+ }
99
+
100
+ export default {
101
+ externalServices,
102
+ paths,
103
+ tableConfigs,
104
+ tableConfigsTestEnv,
105
+ graphNodeSchemas,
106
+ graphRelationshipSchemas,
107
+ graphVersionedDataSchemas
108
+ };
@@ -0,0 +1,12 @@
1
+ import middlewareHandler from '@izara_project/izara-core-library-middleware';
2
+ import mainHandler from './InitialSetup_Main.js';
3
+
4
+ export const main = middlewareHandler.wrap(
5
+ {
6
+ useAuthorization: false,
7
+ useAuditLog: false
8
+ },
9
+ async (event, context, izContext) => {
10
+ return await mainHandler.initialSetup(event, context, izContext);
11
+ }
12
+ );