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

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 +155 -0
  26. package/src/TemplateManager/src/GenerateCode(Old).js +1 -1
  27. package/src/TemplateManager/src/GenerateCode.js +147 -32
  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 +0 -0
  31. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/handler/template.ejs +0 -0
  32. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/createObjectComplete_main.js +172 -0
  33. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/data.js +0 -0
  34. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/template.ejs +0 -0
  35. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-in-sqs/data.js +0 -0
  36. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-in-sqs/template.ejs +0 -0
  37. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-out/data.js +0 -0
  38. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-out/template.ejs +0 -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 +21 -1
  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 +51 -2
  52. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrSqs/data.js +25 -3
  53. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/data.js +4 -6
  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 +581 -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 +421 -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 +149 -28
  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,21 +26,22 @@ 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
47
  const functionGetYamlDataHdrInv = require('./PerActionEndpoint/FunctionYaml/HdrInv/data');
@@ -48,6 +49,16 @@ const functionGetYamlDataHdrApi = require('./PerActionEndpoint/FunctionYaml/HdrA
48
49
  const functionGetYamlDataHdrSqs = require('./PerActionEndpoint/FunctionYaml/HdrSqs/data');
49
50
  const functionGetYamlDataHdrDsq = require('./PerActionEndpoint/FunctionYaml/HdrDsq/data');
50
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
+
51
62
 
52
63
  // create Main resource
53
64
  const createSourceDataDynamoDB = require('./ResourceYaml/dynamodb/mainResourcePerObjectSchemaData');
@@ -56,6 +67,7 @@ const createSourceSnsAndSqs = require('./ResourceYaml/sns-in-sqs/snsAndSqsPerAct
56
67
  const createDataForCreateSourceSnsOut = require('./ResourceYaml/sns-out/data')
57
68
  const createFindDataAndProcessLogicalDefaultSnsInSqs = require('./ResourceYaml/sns-in-sqs/defaultSnsInSqsForFindDataAndProcessLogical');
58
69
  const createAwaitingMultipleStepDynamoDbData = require('./ResourceYaml/dynamodb/awaitingMultipleStepData');
70
+ const createDefaultSnsOutForFindDataAndProcessLogical = require('./ResourceYaml/sns-out/defaultSnsOutForFindDataAndProcessLogical')
59
71
 
60
72
  // create External Service
61
73
  const createExternalLambdaRole = require('./externalService/LambdaRole/data');
@@ -117,6 +129,40 @@ const createRelationshipCompleteHandlerFunction = require('./CreateRelationship/
117
129
  const createRelationshipCompleteMainFunction = require('./CreateRelationship/createRelationshipComplete/mainFunction/data');
118
130
  const createRelationshipCompleteSnsInSqs = require('./CreateRelationship/createRelationshipComplete/sns-in-sqs/data');
119
131
  const createRelationshipCompleteSnsOut = require('./CreateRelationship/createRelationshipComplete/sns-out/data');
132
+
133
+ // TranslateIdRequest
134
+ const createTranslateIdsCacheMainTable = require('./TranslateIdReq/TranslateIds/resourceYaml/dynamoDb/data');
135
+ const createTranslateIdsRequestMainFunction = require('./TranslateIdReq/TranslateIds/mainFunction/data');
136
+ const createTranslateIdsHandlerDsq = require('./TranslateIdReq/TranslateIds/handler/HdrDsq/data');
137
+ const createTranslateIdsHandlerSqs = require('./TranslateIdReq/TranslateIds/handler/HdrSqs/data');
138
+ const createTranslateIdFunctionYamlHdrDsq = require('./TranslateIdReq/TranslateIds/functionYaml/HdrDsq/data');
139
+ const createTranslateIdFunctionYamlHdrSqs = require('./TranslateIdReq/TranslateIds/functionYaml/HdrSqs/data');
140
+ const createSnsAndSqsTranslateId = require('./TranslateIdReq/TranslateIds/resourceYaml/sns-sqs/data');
141
+
142
+
143
+ // processTranslateIds
144
+ const createProcessTranslateIdsCompleteSnsOut = require('./TranslateIdReq/ProcessingTranslateIds/sns-out/data');
145
+ const createTranslateIdsProcessSnsQueue = require('./TranslateIdReq/ProcessingTranslateIds/sqs-sns/data');
146
+ const createTranslateIdsProcessFunctionYaml = require('./TranslateIdReq/ProcessingTranslateIds/functionYaml/data');
147
+ const createTranslateIdsProcessHandler = require('./TranslateIdReq/ProcessingTranslateIds/handler/dataHdrDsq');
148
+ const createTranslateIdsProcessMainFunction = require('./TranslateIdReq/ProcessingTranslateIds/mainFunction/data')
149
+ // findData
150
+ const createFindDataFunctionYaml = require('./FindData/FindDataYaml/data');
151
+ const createFindDataHandler = require('./FindData/Handler/data');
152
+ const createFindDataMainFunction = require('./FindData/mainFunction/data');
153
+
154
+ // processLogical
155
+ const createProcessLogicalHandler = require('./ProcessLogical/Handler/data');
156
+ const createProcessLogicalMainFunction = require('./ProcessLogical/mainFunction/data');
157
+ const createProcessLogicalFunctionYaml = require('./ProcessLogical/ProcessLogicalYaml/data');
158
+
159
+ // processLogicalPaginate
160
+ const createProcessLogicalPaginateHandlerDsq = require('./ProcessLogicalPagination/Handler/HdrDsq/data')
161
+ const createProcessLogicalPaginateHandlerSqs = require('./ProcessLogicalPagination/Handler/HdrSqs/data')
162
+ const createProcessLogicalPaginateMainFunction = require('./ProcessLogicalPagination/mainFunction/data');
163
+ const createProcessLogicalPaginateFunctionYamlHdrDsq = require('./ProcessLogicalPagination/FunctionYaml/HdrDsq/data')
164
+ const createProcessLogicalPaginateFunctionYamlHdrSqs = require('./ProcessLogicalPagination/FunctionYaml/HdrSqs/data')
165
+
120
166
  /**
121
167
  *
122
168
  * get template and send to
@@ -138,14 +184,15 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
138
184
 
139
185
  // define path for store yml file
140
186
  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/'),
187
+ appYaml: join(saveFilePath, `../sls_yaml/generatedCode/`),
188
+ resourceYaml: join(saveFilePath, `../../resource/sls_yaml/generatedCode/`),
189
+ lambdaPerAction: join(saveFilePath, '../src/generatedCode/ObjectTypePerActionEndpoint/'),
144
190
  externalService: join(saveFilePath, '../initial_setup/generatedCode/source/'),
145
191
  resourceLocation: join(saveFilePath, 'src/generatedCode/perAction/source/'),
146
192
  lamdaPerCombindActionPath: join(saveFilePath, `/generatedCode/lamdaPerCombindAction/source/`), // test
147
- lambdaPerObjectTypePath: join(saveFilePath, `/generatedCode/lambdaPerObjectType/source/`), // test
148
- updateRelationship: join(saveFilePath, `../src/generatedCode/RelationshipPerAction/source/`),
193
+ lambdaPerObjectTypePath: join(saveFilePath, `/generatedCode/lambdaPerObjectType/`), // test
194
+ updateRelationship: join(saveFilePath, `../src/generatedCode/RelationshipPerAction/`),
195
+ translateId: join(saveFilePath, `../src/generatedCode/TranslateId/`)
149
196
  };
150
197
 
151
198
 
@@ -153,6 +200,11 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
153
200
  let allObjSchemas = await getAllLocalObjectSchemasWithHierarchy(_izContext, objSchemaPath);
154
201
  // _izContext.logger.debug("allObjSchemas: ", allObjSchemas)
155
202
 
203
+ const findDataFunctionYaml = await createFindDataFunctionYaml(_izContext, allObjSchemas, saveFilePath);
204
+ const processLogicalFunctionYaml = await createProcessLogicalFunctionYaml(_izContext, allObjSchemas, saveFilePath);
205
+ const processLogicalPaginateFunctionYamlHdrDsq = await createProcessLogicalPaginateFunctionYamlHdrDsq(_izContext, allObjSchemas, saveFilePath);
206
+ const processLogicalPaginateFunctionYamlHdrSqs = await createProcessLogicalPaginateFunctionYamlHdrSqs(_izContext, allObjSchemas, saveFilePath);
207
+
156
208
  const allObjectRelationships = await getAllLocalRelationshipSchemas(_izContext, objSchemaPath);
157
209
 
158
210
  // _izContext.logger.debug("allObjectRelationships: ", allObjectRelationships)
@@ -175,22 +227,23 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
175
227
 
176
228
  // create External service
177
229
  const createFunctionIamRole = await createExternalLambdaRole(_izContext, allObjSchemas.records, allObjectRelationships, saveFilePath);
178
- const createSnsSubscription = await createExternalSnsSubscriptions(_izContext, allObjectRelationships, saveFilePath);
179
-
230
+ const createSnsSubscription = await createExternalSnsSubscriptions(_izContext, allObjectRelationships, allObjSchemas.records, saveFilePath);
180
231
  for (let objectSchema of allObjSchemas.records) {
181
-
182
232
  // 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);
233
+ const createSourceHdrInv = perActionGetHdrInvData(_izContext, objectSchema, saveFilePath);
234
+ const createSourceHdrApi = perActionGetHdrApiData(_izContext, objectSchema, saveFilePath);
235
+ const createSourceHdrSqs = perActionGetHdrSqsData(_izContext, objectSchema, saveFilePath);
236
+ const createSourceHdrDsq = perActionGetHdrDsqData(_izContext, objectSchema, saveFilePath);
187
237
 
188
238
  // wrap Handler Function
189
239
  const createSourceHandler = [...createSourceHdrInv, ...createSourceHdrApi, ...createSourceHdrSqs, ...createSourceHdrDsq];
190
240
 
191
241
  // generate main function
192
242
  const createMainFunctionGet = await mainFunctionGetData(_izContext, objectSchema, saveFilePath);
243
+ const createMainFunctionUpdate = await mainFunctionUpdateData(_izContext, objectSchema, saveFilePath)
244
+ const createMainFunctionCreate = await mainFunctionCreateData(_izContext, objectSchema, saveFilePath);
193
245
 
246
+ const createMainFunction = [...createMainFunctionGet, ...createMainFunctionUpdate, ...createMainFunctionCreate]
194
247
  // generate functionYaml File
195
248
  const createFunctionGetYamlHdrInv = functionGetYamlDataHdrInv(_izContext, objectSchema, saveFilePath);
196
249
  const createFunctionGetYamlHdrApi = functionGetYamlDataHdrApi(_izContext, objectSchema, saveFilePath);
@@ -203,29 +256,47 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
203
256
  // generate Resource ..via dynamoDb sns-in-sqs sns-put
204
257
  const createResourceDynamo = createSourceDataDynamoDB(_izContext, objectSchema, saveFilePath);
205
258
  const createResourceSnsInSqs = createSourceSnsAndSqs(_izContext, objectSchema, saveFilePath);
206
- const createResourceSnsOut = createDataForCreateSourceSnsOut(_izContext, objectSchema, saveFilePath)
259
+ const createResourceSnsOut = createDataForCreateSourceSnsOut(_izContext, objectSchema, saveFilePath);
260
+
261
+ // translateIdsMainFunction
262
+ const translateIdsMainFunction = await createTranslateIdsRequestMainFunction(_izContext, objectSchema, saveFilePath);
207
263
 
208
264
  // wrap main Resource
209
265
  const createMainResource = [...createResourceDynamo, ...createResourceSnsInSqs, ...createResourceSnsOut];
210
266
 
267
+
211
268
  createSourceParams = createSourceParams.concat([
212
269
  // ...createSourceMainResourcesObjectSchema,
213
270
  ...createSourceHandler, // create handler function
214
- ...createMainFunctionGet, // create main function
271
+ ...createMainFunction, // create main function
215
272
  ...createFunctionYaml, // create function.yaml
216
273
  ...createMainResource, // create resource yaml
274
+ ...translateIdsMainFunction,
217
275
  ]);
218
276
 
219
277
  // console.log("createSourceParams after concat: ", createSourceParams);
220
278
  }
279
+ // create UpdateNodeComplete
280
+ const createFunctionYamlOutUpdateNodeComplete = functionYamlOutUpdateComplete(_izContext, saveFilePath);
281
+ const createOutUpdateCompleteHandler = outUpdateCompleteHandler(_izContext, saveFilePath);
282
+ const createOutUpdateCompleteMainFunction = outUpdateCompleteMainFunction(_izContext, saveFilePath);
283
+ const createOutUpdateCompleteSnsInSqs = outUpdateCompleteSnsInSqs(_izContext, saveFilePath);
284
+ const createOutUpdateCompleteSnsOut = outUpdateCompleteSnsOut(_izContext, saveFilePath);
285
+
286
+ const createOutUpdateComplete = [...createFunctionYamlOutUpdateNodeComplete, ...createOutUpdateCompleteHandler, ...createOutUpdateCompleteMainFunction, ...createOutUpdateCompleteSnsInSqs, ...createOutUpdateCompleteSnsOut]
221
287
 
288
+ // create CreateNodeComplete
289
+ const createFunctionYamlOutCreateNodeComplete = functionYamlOutCreateComplete(_izContext, saveFilePath);
290
+
291
+
292
+ const createCreateNodeComplete = [...createFunctionYamlOutCreateNodeComplete]
222
293
 
223
294
  // create default data resource such as findData ProcessLogical and awaitingMultipleStep
224
295
  const createResourceFindDataAndProcessLogical = createDefaultSourceDataDynamoDB(_izContext, saveFilePath);
225
296
  const createResourceAwaitingMultipleStep = createAwaitingMultipleStepDynamoDbData(_izContext, saveFilePath);
226
297
  const createResourceDefaultSnsInSqsFindDataAndProcessLogical = createFindDataAndProcessLogicalDefaultSnsInSqs(_izContext, saveFilePath);
227
-
228
- const createMainResourceDefault = [...createResourceFindDataAndProcessLogical, ...createResourceDefaultSnsInSqsFindDataAndProcessLogical, ...createResourceAwaitingMultipleStep];
298
+ const createResourceDefaultSnsOutFindDataAndProcessLogical = createDefaultSnsOutForFindDataAndProcessLogical(_izContext, saveFilePath)
299
+ const createMainResourceDefault = [...createResourceFindDataAndProcessLogical, ...createResourceDefaultSnsInSqsFindDataAndProcessLogical, ...createResourceAwaitingMultipleStep, ...createResourceDefaultSnsOutFindDataAndProcessLogical];
229
300
 
230
301
  // create function yaml for update relationshipSchema per handler
231
302
  const createYamlUpdateRelationshipSchemaHdrSqs = createUpdateRelationshipFunctionYamlHdrSqs(_izContext, saveFilePath);
@@ -251,10 +322,8 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
251
322
  const createUpdateRelationshipSchemaSnsIn = createUpdateRelationshipSchemaSnsInSqsResource(_izContext, saveFilePath);
252
323
  // const createUpdateRelationshipSchemaSnsOut = createUpdateRelationshipSchemaSnsOutResource(_izContext, saveFilePath);
253
324
 
254
- const createResourceUpdateRelationshipSchema = [...createUpdateRelationshipSchemaSnsIn,];
255
-
256
325
  // warp function updateRelationshipSchemaData
257
- const createUpdateRelationshipSchemaData = [...createUpdateRelationshipSchemaPerAction, ...createResourceUpdateRelationshipSchema, ...createMainFunctionUpdateRelationshipSchema]
326
+ const createUpdateRelationshipSchemaData = [...createUpdateRelationshipSchemaPerAction, ...createUpdateRelationshipSchemaSnsIn, ...createMainFunctionUpdateRelationshipSchema, ...createYamlUpdateRelationshipSchema]
258
327
 
259
328
  // create UpdateRelationshipComplete Main Function
260
329
  const createUpdateRelationshipSchemaCompleteMain = createUpdateRelationshipSchemaCompleteMainFunction(_izContext, saveFilePath);
@@ -273,6 +342,8 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
273
342
  const createUpdateRelationshipSchemaCompleteData = [...createUpdateRelationshipSchemaCompleteFunctionYaml, ...createUpdateRelationshipSchemaCompleteHandler, ...createUpdateRelationshipSchemaCompleteSnsInSqsResource,
274
343
  ...createUpdateRelationshipSchemaCompleteSnsOutResource, ...createUpdateRelationshipSchemaCompleteMain];
275
344
 
345
+ const updateRelationshipSchemaDatas = [...createUpdateRelationshipSchemaData, ...createUpdateRelationshipSchemaCompleteData];
346
+
276
347
  // create CreateRelationshipSchema MainFunction
277
348
  const createCreateRelationshipSchemaMainFunction = createRelationshipSchemaMain(_izContext, saveFilePath);
278
349
 
@@ -299,16 +370,60 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
299
370
  const createRelationshipCompleteMain = createRelationshipCompleteMainFunction(_izContext, saveFilePath);
300
371
  const createRelationshipCompleteQueue = createRelationshipCompleteSnsInSqs(_izContext, saveFilePath);
301
372
  const createRelationshipCompleteOutsomething = createRelationshipCompleteSnsOut(_izContext, saveFilePath)
302
- const createRelationshipComplete = [...createRelationshipCompleteFunctionYml, ...createRelationshipCompleteHandler, ...createRelationshipCompleteMain, ...createRelationshipCompleteQueue, ...createRelationshipCompleteOutsomething]
373
+ const createCreateRelationshipComplete = [...createRelationshipCompleteFunctionYml, ...createRelationshipCompleteHandler, ...createRelationshipCompleteMain, ...createRelationshipCompleteQueue, ...createRelationshipCompleteOutsomething]
303
374
 
304
- createSourceParams.push(...createMainResourceDefault, ...createYamlUpdateRelationshipSchema,
305
- ...createUpdateRelationshipSchemaData,
306
- ...createUpdateRelationshipSchemaCompleteData,
307
- ...createCreateRelationshipData,
308
- ...createRelationshipComplete,
309
- createFunctionIamRole,
375
+ const createRelationshipSchemaDatas = [...createCreateRelationshipComplete, ...createCreateRelationshipData];
376
+
377
+ const translateIdsCacheIdsMainTable = createTranslateIdsCacheMainTable(_izContext, saveFilePath);
378
+ const translateIdsHandlerFunctionDsq = createTranslateIdsHandlerDsq(_izContext, saveFilePath);
379
+ const translateIdsHandlerFunctionSqs = createTranslateIdsHandlerSqs(_izContext, saveFilePath);
380
+ const translateIdsFunctionYamlDsq = createTranslateIdFunctionYamlHdrDsq(_izContext, saveFilePath);
381
+ const translateIdsFunctionYamlSqs = createTranslateIdFunctionYamlHdrSqs(_izContext, saveFilePath);
382
+ const translateIdsSnsAndSqsResourceQueue = createSnsAndSqsTranslateId(_izContext, saveFilePath);
383
+
384
+ const createTranslateIdsResourece = [...translateIdsCacheIdsMainTable, ...translateIdsHandlerFunctionDsq, ...translateIdsHandlerFunctionSqs,
385
+ ...translateIdsFunctionYamlDsq, ...translateIdsFunctionYamlSqs, ...translateIdsSnsAndSqsResourceQueue
386
+ ]
387
+
388
+ const translateIdsProcessingSnsOut = createProcessTranslateIdsCompleteSnsOut(_izContext, saveFilePath);
389
+ const translateIdsProcessingQueue = createTranslateIdsProcessSnsQueue(_izContext, saveFilePath);
390
+ const translateIdsProcessingFunctionYaml = createTranslateIdsProcessFunctionYaml(_izContext, saveFilePath);
391
+ const translateIdsProcessingHandler = createTranslateIdsProcessHandler(_izContext, saveFilePath);
392
+ const translateIdsProcessingMainFunction = createTranslateIdsProcessMainFunction(_izContext, saveFilePath);
393
+ const createTranslateIdsProcessing = [...translateIdsProcessingQueue, ...translateIdsProcessingFunctionYaml, ...translateIdsProcessingHandler, ...translateIdsProcessingMainFunction, ...translateIdsProcessingSnsOut]
394
+
395
+ const findDataHandlerSqs = createFindDataHandler(_izContext, saveFilePath);
396
+ const findDataMainFunction = await createFindDataMainFunction(_izContext, saveFilePath);
397
+
398
+ const findDataResource = [findDataHandlerSqs, findDataMainFunction, findDataFunctionYaml];
399
+
400
+ const processLogicalHandler = createProcessLogicalHandler(_izContext, saveFilePath);
401
+ const processLogicalMainFunction = createProcessLogicalMainFunction(_izContext, saveFilePath)
402
+
403
+ const processLogicalResource = [processLogicalHandler, processLogicalMainFunction, processLogicalFunctionYaml]
404
+
405
+ const processLogicalPaginateHandlerDsq = createProcessLogicalPaginateHandlerDsq(_izContext, saveFilePath);
406
+ const processLogicalPaginateHandlerSqs = createProcessLogicalPaginateHandlerSqs(_izContext, saveFilePath);
407
+ const processLogicalPaginateMainFunction = createProcessLogicalPaginateMainFunction(_izContext, saveFilePath);
408
+ const processLogicalPaginateResource = [processLogicalPaginateFunctionYamlHdrDsq, processLogicalPaginateFunctionYamlHdrSqs, processLogicalPaginateHandlerDsq, processLogicalPaginateHandlerSqs, processLogicalPaginateMainFunction]
409
+
410
+ createSourceParams.push(...createMainResourceDefault,
310
411
  createSnsSubscription,
412
+ createFunctionIamRole,
413
+ ...createOutUpdateComplete,
414
+ // ...createCreateNodeComplete,
415
+ ...findDataResource,
416
+ ...processLogicalResource,
417
+ ...processLogicalPaginateResource
311
418
  );
419
+ if (allObjectRelationships.length) {
420
+ createSourceParams.push(
421
+ ...updateRelationshipSchemaDatas,
422
+ ...createRelationshipSchemaDatas,
423
+ ...createTranslateIdsResourece,
424
+ ...createTranslateIdsProcessing,
425
+ )
426
+ }
312
427
  // console.log("createSourceParams", createSourceParams);
313
428
 
314
429
  // 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.createNodeComplete)
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,172 @@
1
+ /*
2
+ Copyright (C) 2021 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
+ 'use strict';
18
+ const asyncFlowSharedLib = require('@izara_project/izara-shared/src/AsyncFlowSharedLib');
19
+ const dynamodbSharedLib = require('@izara_project/izara-shared/src/DynamodbSharedLib');
20
+ const snsSharedLib = require('@izara_project/izara-shared/src/SnsSharedLib');
21
+ const sns = require('@izara_project/izara-core-library-external-request/src/resources/Sns');
22
+ const callingFlowSharedLib = require('@izara_project/izara-shared/src/CallingFlowSharedLib');
23
+ const _ = require('lodash');
24
+ const hash = require("object-hash")
25
+
26
+
27
+ const PREFIX = {
28
+ CREATE_OBJECT_ASYNC: "createObjectAsync",
29
+ CREATE_OBJECT_ASYNC_COMPLETE: "createObjectAsyncComplete"
30
+ }
31
+
32
+ /**
33
+ *
34
+ * @param {*} _izContext
35
+ * @param {*} returnValue
36
+ * @param {*} status
37
+ * @param {*} errorsFounds
38
+ * @param {*} graphServiceTag
39
+ * @param {*} passBackProperties
40
+ * @param {*} callingFlowConfig
41
+ returnValue = {
42
+ queryResult: returnCreateNode,
43
+ objType,
44
+ objInstance,
45
+ relationships,
46
+ settings
47
+ }
48
+ */
49
+ module.exports.createObjectComplete = async (
50
+ _izContext,
51
+ returnValue,
52
+ status,
53
+ errorsFound,
54
+ graphServiceTag,
55
+ passBackProperties,
56
+ callingFlowConfig
57
+ ) => {
58
+ try {
59
+ _izContext.logger.debug("function createObjectComplete:", {
60
+ returnValue,
61
+ status,
62
+ errorsFound,
63
+ graphServiceTag,
64
+ passBackProperties,
65
+ callingFlowConfig
66
+ });
67
+
68
+ let errorFounds = [];
69
+
70
+ if (_.isEmpty(returnValue)) {
71
+ _izContext.logger.debug("message callingFlowProperties is empty");
72
+ throw new NoRetryError("message not an object")
73
+ };
74
+ // validate.
75
+ if (!returnValue.hasOwnProperty("queryResult")) {
76
+ errorFounds.push("message is not have property queryResult, should be not happen");
77
+ };
78
+ if (!returnValue.hasOwnProperty("objType")) {
79
+ errorFounds.push("message is not have property objType, should be not happen");
80
+ };
81
+ if (!returnValue.hasOwnProperty("objInstance")) {
82
+ errorFounds.push("message is not have property objInstance, should be not objInstance");
83
+ };
84
+
85
+ if (status == "error" && errorsFound.length > 0) {
86
+ errorFounds.push(errorsFound);
87
+ } else if (status == "error" && errorsFound.length == 0) {
88
+ errorFounds.push("[invalid]statur is error not have errorfound form graphService");
89
+
90
+ };
91
+ if (status === "complete" && errorsFound.length > 0) {
92
+ errorFounds.push("[Invalid] status is commplete should be not have errorsFound");
93
+ };
94
+ if (graphServiceTag == "") {
95
+ errorFounds.push("[Invalid] graphServiceTag is not empty string");
96
+ };
97
+
98
+ if (errorsFound.length > 0) {
99
+ _izContext.logger.debug("Have error form grapService:", errorsFound);
100
+ errorFounds = errorFounds.concat(errorsFound);
101
+ };
102
+
103
+ // check and remove awaitngStep finish.
104
+ let awaitingStepId = asyncFlowSharedLib.createAwaitingStepId((hash(
105
+ {
106
+ objType: returnValue.objType,
107
+ graphServerTag: graphServiceTag,
108
+ identifiers: returnValue.objInstance.identifiers
109
+ }
110
+ )),
111
+ PREFIX.CREATE_OBJECT_ASYNC
112
+ )
113
+ _izContext.logger.debug("awaitingStepId:", awaitingStepId);
114
+
115
+ let recordAwaitingSteps = await dynamodbSharedLib.query(
116
+ _izContext,
117
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleSteps"),
118
+ {
119
+ awaitingStepId: awaitingStepId
120
+ }
121
+ );
122
+ _izContext.logger.debug("record awaitingSteps::", recordAwaitingSteps);
123
+
124
+ nextAwaitingAteps:
125
+ for (let listRecordAwaitingStep of recordAwaitingSteps.Items) {
126
+
127
+ _izContext.logger.debug("iterate RecordAwaitingStep:", listRecordAwaitingStep);
128
+
129
+
130
+ if (!await asyncFlowSharedLib.checkAllAwaitingStepsFinished(
131
+ _izContext,
132
+ listRecordAwaitingStep.pendingStepId,
133
+ awaitingStepId
134
+ )) {
135
+ _izContext.logger.debug("!Waiting record form other graph::")
136
+ // **** add step of remove awaitingMultiplestep!! ??
137
+ continue nextAwaitingAteps
138
+ };
139
+
140
+ await asyncFlowSharedLib.removeAwaitingMultipleStep(
141
+ _izContext,
142
+ awaitingStepId,
143
+ listRecordAwaitingStep.pendingStepId,
144
+ );
145
+ _izContext.logger.debug("Remove awaitingStep finish")
146
+ };
147
+
148
+ // seagame: problem about lambdaComplete is will missing errorsFound from request if have 2 request
149
+ // one send with errorsFound and one send without errorsFound
150
+ // this scenario can complete with or without errorsFound
151
+ let messageObject = {
152
+ objType: returnValue.objType,
153
+ identifierId: returnValue.objInstance.identifiers,
154
+ errorFounds: errorFounds
155
+ };
156
+
157
+ messageObject = callingFlowSharedLib.addParentPassBackPropertiesToSnsResponseMessageObject(passBackProperties, messageObject)
158
+ let messageAttributes = callingFlowSharedLib.addParentPassBackCallingFlowToSnsResponseMessageAttributes(passBackProperties, {})
159
+
160
+ let sendMessageOutCreateObjectComplete = {
161
+ Message: JSON.stringify(messageObject),
162
+ MessageAttributes: sns.createStringMessageAttributes(_izContext, messageAttributes),
163
+ TopicArn: await snsSharedLib.snsTopicArn(_izContext, "OutCreateObjectComplete")
164
+ };
165
+ _izContext.logger.debug("Send message to OutCreateObjectComplete :::>", sendMessageOutCreateObjectComplete)
166
+ await sns.publishAsync(_izContext, sendMessageOutCreateObjectComplete);
167
+
168
+
169
+ } catch (err) {
170
+ throw (err)
171
+ }
172
+ }