@izara_project/izara-market-library-service-schemas 1.0.5 → 1.0.7

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 (128) hide show
  1. package/package.json +2 -2
  2. package/src/GenerateCodeLibs/index.js +2 -1
  3. package/src/GenerateCodeLibs/src/Consts.js +12 -3
  4. package/src/GenerateCodeLibs/src/GenerateCodeLibs.js +232 -7
  5. package/src/GenerateCodeLibs/src/TranslateIdsLibs.js +89 -0
  6. package/src/MainLibs/src/Utils.js +10 -0
  7. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrApi/data.js +10 -2
  8. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrDsq/data.js +5 -4
  9. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrInv/data.js +11 -1
  10. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrSqs/data.js +4 -3
  11. package/src/TemplateManager/src/CreateRelationship/createRelationship/mainFunction/template.ejs +24 -22
  12. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrDsq/data.js +0 -1
  13. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrSqs/data.js +1 -1
  14. package/src/TemplateManager/src/CreateRelationship/createRelationship/sns-in-sqs/data.js +0 -2
  15. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/functionYaml/data.js +2 -2
  16. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/handler/HdrSqs/data.js +0 -1
  17. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/sns-out/data.js +1 -1
  18. package/src/TemplateManager/src/FindData/FindDataYaml/data.js +188 -0
  19. package/src/TemplateManager/src/FindData/FindDataYaml/template.ejs +27 -0
  20. package/src/TemplateManager/src/FindData/GetByStorage/getByDynamo.ejs +53 -0
  21. package/src/TemplateManager/src/FindData/GetByStorage/getByGraph.ejs +99 -0
  22. package/src/TemplateManager/src/FindData/Handler/data.js +48 -0
  23. package/src/TemplateManager/src/FindData/Handler/template.ejs +140 -0
  24. package/src/TemplateManager/src/FindData/mainFunction/data.js +279 -0
  25. package/src/TemplateManager/src/FindData/mainFunction/template.ejs +158 -0
  26. package/src/TemplateManager/src/GenerateCode(Old).js +1 -1
  27. package/src/TemplateManager/src/GenerateCode.js +163 -42
  28. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/functionYaml/data.js +98 -0
  29. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/functionYaml/template.ejs +33 -0
  30. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/handler/data.js +59 -0
  31. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/handler/template.ejs +129 -0
  32. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/createObjectComplete_main.js +172 -0
  33. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/data.js +53 -0
  34. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/template.ejs +172 -0
  35. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-in-sqs/data.js +58 -0
  36. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-in-sqs/template.ejs +47 -0
  37. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-out/data.js +62 -0
  38. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-out/template.ejs +10 -0
  39. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/functionYaml/data.js +98 -0
  40. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/functionYaml/template.ejs +33 -0
  41. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/handler/data.js +59 -0
  42. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/handler/template.ejs +129 -0
  43. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/mainFunction/data.js +53 -0
  44. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/mainFunction/template.ejs +126 -0
  45. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/sns-out/data.js +62 -0
  46. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/sqs-in-sns/data.js +58 -0
  47. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/sqs-in-sns/template.ejs +47 -0
  48. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrApi/data.js +22 -3
  49. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrApi/template.ejs +2 -2
  50. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrDsq/data.js +24 -1
  51. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrInv/data.js +53 -2
  52. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrSqs/data.js +25 -3
  53. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/data.js +5 -8
  54. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/getTemplate.ejs +76 -0
  55. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/updateTemplate.ejs +67 -0
  56. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/data.js +47 -23
  57. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/getTemplate.ejs +105 -0
  58. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/updateTemplate.ejs +109 -0
  59. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/createTemplate.ejs +75 -0
  60. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/data.js +69 -21
  61. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/getTemplate.ejs +82 -0
  62. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/updateTemplate.ejs +75 -0
  63. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/data.js +46 -17
  64. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/getTemplate.ejs +124 -0
  65. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/updateTemplate.ejs +133 -0
  66. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/CreateObject_main.js +760 -0
  67. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/data.js +67 -0
  68. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/request.json +0 -0
  69. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/template.ejs +575 -0
  70. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Get/data.js +0 -6
  71. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Get/template.ejs +17 -12
  72. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/data.js +61 -0
  73. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/request.json +0 -0
  74. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/template.ejs +267 -0
  75. package/src/TemplateManager/src/ProcessLogical/Handler/data.js +49 -0
  76. package/src/TemplateManager/src/ProcessLogical/Handler/template.ejs +129 -0
  77. package/src/TemplateManager/src/ProcessLogical/ProcessLogicalYaml/data.js +175 -0
  78. package/src/TemplateManager/src/ProcessLogical/ProcessLogicalYaml/template.ejs +25 -0
  79. package/src/TemplateManager/src/ProcessLogical/mainFunction/data.js +47 -0
  80. package/src/TemplateManager/src/ProcessLogical/mainFunction/template.ejs +429 -0
  81. package/src/TemplateManager/src/ProcessLogicalPagination/DsqYaml/data.js +50 -0
  82. package/src/TemplateManager/src/ProcessLogicalPagination/DsqYaml/template.ejs +32 -0
  83. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrDsq/data.js +167 -0
  84. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrDsq/template.ejs +25 -0
  85. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrSqs/data.js +169 -0
  86. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrSqs/template.ejs +25 -0
  87. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrDsq/data.js +48 -0
  88. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrDsq/template.ejs +163 -0
  89. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrSqs/data.js +48 -0
  90. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrSqs/template.ejs +146 -0
  91. package/src/TemplateManager/src/ProcessLogicalPagination/mainFunction/data.js +48 -0
  92. package/src/TemplateManager/src/ProcessLogicalPagination/mainFunction/template.ejs +212 -0
  93. package/src/TemplateManager/src/ResourceYaml/CreateSourceData.js +2 -2
  94. package/src/TemplateManager/src/ResourceYaml/dynamodb/processLogicalAndFindData.js +2 -2
  95. package/src/TemplateManager/src/ResourceYaml/sns-in-sqs/defaultSnsInSqsForFindDataAndProcessLogical.js +27 -12
  96. package/src/TemplateManager/src/ResourceYaml/sns-out/data.js +1 -1
  97. package/src/TemplateManager/src/ResourceYaml/sns-out/defaultSnsOutForFindDataAndProcessLogical.js +75 -0
  98. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/functionYaml/data.js +95 -0
  99. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/functionYaml/template.ejs +30 -0
  100. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/handler/dataHdrDsq.js +52 -0
  101. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/handler/template.ejs +194 -0
  102. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/mainFunction/data.js +48 -0
  103. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/mainFunction/template.ejs +330 -0
  104. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/sns-out/data.js +47 -0
  105. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/sqs-sns/data.js +58 -0
  106. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/sqs-sns/template.ejs +43 -0
  107. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/functionYaml/HdrDsq/data.js +116 -0
  108. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/functionYaml/HdrSqs/data.js +116 -0
  109. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrDsq/data.js +60 -0
  110. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrDsq/template.ejs +157 -0
  111. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrSqs/data.js +59 -0
  112. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrSqs/template.ejs +175 -0
  113. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/mainFunction/data.js +61 -0
  114. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/mainFunction/template.ejs +155 -0
  115. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/resourceYaml/dynamoDb/data.js +120 -0
  116. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/resourceYaml/sns-sqs/data.js +75 -0
  117. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/functionYaml/data.js +2 -2
  118. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/sns-out/data.js +1 -1
  119. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrApi/data.js +10 -3
  120. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrDsq/data.js +6 -4
  121. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrInv/data.js +11 -1
  122. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrSqs/data.js +7 -5
  123. package/src/TemplateManager/src/externalService/LambdaRole/data.js +150 -32
  124. package/src/TemplateManager/src/externalService/LambdaRole/template.ejs +16 -15
  125. package/src/TemplateManager/src/externalService/SnsTopicSubscriotions/data.js +35 -6
  126. package/src/TemplateManager/src/externalService/SnsTopicSubscriotions/template.ejs +3 -4
  127. package/src/TemplateManager/src/libs/Consts.js +122 -11
  128. package/src/TemplateManager/src/PerActionEndpoint/Handler/testRequest.json +0 -5
@@ -26,28 +26,42 @@ const {
26
26
  getAllLocalRelationshipSchemas,
27
27
  } = require('@izara_project/izara-core-library-service-schemas/src/GetObjectSchema');
28
28
 
29
-
30
29
  const {
31
30
  getGraphServiceNameFromGraphServerTagWithCache
32
31
  } = require('@izara_project/izara-core-library-service-schemas/src/ServiceConfig');
33
32
 
34
33
  const { createSource } = require("../../SourceManager/src/CreateSource");
35
34
  const { deleteFileInDir } = require("../../SourceManager/src/Utils");
36
- // create handler function
37
- const perActionHdrInvData = require("./PerActionEndpoint/Handler/HdrInv/data");
38
- const perActionHdrApiData = require("./PerActionEndpoint/Handler/HdrApi/data");
39
- const perActionHdrSqsData = require("./PerActionEndpoint/Handler/HdrSqs/data");
40
- const perActionHdrDsqData = require("./PerActionEndpoint/Handler/HdrDsq/data");
35
+ // create Get handler per ObjectType
36
+ const perActionGetHdrInvData = require("./PerActionEndpoint/Handler/HdrInv/data");
37
+ const perActionGetHdrApiData = require("./PerActionEndpoint/Handler/HdrApi/data");
38
+ const perActionGetHdrSqsData = require("./PerActionEndpoint/Handler/HdrSqs/data");
39
+ const perActionGetHdrDsqData = require("./PerActionEndpoint/Handler/HdrDsq/data");
41
40
 
42
41
  // create Main funcion
43
42
  const mainFunctionGetData = require('./PerActionEndpoint/MainFunction/Get/data');
43
+ const mainFunctionUpdateData = require('./PerActionEndpoint/MainFunction/Update/data');
44
+ const mainFunctionCreateData = require('./PerActionEndpoint/MainFunction/Create/data');
44
45
 
45
46
  // create function.yaml
46
- const functionGetYamlDataHdrInv = require('./PerActionEndpoint/FunctionYaml/HdrInv/data');
47
- const functionGetYamlDataHdrApi = require('./PerActionEndpoint/FunctionYaml/HdrApi/data');
48
- const functionGetYamlDataHdrSqs = require('./PerActionEndpoint/FunctionYaml/HdrSqs/data');
49
- const functionGetYamlDataHdrDsq = require('./PerActionEndpoint/FunctionYaml/HdrDsq/data');
50
-
47
+ const functionYamlDataHdrInv = require('./PerActionEndpoint/FunctionYaml/HdrInv/data');
48
+ const functionYamlDataHdrApi = require('./PerActionEndpoint/FunctionYaml/HdrApi/data');
49
+ const functionYamlDataHdrSqs = require('./PerActionEndpoint/FunctionYaml/HdrSqs/data');
50
+ const functionYamlDataHdrDsq = require('./PerActionEndpoint/FunctionYaml/HdrDsq/data');
51
+
52
+ // out updateNode Complete
53
+ const functionYamlOutUpdateComplete = require('./OutPerActionComplete/OutUpdateComplete/functionYaml/data');
54
+ const outUpdateCompleteHandler = require('./OutPerActionComplete/OutUpdateComplete/handler/data');
55
+ const outUpdateCompleteMainFunction = require('./OutPerActionComplete/OutUpdateComplete/mainFunction/data');
56
+ const outUpdateCompleteSnsInSqs = require('./OutPerActionComplete/OutUpdateComplete/sqs-in-sns/data');
57
+ const outUpdateCompleteSnsOut = require('./OutPerActionComplete/OutUpdateComplete/sns-out/data');
58
+
59
+ // out CreateNode Complete
60
+ const functionYamlOutCreateComplete = require('./OutPerActionComplete/OutCreateComplete/functionYaml/data');
61
+ const snsInSqsCreateObjectComplete = require('./OutPerActionComplete/OutCreateComplete/sns-in-sqs/data');
62
+ const snsOutCreateObjectComplete = require('./OutPerActionComplete/OutCreateComplete/sns-out/data')
63
+ const createObjectCompleteHandler = require('./OutPerActionComplete/OutCreateComplete/handler/data');
64
+ const createObjectCompleteMainFunction = require('./OutPerActionComplete/OutCreateComplete/mainFunction/data');
51
65
 
52
66
  // create Main resource
53
67
  const createSourceDataDynamoDB = require('./ResourceYaml/dynamodb/mainResourcePerObjectSchemaData');
@@ -56,6 +70,7 @@ const createSourceSnsAndSqs = require('./ResourceYaml/sns-in-sqs/snsAndSqsPerAct
56
70
  const createDataForCreateSourceSnsOut = require('./ResourceYaml/sns-out/data')
57
71
  const createFindDataAndProcessLogicalDefaultSnsInSqs = require('./ResourceYaml/sns-in-sqs/defaultSnsInSqsForFindDataAndProcessLogical');
58
72
  const createAwaitingMultipleStepDynamoDbData = require('./ResourceYaml/dynamodb/awaitingMultipleStepData');
73
+ const createDefaultSnsOutForFindDataAndProcessLogical = require('./ResourceYaml/sns-out/defaultSnsOutForFindDataAndProcessLogical')
59
74
 
60
75
  // create External Service
61
76
  const createExternalLambdaRole = require('./externalService/LambdaRole/data');
@@ -117,6 +132,40 @@ const createRelationshipCompleteHandlerFunction = require('./CreateRelationship/
117
132
  const createRelationshipCompleteMainFunction = require('./CreateRelationship/createRelationshipComplete/mainFunction/data');
118
133
  const createRelationshipCompleteSnsInSqs = require('./CreateRelationship/createRelationshipComplete/sns-in-sqs/data');
119
134
  const createRelationshipCompleteSnsOut = require('./CreateRelationship/createRelationshipComplete/sns-out/data');
135
+
136
+ // TranslateIdRequest
137
+ const createTranslateIdsCacheMainTable = require('./TranslateIdReq/TranslateIds/resourceYaml/dynamoDb/data');
138
+ const createTranslateIdsRequestMainFunction = require('./TranslateIdReq/TranslateIds/mainFunction/data');
139
+ const createTranslateIdsHandlerDsq = require('./TranslateIdReq/TranslateIds/handler/HdrDsq/data');
140
+ const createTranslateIdsHandlerSqs = require('./TranslateIdReq/TranslateIds/handler/HdrSqs/data');
141
+ const createTranslateIdFunctionYamlHdrDsq = require('./TranslateIdReq/TranslateIds/functionYaml/HdrDsq/data');
142
+ const createTranslateIdFunctionYamlHdrSqs = require('./TranslateIdReq/TranslateIds/functionYaml/HdrSqs/data');
143
+ const createSnsAndSqsTranslateId = require('./TranslateIdReq/TranslateIds/resourceYaml/sns-sqs/data');
144
+
145
+
146
+ // processTranslateIds
147
+ const createProcessTranslateIdsCompleteSnsOut = require('./TranslateIdReq/ProcessingTranslateIds/sns-out/data');
148
+ const createTranslateIdsProcessSnsQueue = require('./TranslateIdReq/ProcessingTranslateIds/sqs-sns/data');
149
+ const createTranslateIdsProcessFunctionYaml = require('./TranslateIdReq/ProcessingTranslateIds/functionYaml/data');
150
+ const createTranslateIdsProcessHandler = require('./TranslateIdReq/ProcessingTranslateIds/handler/dataHdrDsq');
151
+ const createTranslateIdsProcessMainFunction = require('./TranslateIdReq/ProcessingTranslateIds/mainFunction/data')
152
+ // findData
153
+ const createFindDataFunctionYaml = require('./FindData/FindDataYaml/data');
154
+ const createFindDataHandler = require('./FindData/Handler/data');
155
+ const createFindDataMainFunction = require('./FindData/mainFunction/data');
156
+
157
+ // processLogical
158
+ const createProcessLogicalHandler = require('./ProcessLogical/Handler/data');
159
+ const createProcessLogicalMainFunction = require('./ProcessLogical/mainFunction/data');
160
+ const createProcessLogicalFunctionYaml = require('./ProcessLogical/ProcessLogicalYaml/data');
161
+
162
+ // processLogicalPaginate
163
+ const createProcessLogicalPaginateHandlerDsq = require('./ProcessLogicalPagination/Handler/HdrDsq/data')
164
+ const createProcessLogicalPaginateHandlerSqs = require('./ProcessLogicalPagination/Handler/HdrSqs/data')
165
+ const createProcessLogicalPaginateMainFunction = require('./ProcessLogicalPagination/mainFunction/data');
166
+ const createProcessLogicalPaginateFunctionYamlHdrDsq = require('./ProcessLogicalPagination/FunctionYaml/HdrDsq/data')
167
+ const createProcessLogicalPaginateFunctionYamlHdrSqs = require('./ProcessLogicalPagination/FunctionYaml/HdrSqs/data')
168
+
120
169
  /**
121
170
  *
122
171
  * get template and send to
@@ -138,14 +187,15 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
138
187
 
139
188
  // define path for store yml file
140
189
  const GENERATECODE_SOURCE_PATH = {
141
- appYaml: join(saveFilePath, `../sls_yaml/generatedCode/source/`),
142
- resourceYaml: join(saveFilePath, `../../resource/sls_yaml/generatedCode/source/`),
143
- lambdaPerAction: join(saveFilePath, '../src/generatedCode/ObjectTypePerActionEndpoint/source/'),
190
+ appYaml: join(saveFilePath, `../sls_yaml/generatedCode/`),
191
+ resourceYaml: join(saveFilePath, `../../resource/sls_yaml/generatedCode/`),
192
+ lambdaPerAction: join(saveFilePath, '../src/generatedCode/ObjectTypePerActionEndpoint/'),
144
193
  externalService: join(saveFilePath, '../initial_setup/generatedCode/source/'),
145
194
  resourceLocation: join(saveFilePath, 'src/generatedCode/perAction/source/'),
146
195
  lamdaPerCombindActionPath: join(saveFilePath, `/generatedCode/lamdaPerCombindAction/source/`), // test
147
- lambdaPerObjectTypePath: join(saveFilePath, `/generatedCode/lambdaPerObjectType/source/`), // test
148
- updateRelationship: join(saveFilePath, `../src/generatedCode/RelationshipPerAction/source/`),
196
+ lambdaPerObjectTypePath: join(saveFilePath, `/generatedCode/lambdaPerObjectType/`), // test
197
+ updateRelationship: join(saveFilePath, `../src/generatedCode/RelationshipPerAction/`),
198
+ translateId: join(saveFilePath, `../src/generatedCode/TranslateId/`)
149
199
  };
150
200
 
151
201
 
@@ -153,6 +203,11 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
153
203
  let allObjSchemas = await getAllLocalObjectSchemasWithHierarchy(_izContext, objSchemaPath);
154
204
  // _izContext.logger.debug("allObjSchemas: ", allObjSchemas)
155
205
 
206
+ const findDataFunctionYaml = await createFindDataFunctionYaml(_izContext, allObjSchemas, saveFilePath);
207
+ const processLogicalFunctionYaml = await createProcessLogicalFunctionYaml(_izContext, allObjSchemas, saveFilePath);
208
+ const processLogicalPaginateFunctionYamlHdrDsq = await createProcessLogicalPaginateFunctionYamlHdrDsq(_izContext, allObjSchemas, saveFilePath);
209
+ const processLogicalPaginateFunctionYamlHdrSqs = await createProcessLogicalPaginateFunctionYamlHdrSqs(_izContext, allObjSchemas, saveFilePath);
210
+
156
211
  const allObjectRelationships = await getAllLocalRelationshipSchemas(_izContext, objSchemaPath);
157
212
 
158
213
  // _izContext.logger.debug("allObjectRelationships: ", allObjectRelationships)
@@ -175,57 +230,79 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
175
230
 
176
231
  // create External service
177
232
  const createFunctionIamRole = await createExternalLambdaRole(_izContext, allObjSchemas.records, allObjectRelationships, saveFilePath);
178
- const createSnsSubscription = await createExternalSnsSubscriptions(_izContext, allObjectRelationships, saveFilePath);
179
-
233
+ const createSnsSubscription = await createExternalSnsSubscriptions(_izContext, allObjectRelationships, allObjSchemas.records, saveFilePath);
180
234
  for (let objectSchema of allObjSchemas.records) {
181
-
182
235
  // generate handler perAction
183
- const createSourceHdrInv = perActionHdrInvData(_izContext, objectSchema, saveFilePath);
184
- const createSourceHdrApi = perActionHdrApiData(_izContext, objectSchema, saveFilePath);
185
- const createSourceHdrSqs = perActionHdrSqsData(_izContext, objectSchema, saveFilePath);
186
- const createSourceHdrDsq = perActionHdrDsqData(_izContext, objectSchema, saveFilePath);
236
+ const createSourceHdrInv = perActionGetHdrInvData(_izContext, objectSchema, saveFilePath);
237
+ const createSourceHdrApi = perActionGetHdrApiData(_izContext, objectSchema, saveFilePath);
238
+ const createSourceHdrSqs = perActionGetHdrSqsData(_izContext, objectSchema, saveFilePath);
239
+ const createSourceHdrDsq = perActionGetHdrDsqData(_izContext, objectSchema, saveFilePath);
187
240
 
188
241
  // wrap Handler Function
189
242
  const createSourceHandler = [...createSourceHdrInv, ...createSourceHdrApi, ...createSourceHdrSqs, ...createSourceHdrDsq];
190
243
 
191
244
  // generate main function
192
245
  const createMainFunctionGet = await mainFunctionGetData(_izContext, objectSchema, saveFilePath);
246
+ const createMainFunctionUpdate = await mainFunctionUpdateData(_izContext, objectSchema, saveFilePath)
247
+ const createMainFunctionCreate = await mainFunctionCreateData(_izContext, objectSchema, saveFilePath);
193
248
 
249
+ const createMainFunction = [...createMainFunctionGet, ...createMainFunctionUpdate, ...createMainFunctionCreate]
194
250
  // generate functionYaml File
195
- const createFunctionGetYamlHdrInv = functionGetYamlDataHdrInv(_izContext, objectSchema, saveFilePath);
196
- const createFunctionGetYamlHdrApi = functionGetYamlDataHdrApi(_izContext, objectSchema, saveFilePath);
197
- const createFunctionGetYamlHdrSqs = functionGetYamlDataHdrSqs(_izContext, objectSchema, saveFilePath);
198
- const createFunctionGetYamlHdrDsq = functionGetYamlDataHdrDsq(_izContext, objectSchema, saveFilePath);
251
+ const createFunctionYamlHdrInv = functionYamlDataHdrInv(_izContext, objectSchema, saveFilePath);
252
+ const createFunctionYamlHdrApi = functionYamlDataHdrApi(_izContext, objectSchema, saveFilePath);
253
+ const createFunctionYamlHdrSqs = functionYamlDataHdrSqs(_izContext, objectSchema, saveFilePath);
254
+ const createFunctionYamlHdrDsq = functionYamlDataHdrDsq(_izContext, objectSchema, saveFilePath);
199
255
 
200
256
  // wrapMain Function
201
- const createFunctionYaml = [...createFunctionGetYamlHdrApi, ...createFunctionGetYamlHdrDsq, ...createFunctionGetYamlHdrInv, ...createFunctionGetYamlHdrSqs];
257
+ const createFunctionYaml = [...createFunctionYamlHdrApi, ...createFunctionYamlHdrDsq, ...createFunctionYamlHdrInv, ...createFunctionYamlHdrSqs];
202
258
 
203
259
  // generate Resource ..via dynamoDb sns-in-sqs sns-put
204
260
  const createResourceDynamo = createSourceDataDynamoDB(_izContext, objectSchema, saveFilePath);
205
261
  const createResourceSnsInSqs = createSourceSnsAndSqs(_izContext, objectSchema, saveFilePath);
206
- const createResourceSnsOut = createDataForCreateSourceSnsOut(_izContext, objectSchema, saveFilePath)
262
+ const createResourceSnsOut = createDataForCreateSourceSnsOut(_izContext, objectSchema, saveFilePath);
263
+
264
+ // translateIdsMainFunction
265
+ const translateIdsMainFunction = await createTranslateIdsRequestMainFunction(_izContext, objectSchema, saveFilePath);
207
266
 
208
267
  // wrap main Resource
209
268
  const createMainResource = [...createResourceDynamo, ...createResourceSnsInSqs, ...createResourceSnsOut];
210
269
 
270
+
211
271
  createSourceParams = createSourceParams.concat([
212
272
  // ...createSourceMainResourcesObjectSchema,
213
273
  ...createSourceHandler, // create handler function
214
- ...createMainFunctionGet, // create main function
274
+ ...createMainFunction, // create main function
215
275
  ...createFunctionYaml, // create function.yaml
216
276
  ...createMainResource, // create resource yaml
277
+ ...translateIdsMainFunction,
217
278
  ]);
218
279
 
219
280
  // console.log("createSourceParams after concat: ", createSourceParams);
220
281
  }
282
+ // create UpdateNodeComplete
283
+ const createFunctionYamlOutUpdateNodeComplete = functionYamlOutUpdateComplete(_izContext, saveFilePath);
284
+ const createOutUpdateCompleteHandler = outUpdateCompleteHandler(_izContext, saveFilePath);
285
+ const createOutUpdateCompleteMainFunction = outUpdateCompleteMainFunction(_izContext, saveFilePath);
286
+ const createOutUpdateCompleteSnsInSqs = outUpdateCompleteSnsInSqs(_izContext, saveFilePath);
287
+ const createOutUpdateCompleteSnsOut = outUpdateCompleteSnsOut(_izContext, saveFilePath);
288
+
289
+ const createOutUpdateComplete = [...createFunctionYamlOutUpdateNodeComplete, ...createOutUpdateCompleteHandler, ...createOutUpdateCompleteMainFunction, ...createOutUpdateCompleteSnsInSqs, ...createOutUpdateCompleteSnsOut]
221
290
 
291
+ // create CreateNodeComplete
292
+ const createFunctionYamlCreateObjectComplete = functionYamlOutCreateComplete(_izContext, saveFilePath);
293
+ const createSnsInSqsCreateObjectComplete = snsInSqsCreateObjectComplete(_izContext, saveFilePath)
294
+ const createSnsOutCreateObjectComplete = snsOutCreateObjectComplete(_izContext, saveFilePath);
295
+ const createHandlerCreateObjectComplete = createObjectCompleteHandler(_izContext, saveFilePath);
296
+ const createMainFunctionCreateObjectComplete = createObjectCompleteMainFunction(_izContext, saveFilePath)
297
+
298
+ const createCreateNodeComplete = [...createFunctionYamlCreateObjectComplete, ...createSnsInSqsCreateObjectComplete, ...createSnsOutCreateObjectComplete, ...createHandlerCreateObjectComplete, ...createMainFunctionCreateObjectComplete]
222
299
 
223
300
  // create default data resource such as findData ProcessLogical and awaitingMultipleStep
224
301
  const createResourceFindDataAndProcessLogical = createDefaultSourceDataDynamoDB(_izContext, saveFilePath);
225
302
  const createResourceAwaitingMultipleStep = createAwaitingMultipleStepDynamoDbData(_izContext, saveFilePath);
226
303
  const createResourceDefaultSnsInSqsFindDataAndProcessLogical = createFindDataAndProcessLogicalDefaultSnsInSqs(_izContext, saveFilePath);
227
-
228
- const createMainResourceDefault = [...createResourceFindDataAndProcessLogical, ...createResourceDefaultSnsInSqsFindDataAndProcessLogical, ...createResourceAwaitingMultipleStep];
304
+ const createResourceDefaultSnsOutFindDataAndProcessLogical = createDefaultSnsOutForFindDataAndProcessLogical(_izContext, saveFilePath)
305
+ const createMainResourceDefault = [...createResourceFindDataAndProcessLogical, ...createResourceDefaultSnsInSqsFindDataAndProcessLogical, ...createResourceAwaitingMultipleStep, ...createResourceDefaultSnsOutFindDataAndProcessLogical];
229
306
 
230
307
  // create function yaml for update relationshipSchema per handler
231
308
  const createYamlUpdateRelationshipSchemaHdrSqs = createUpdateRelationshipFunctionYamlHdrSqs(_izContext, saveFilePath);
@@ -251,10 +328,8 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
251
328
  const createUpdateRelationshipSchemaSnsIn = createUpdateRelationshipSchemaSnsInSqsResource(_izContext, saveFilePath);
252
329
  // const createUpdateRelationshipSchemaSnsOut = createUpdateRelationshipSchemaSnsOutResource(_izContext, saveFilePath);
253
330
 
254
- const createResourceUpdateRelationshipSchema = [...createUpdateRelationshipSchemaSnsIn,];
255
-
256
331
  // warp function updateRelationshipSchemaData
257
- const createUpdateRelationshipSchemaData = [...createUpdateRelationshipSchemaPerAction, ...createResourceUpdateRelationshipSchema, ...createMainFunctionUpdateRelationshipSchema]
332
+ const createUpdateRelationshipSchemaData = [...createUpdateRelationshipSchemaPerAction, ...createUpdateRelationshipSchemaSnsIn, ...createMainFunctionUpdateRelationshipSchema, ...createYamlUpdateRelationshipSchema]
258
333
 
259
334
  // create UpdateRelationshipComplete Main Function
260
335
  const createUpdateRelationshipSchemaCompleteMain = createUpdateRelationshipSchemaCompleteMainFunction(_izContext, saveFilePath);
@@ -273,6 +348,8 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
273
348
  const createUpdateRelationshipSchemaCompleteData = [...createUpdateRelationshipSchemaCompleteFunctionYaml, ...createUpdateRelationshipSchemaCompleteHandler, ...createUpdateRelationshipSchemaCompleteSnsInSqsResource,
274
349
  ...createUpdateRelationshipSchemaCompleteSnsOutResource, ...createUpdateRelationshipSchemaCompleteMain];
275
350
 
351
+ const updateRelationshipSchemaDatas = [...createUpdateRelationshipSchemaData, ...createUpdateRelationshipSchemaCompleteData];
352
+
276
353
  // create CreateRelationshipSchema MainFunction
277
354
  const createCreateRelationshipSchemaMainFunction = createRelationshipSchemaMain(_izContext, saveFilePath);
278
355
 
@@ -299,16 +376,60 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
299
376
  const createRelationshipCompleteMain = createRelationshipCompleteMainFunction(_izContext, saveFilePath);
300
377
  const createRelationshipCompleteQueue = createRelationshipCompleteSnsInSqs(_izContext, saveFilePath);
301
378
  const createRelationshipCompleteOutsomething = createRelationshipCompleteSnsOut(_izContext, saveFilePath)
302
- const createRelationshipComplete = [...createRelationshipCompleteFunctionYml, ...createRelationshipCompleteHandler, ...createRelationshipCompleteMain, ...createRelationshipCompleteQueue, ...createRelationshipCompleteOutsomething]
379
+ const createCreateRelationshipComplete = [...createRelationshipCompleteFunctionYml, ...createRelationshipCompleteHandler, ...createRelationshipCompleteMain, ...createRelationshipCompleteQueue, ...createRelationshipCompleteOutsomething]
303
380
 
304
- createSourceParams.push(...createMainResourceDefault, ...createYamlUpdateRelationshipSchema,
305
- ...createUpdateRelationshipSchemaData,
306
- ...createUpdateRelationshipSchemaCompleteData,
307
- ...createCreateRelationshipData,
308
- ...createRelationshipComplete,
309
- createFunctionIamRole,
381
+ const createRelationshipSchemaDatas = [...createCreateRelationshipComplete, ...createCreateRelationshipData];
382
+
383
+ const translateIdsCacheIdsMainTable = createTranslateIdsCacheMainTable(_izContext, saveFilePath);
384
+ const translateIdsHandlerFunctionDsq = createTranslateIdsHandlerDsq(_izContext, saveFilePath);
385
+ const translateIdsHandlerFunctionSqs = createTranslateIdsHandlerSqs(_izContext, saveFilePath);
386
+ const translateIdsFunctionYamlDsq = createTranslateIdFunctionYamlHdrDsq(_izContext, saveFilePath);
387
+ const translateIdsFunctionYamlSqs = createTranslateIdFunctionYamlHdrSqs(_izContext, saveFilePath);
388
+ const translateIdsSnsAndSqsResourceQueue = createSnsAndSqsTranslateId(_izContext, saveFilePath);
389
+
390
+ const createTranslateIdsResourece = [...translateIdsCacheIdsMainTable, ...translateIdsHandlerFunctionDsq, ...translateIdsHandlerFunctionSqs,
391
+ ...translateIdsFunctionYamlDsq, ...translateIdsFunctionYamlSqs, ...translateIdsSnsAndSqsResourceQueue
392
+ ]
393
+
394
+ const translateIdsProcessingSnsOut = createProcessTranslateIdsCompleteSnsOut(_izContext, saveFilePath);
395
+ const translateIdsProcessingQueue = createTranslateIdsProcessSnsQueue(_izContext, saveFilePath);
396
+ const translateIdsProcessingFunctionYaml = createTranslateIdsProcessFunctionYaml(_izContext, saveFilePath);
397
+ const translateIdsProcessingHandler = createTranslateIdsProcessHandler(_izContext, saveFilePath);
398
+ const translateIdsProcessingMainFunction = createTranslateIdsProcessMainFunction(_izContext, saveFilePath);
399
+ const createTranslateIdsProcessing = [...translateIdsProcessingQueue, ...translateIdsProcessingFunctionYaml, ...translateIdsProcessingHandler, ...translateIdsProcessingMainFunction, ...translateIdsProcessingSnsOut]
400
+
401
+ const findDataHandlerSqs = createFindDataHandler(_izContext, saveFilePath);
402
+ const findDataMainFunction = await createFindDataMainFunction(_izContext, saveFilePath);
403
+
404
+ const findDataResource = [findDataHandlerSqs, findDataMainFunction, findDataFunctionYaml];
405
+
406
+ const processLogicalHandler = createProcessLogicalHandler(_izContext, saveFilePath);
407
+ const processLogicalMainFunction = createProcessLogicalMainFunction(_izContext, saveFilePath)
408
+
409
+ const processLogicalResource = [processLogicalHandler, processLogicalMainFunction, processLogicalFunctionYaml]
410
+
411
+ const processLogicalPaginateHandlerDsq = createProcessLogicalPaginateHandlerDsq(_izContext, saveFilePath);
412
+ const processLogicalPaginateHandlerSqs = createProcessLogicalPaginateHandlerSqs(_izContext, saveFilePath);
413
+ const processLogicalPaginateMainFunction = createProcessLogicalPaginateMainFunction(_izContext, saveFilePath);
414
+ const processLogicalPaginateResource = [processLogicalPaginateFunctionYamlHdrDsq, processLogicalPaginateFunctionYamlHdrSqs, processLogicalPaginateHandlerDsq, processLogicalPaginateHandlerSqs, processLogicalPaginateMainFunction]
415
+
416
+ createSourceParams.push(...createMainResourceDefault,
310
417
  createSnsSubscription,
418
+ createFunctionIamRole,
419
+ ...createOutUpdateComplete,
420
+ ...createCreateNodeComplete,
421
+ ...findDataResource,
422
+ ...processLogicalResource,
423
+ ...processLogicalPaginateResource
311
424
  );
425
+ if (allObjectRelationships.length) {
426
+ createSourceParams.push(
427
+ ...updateRelationshipSchemaDatas,
428
+ ...createRelationshipSchemaDatas,
429
+ ...createTranslateIdsResourece,
430
+ ...createTranslateIdsProcessing,
431
+ )
432
+ }
312
433
  // console.log("createSourceParams", createSourceParams);
313
434
 
314
435
  // delete file .yml before start to prevent confilct of data
@@ -0,0 +1,98 @@
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
+ 'use strict';
19
+ const path = require('path');
20
+ const fs = require('fs');
21
+
22
+ const { ACTIONS, HANDLER, STORAGE_TYPES } = require('@izara_project/izara-core-library-service-schemas/src/Consts')
23
+ const { getGraphServiceNameFromGraphServerTagWithCache, getServiceNameWithCache } = require('@izara_project/izara-core-library-service-schemas/src/ServiceConfig')
24
+ const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase } = require("../../../../../MainLibs/src/Utils")
25
+ const { DEFAULT_HANDLER_PER_ACTION, createIamRole, resourceNames, RESOURCE_CLASSES, DEFAULT_LAMBDA_ROLE_PER_ACTION, SOURCE_PATH, externalResourceName, getGraphServiceNameFromAllRelSchema, FUNCTION_NAME, SAVE_FILE_NAME, getGraphServiceNameFromObjectSchema, defaultIamRolePerAction, SQS_RESOURCE, SNS_RESOURCE, DYNAMO_RESOURCE } = require("../../../libs/Consts");
26
+
27
+ const templatePath = path.join(__dirname, './template.ejs');
28
+
29
+ function data(_izContext, srcPath) {
30
+ return [createFunctionYamlOutUpdateComplete(_izContext, srcPath)]
31
+ }
32
+
33
+ function createFunctionYamlOutUpdateComplete(_izContext, srcPath) {
34
+ let functionName = upperCase(FUNCTION_NAME.createObjectComplete)
35
+ let additionalResourcePermission = defaultIamRolePerAction();
36
+ let awaitingTables = ["AwaitingMultipleSteps", "AwaitingMultipleStepByPending"]
37
+ let handlerType = upperCase(HANDLER.hdrSqs)
38
+
39
+ additionalResourcePermission.push(
40
+ createIamRole(
41
+ {
42
+ [RESOURCE_CLASSES.sqs]: [
43
+ SQS_RESOURCE.deleteMessage,
44
+ SQS_RESOURCE.deleteMessageBatch,
45
+ SQS_RESOURCE.getQueueAttributes,
46
+ SQS_RESOURCE.getQueueUrl,
47
+ SQS_RESOURCE.receiveMessage,
48
+ SQS_RESOURCE.sendMessage
49
+ ],
50
+ [RESOURCE_CLASSES.sns]: [
51
+ SNS_RESOURCE.publish,
52
+ SNS_RESOURCE.subscription
53
+ ]
54
+ },
55
+ [
56
+ resourceNames(RESOURCE_CLASSES.sqs, upperCase(functionName)),
57
+ resourceNames(RESOURCE_CLASSES.sqs, upperCase(functionName) + "DLQ"),
58
+ resourceNames(RESOURCE_CLASSES.sns, "In" + upperCase(functionName)),
59
+ resourceNames(RESOURCE_CLASSES.sns, "Out" + upperCase(functionName)),
60
+ ]
61
+ )
62
+ )
63
+
64
+ additionalResourcePermission.push(
65
+ createIamRole(
66
+ {
67
+ [RESOURCE_CLASSES.dynamoDbTable]: [
68
+ DYNAMO_RESOURCE.updateItem,
69
+ DYNAMO_RESOURCE.query,
70
+ DYNAMO_RESOURCE.deleteItem
71
+ ]
72
+ },
73
+ awaitingTables.map(tableName =>
74
+ resourceNames(RESOURCE_CLASSES.dynamoDbTable, tableName)
75
+ )
76
+ )
77
+ )
78
+
79
+
80
+ return {
81
+ templatePath: templatePath,
82
+ templateData: {
83
+ functionName,
84
+ handlerType,
85
+ additionalResourcePermission,
86
+ resourceLocation: SOURCE_PATH.resourceLocationPerAction
87
+ },
88
+ setting: {
89
+ savePath: path.join(srcPath, SOURCE_PATH.appYaml),
90
+ saveFileName: SAVE_FILE_NAME.functionPerActionYaml,
91
+ fileExtension: '.yml',
92
+ isAppend: true
93
+ }
94
+
95
+ }
96
+ }
97
+
98
+ module.exports = data
@@ -0,0 +1,33 @@
1
+ <%_ const join = require('path').join; _%>
2
+ <%- firstLetterUpperCase(functionName) %>:
3
+ handler: <%- join(resourceLocation, `${firstLetterUpperCase(functionName)}_${firstLetterUpperCase(handlerType)}.main`)%>
4
+ name: ${self:custom.iz_resourcePrefix}<%- firstLetterUpperCase(functionName) %>
5
+ events:
6
+ - sqs:
7
+ arn: arn:aws:sqs:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_resourcePrefix}<%- firstLetterUpperCase(functionName) %>
8
+ batchSize: 10
9
+ filterPatterns: #**** need to update serverless framwork upper v.2.69.1
10
+ - body: {"MessageAttributes":{"callingFlow":{"Value":["${self:custom.iz_resourcePrefix}<%-firstLetterUpperCase(functionName) %>"]}}} # functionName of callingFlow
11
+ - body: {"MessageAttributes":{"callingFlow":{"Value":[{"exists":false}]}}}
12
+ iamRoleStatements:
13
+ <%_ additionalResourcePermission.forEach(resourcePermission => { _%>
14
+ - Effect: <%- resourcePermission.effect %>
15
+ Action:
16
+ <%_ Object.keys(resourcePermission.action).forEach(resourcePerAction => { _%>
17
+ <%_ resourcePermission.action[resourcePerAction].forEach(permission => { _%>
18
+ - <%- resourcePerAction %>:<%- permission %>
19
+ <%_}) _%>
20
+ <%_ }) _%>
21
+ Resource:
22
+ <%_ resourcePermission.resource.forEach(resource => { _%>
23
+ - <%- resource %>
24
+ <%_ }) _%>
25
+ <%_}) _%>
26
+ #<#<%- functionName %><%- handlerType %>IamRole#>
27
+ #<#/<%- functionName %><%- handlerType %>IamRole#>
28
+ <%_ function firstLetterUpperCase(text){
29
+ return text.charAt(0).toUpperCase() + text.slice(1)
30
+ } _%>
31
+ <%_ function firstLetterLowerCase(str) {
32
+ return str.charAt(0).toLowerCase() + str.slice(1)
33
+ } _%>
@@ -0,0 +1,59 @@
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
+ 'use strict';
19
+ const path = require('path');
20
+ const fs = require('fs');
21
+
22
+ const { ACTIONS, HANDLER } = require('@izara_project/izara-core-library-service-schemas/src/Consts')
23
+
24
+ const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase, firstLetterUpperCase } = require("../../../../../MainLibs/src/Utils")
25
+ const { DEFAULT_HANDLER_PER_ACTION, SOURCE_PATH, FUNCTION_NAME } = require("../../../libs/Consts");
26
+
27
+ const templatePath = path.join(__dirname, "./template.ejs")
28
+
29
+ /**
30
+ * receive objectSchema
31
+ * create data for hdrInv template
32
+ *
33
+ * @return {{ templatePath, templateData, setting } }
34
+ */
35
+ function data(_izContext, srcPath) {
36
+ const createSourceParams = createParamForCreateSource(srcPath)
37
+ return [createSourceParams];
38
+ }
39
+
40
+ function createParamForCreateSource(srcPath) {
41
+ const functionName = FUNCTION_NAME.createObjectComplete;
42
+
43
+ return {
44
+ templatePath: templatePath,
45
+ templateData: {
46
+ functionName,
47
+ queueName: upperCase(functionName),
48
+ functionName
49
+ },
50
+ setting: {
51
+ savePath: path.join(srcPath, SOURCE_PATH.lambdaPerAction),
52
+ saveFileName: `${upperCase(functionName)}_${upperCase(HANDLER.hdrSqs)}`,
53
+ fileExtension: ".js",
54
+ isAppend: false
55
+ }
56
+ }
57
+ }
58
+
59
+ module.exports = data
@@ -0,0 +1,129 @@
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
+ 'use strict';
19
+
20
+ // const AWS = require('aws-sdk');
21
+ // const sqs = new AWS.SQS({ apiVersion: '2012-11-05' });
22
+
23
+ const izara = require("@izara_project/izara-middleware");
24
+ const middleware = izara.middlewareHandler;
25
+ const izaraShared = require('@izara_project/izara-shared');
26
+ const recordHandlerSharedLib = izaraShared.recordHandlerSharedLib
27
+ const callingFlowSharedLib = izaraShared.callingFlowSharedLib;
28
+
29
+ const <%- functionName %> = require('./<%- firstLetterUpperCase(functionName) %>_Main');
30
+ const Logger = require('@izara_project/izara-core-library-logger');
31
+ // validate event properties in body.Message of sqs event
32
+ middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema());
33
+ // set schema for record.body.Message
34
+ let perRecordsValidatorSchema = {
35
+ type: "object",
36
+ required: [
37
+ 'returnValue',
38
+ 'status',
39
+ 'errorFounds'
40
+ ],
41
+ properties: {
42
+ returnValue: {
43
+ type: 'object',
44
+ },
45
+ status: {
46
+ type: 'string',
47
+ },
48
+ errorFounds: {
49
+ type: 'array',
50
+ default: []
51
+ }
52
+ }
53
+ };
54
+
55
+ // set schema for record.body.MessageAttributes
56
+ // const messageAttributeValidatorSchema = {
57
+ // type: "object",
58
+ // required: ['msgAtrrParam1', 'msgAtrrParam2'],
59
+ // properties: {
60
+ // msgAtrrParam1: {
61
+ // type: "string"
62
+ // },
63
+ // msgAtrrParam2: {
64
+ // type: "object"
65
+ // }
66
+ // }
67
+ // };
68
+
69
+ perRecordsValidatorSchema = callingFlowSharedLib.addOptionalPassBackPropertiesToValidatorSchema(perRecordsValidatorSchema); // is Ok passBackProperties
70
+ module.exports.main = middleware.wrap(async (event, context, callback) => {
71
+
72
+ try {
73
+
74
+ let recordPromises = [];
75
+
76
+ // loop each record and send to mainFunction
77
+ await Promise.all(event.Records.map(async record => { // promise.all for map() function
78
+
79
+ let passOnProperties = []
80
+ record._izContext.logger.debug('record ReceiveMsgOutHdrSqs', record);
81
+
82
+ //validate message (and MessageAttributes)
83
+ await recordHandlerSharedLib.validateRecord(
84
+ record, // one record will send to mainFunction
85
+ "<%- firstLetterUpperCase(queueName) %>", // queue name that need to retry or send to dlq
86
+ perRecordsValidatorSchema, // schema for record.Message
87
+ // messageAttributeValidatorSchema // ----- for msgAttr default is null -> do not send this parameter if not want to validate msgAtt
88
+ );
89
+
90
+ // add argument (to invoke lambda) to passOnProperties[]
91
+ passOnProperties.push(record.body.Message.returnValue)
92
+ passOnProperties.push(record.body.Message.status)
93
+ passOnProperties.push(record.body.Message.errorFounds)
94
+ passOnProperties.push(callingFlowSharedLib.addPassBackPropertiesToPassOnProperties(record.body.Message)) // is Ok PassBackProperties
95
+ // passOnProperties.push(callingFlowSharedLib.addCallingFlowToPassOnProperties(record.body.Message)) // is Ok callinfFlow
96
+ record._izContext.logger.debug('passOnProperties in handler', passOnProperties);
97
+
98
+ // call recordHandlerSharedLib.recordHandler with 3 parameters and return promise(resolve)
99
+ let recordPromise = recordHandlerSharedLib.recordHandler(
100
+ record, // one record will send to mainFunction
101
+ <%- functionName %>.<%- functionName %>, // mainFunction that need to invoke.
102
+ "<%- firstLetterUpperCase(queueName) %>", // queue name that need to retry or send to dlq
103
+ passOnProperties, // all parameters that mainFunction needed.
104
+ );
105
+ record._izContext.logger.debug('after recordPromise in handler');
106
+ recordPromises.push(recordPromise); // push promise to recordPromises
107
+ }))
108
+
109
+ Logger.debug('before Promise.all(recordPromises) in handler');
110
+ try {
111
+ // --- main await all promises
112
+ await Promise.all(recordPromises); // await all promises
113
+
114
+ return event.Records // return all for local testing
115
+
116
+ } catch {
117
+ Logger.debug('Promise.all(recordPromises) in handler threw error (at least one record did no resolve)');
118
+ }
119
+ Logger.debug('after Promise.all(recordPromises) in handler');
120
+
121
+ } catch (err) {
122
+ Logger.error('Unhandled Error, updateNodeCompleteHdrSqs: ', err);
123
+ throw (err);
124
+ }
125
+ });
126
+
127
+ <%_ function firstLetterUpperCase(text){
128
+ return text.charAt(0).toUpperCase()+ text.slice(1)
129
+ } _%>