@izara_project/izara-market-library-service-schemas 1.0.29 → 1.0.31

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 (170) hide show
  1. package/package.json +1 -1
  2. package/src/GenerateCodeLibs/src/Consts.js +11 -9
  3. package/src/GenerateCodeLibs/src/GenerateCodeLibs.js +54 -21
  4. package/src/MainLibs/src/Consts.js +43 -20
  5. package/src/reStructure/GenerateCode.js +2 -1
  6. package/src/reStructure/TemplateConfig.js +5 -1
  7. package/src/reStructure/TemplateData/EndpointPerService/generateTemplateData.js +108 -0
  8. package/src/reStructure/TemplateData/EndpointPerService/handler/api/data.js +76 -0
  9. package/src/reStructure/TemplateData/EndpointPerService/handler/api/request.json +7 -0
  10. package/src/reStructure/TemplateData/EndpointPerService/handler/api/template.ejs +73 -0
  11. package/src/reStructure/TemplateData/EndpointPerService/handler/dsq/data.js +81 -0
  12. package/src/reStructure/TemplateData/EndpointPerService/handler/dsq/request.json +7 -0
  13. package/src/reStructure/TemplateData/EndpointPerService/handler/dsq/template.ejs +125 -0
  14. package/src/reStructure/TemplateData/EndpointPerService/handler/inv/data.js +70 -0
  15. package/src/reStructure/TemplateData/EndpointPerService/handler/inv/request.json +7 -0
  16. package/src/reStructure/TemplateData/EndpointPerService/handler/inv/template.ejs +73 -0
  17. package/src/reStructure/TemplateData/EndpointPerService/handler/sqs/data.js +79 -0
  18. package/src/reStructure/TemplateData/EndpointPerService/handler/sqs/request.json +7 -0
  19. package/src/reStructure/TemplateData/EndpointPerService/handler/sqs/template.ejs +126 -0
  20. package/src/reStructure/TemplateData/{flowSchema/components/schema/inProcess/handler → EndpointPerService/mainFunction/create}/data.js +20 -13
  21. package/src/reStructure/TemplateData/EndpointPerService/mainFunction/create/template.ejs +624 -0
  22. package/src/reStructure/TemplateData/{flowSchema/components/schema/inProcess/mainFunction → EndpointPerService/mainFunction/delete}/data.js +18 -11
  23. package/src/reStructure/TemplateData/EndpointPerService/mainFunction/delete/template.ejs +176 -0
  24. package/src/reStructure/TemplateData/EndpointPerService/mainFunction/get/data.js +56 -0
  25. package/src/reStructure/TemplateData/EndpointPerService/mainFunction/get/template.ejs +234 -0
  26. package/src/reStructure/TemplateData/EndpointPerService/mainFunction/update/data.js +56 -0
  27. package/src/reStructure/TemplateData/EndpointPerService/mainFunction/update/template.ejs +330 -0
  28. package/src/reStructure/TemplateData/EndpointPerService/yaml/data.js +177 -0
  29. package/src/reStructure/TemplateData/EndpointPerService/yaml/template.ejs +26 -0
  30. package/src/reStructure/TemplateData/externalService/generateTemplateData.js +1 -1
  31. package/src/reStructure/TemplateData/externalService/lambdaRole/data.js +91 -249
  32. package/src/reStructure/TemplateData/externalService/lambdaRole/template.ejs +1 -1
  33. package/src/reStructure/TemplateData/externalService/snsTopicSubscriptions/data.js +10 -8
  34. package/src/reStructure/TemplateData/externalService/snsTopicSubscriptions/template.ejs +1 -1
  35. package/src/reStructure/TemplateData/findData/findDataYaml/data.js +2 -2
  36. package/src/reStructure/TemplateData/flowSchema/components/upload/confirmReserved/functionYaml/data.js +8 -7
  37. package/src/reStructure/TemplateData/flowSchema/components/upload/confirmReserved/handler/data.js +4 -4
  38. package/src/reStructure/TemplateData/flowSchema/components/upload/confirmReserved/mainFunction/data.js +2 -2
  39. package/src/reStructure/TemplateData/flowSchema/components/upload/createObject/functionYaml/data.js +5 -31
  40. package/src/reStructure/TemplateData/flowSchema/components/upload/createObject/handler/data.js +4 -22
  41. package/src/reStructure/TemplateData/flowSchema/components/upload/createObject/handler/template.ejs +3 -31
  42. package/src/reStructure/TemplateData/flowSchema/components/upload/createObject/mainFunction/data.js +1 -1
  43. package/src/reStructure/TemplateData/flowSchema/components/upload/createObjectComplete/functionYaml/data.js +6 -6
  44. package/src/reStructure/TemplateData/flowSchema/components/upload/createObjectComplete/handler/data.js +4 -4
  45. package/src/reStructure/TemplateData/flowSchema/components/upload/createObjectComplete/mainFunction/data.js +4 -4
  46. package/src/reStructure/TemplateData/flowSchema/components/upload/createObjectComplete/sns-sqs/data.js +1 -1
  47. package/src/reStructure/TemplateData/flowSchema/components/upload/createObjectComplete/sns-sqs/template.ejs +1 -1
  48. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → createPresignUrl}/functionYaml/data.js +45 -14
  49. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → createPresignUrl}/functionYaml/template.ejs +3 -0
  50. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → createPresignUrl}/handler/data.js +6 -6
  51. package/src/reStructure/TemplateData/flowSchema/{legacy/hookCode-old/handler/templateAsyncHandler.ejs → components/upload/preSignUrl/createPresignUrl/handler/template.ejs} +26 -11
  52. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → createPresignUrl}/mainFunction/data.js +11 -8
  53. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/createPresignUrl/mainFunction/template.ejs +253 -0
  54. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{reservedLimit → createPresignUrl}/queue/data.js +1 -1
  55. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/functionYaml/data.js +14 -42
  56. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/functionYaml/template.ejs +0 -3
  57. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/handler/data.js +6 -6
  58. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/handler/template.ejs +40 -45
  59. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/mainFunction/data.js +5 -8
  60. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/mainFunction/template.ejs +100 -190
  61. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → reservedLimit}/sqs/data.js +4 -4
  62. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → reservedLimit}/sqs/template.ejs +2 -2
  63. package/src/reStructure/TemplateData/flowSchema/components/upload/processFile/functionYml/HdrS3/data.js +9 -7
  64. package/src/reStructure/TemplateData/flowSchema/components/upload/processFile/handler/handlerS3/data.js +4 -4
  65. package/src/reStructure/TemplateData/flowSchema/components/upload/processFile/mainFunction/data.js +4 -4
  66. package/src/reStructure/TemplateData/flowSchema/components/upload/processFile/queue/s3Template.ejs +1 -1
  67. package/src/reStructure/TemplateData/flowSchema/components/upload/relate/S3/data.js +5 -2
  68. package/src/reStructure/TemplateData/flowSchema/components/websocket/connect/functionYaml/data.js +3 -3
  69. package/src/reStructure/TemplateData/flowSchema/components/websocket/connect/functionYaml/template.ejs +2 -0
  70. package/src/reStructure/TemplateData/flowSchema/components/websocket/connect/handler/data.js +3 -2
  71. package/src/reStructure/TemplateData/flowSchema/components/websocket/connect/handler/template.ejs +4 -16
  72. package/src/reStructure/TemplateData/flowSchema/flowSchemaOwnTopic/flowSchema/functionYaml/data.js +115 -0
  73. package/src/reStructure/TemplateData/flowSchema/{components/schema/inProcess → flowSchemaOwnTopic/flowSchema}/functionYaml/template.ejs +1 -20
  74. package/src/reStructure/TemplateData/flowSchema/flowSchemaOwnTopic/flowSchema/handler/data.js +70 -0
  75. package/src/reStructure/TemplateData/flowSchema/{components/schema/inProcess → flowSchemaOwnTopic/flowSchema}/handler/template.ejs +14 -32
  76. package/src/reStructure/TemplateData/flowSchema/flowSchemaOwnTopic/flowSchema/mainFunction/data.js +64 -0
  77. package/src/reStructure/TemplateData/flowSchema/flowSchemaOwnTopic/flowSchema/mainFunction/template.ejs +104 -0
  78. package/src/reStructure/TemplateData/flowSchema/flowSchemaOwnTopic/flowSchemaComplete/functionYaml/data.js +115 -0
  79. package/src/reStructure/TemplateData/flowSchema/flowSchemaOwnTopic/flowSchemaComplete/functionYaml/template.ejs +20 -0
  80. package/src/reStructure/TemplateData/flowSchema/flowSchemaOwnTopic/flowSchemaComplete/handler/data.js +71 -0
  81. package/src/reStructure/TemplateData/flowSchema/flowSchemaOwnTopic/flowSchemaComplete/handler/template.ejs +85 -0
  82. package/src/reStructure/TemplateData/flowSchema/{components/upload/hook/hookLogic → flowSchemaOwnTopic/flowSchemaComplete/mainFunction}/data.js +30 -10
  83. package/src/reStructure/TemplateData/flowSchema/flowSchemaOwnTopic/flowSchemaComplete/mainFunction/template.ejs +105 -0
  84. package/src/reStructure/TemplateData/flowSchema/generateTemplateData.js +78 -55
  85. package/src/reStructure/TemplateData/generateRole/createSharedResource.js +21 -1
  86. package/src/reStructure/TemplateData/perActionComplete/create/mainFunction/template.ejs +35 -44
  87. package/src/reStructure/TemplateData/perActionComplete/create/sns-out/template.ejs +1 -1
  88. package/src/reStructure/TemplateData/perActionComplete/create/yaml/data.js +4 -5
  89. package/src/reStructure/TemplateData/perActionComplete/delete/yaml/data.js +5 -4
  90. package/src/reStructure/TemplateData/perActionComplete/generateTemplateData.js +15 -2
  91. package/src/reStructure/TemplateData/perActionComplete/get/yaml/data.js +7 -4
  92. package/src/reStructure/TemplateData/perActionComplete/update/sns-out/data.js +1 -1
  93. package/src/reStructure/TemplateData/perActionComplete/update/yaml/data.js +5 -4
  94. package/src/reStructure/TemplateData/processLogical/yaml/data.js +3 -3
  95. package/src/reStructure/TemplateData/processLogicalPagination/yaml/dsq/data.js +1 -1
  96. package/src/reStructure/TemplateData/processLogicalPagination/yaml/sqs/data.js +2 -2
  97. package/src/reStructure/TemplateData/relationshipPerAction/create/action/functionYaml/api/data.js +1 -1
  98. package/src/reStructure/TemplateData/relationshipPerAction/create/action/functionYaml/dsq/data.js +1 -1
  99. package/src/reStructure/TemplateData/relationshipPerAction/create/action/functionYaml/inv/data.js +1 -1
  100. package/src/reStructure/TemplateData/relationshipPerAction/create/action/functionYaml/sqs/data.js +3 -3
  101. package/src/reStructure/TemplateData/relationshipPerAction/create/action/sns-in-sqs/snsTemplate.ejs +1 -1
  102. package/src/reStructure/TemplateData/relationshipPerAction/create/complete/functionYaml/data.js +2 -2
  103. package/src/reStructure/TemplateData/relationshipPerAction/create/complete/mainFunction/data.js +1 -1
  104. package/src/reStructure/TemplateData/relationshipPerAction/create/complete/sns-in-sqs/template.ejs +0 -1
  105. package/src/reStructure/TemplateData/relationshipPerAction/create/complete/sns-out/template.ejs +1 -1
  106. package/src/reStructure/TemplateData/relationshipPerAction/delete/action/functionYaml/api/data.js +1 -1
  107. package/src/reStructure/TemplateData/relationshipPerAction/delete/action/functionYaml/dsq/data.js +1 -1
  108. package/src/reStructure/TemplateData/relationshipPerAction/delete/action/functionYaml/inv/data.js +1 -1
  109. package/src/reStructure/TemplateData/relationshipPerAction/delete/action/functionYaml/sqs/data.js +3 -3
  110. package/src/reStructure/TemplateData/relationshipPerAction/delete/action/sns-in-sqs/snsTemplate.ejs +1 -1
  111. package/src/reStructure/TemplateData/relationshipPerAction/delete/complete/functionYaml/data.js +2 -2
  112. package/src/reStructure/TemplateData/relationshipPerAction/delete/complete/sns-out/template.ejs +1 -1
  113. package/src/reStructure/TemplateData/relationshipPerAction/get/action/functionYaml/api/data.js +1 -1
  114. package/src/reStructure/TemplateData/relationshipPerAction/get/action/functionYaml/dsq/data.js +1 -1
  115. package/src/reStructure/TemplateData/relationshipPerAction/get/action/functionYaml/inv/data.js +1 -1
  116. package/src/reStructure/TemplateData/relationshipPerAction/get/action/functionYaml/sqs/data.js +4 -4
  117. package/src/reStructure/TemplateData/relationshipPerAction/get/action/sns-in-sqs/snsTemplate.ejs +1 -1
  118. package/src/reStructure/TemplateData/relationshipPerAction/get/complete/functionYaml/data.js +2 -2
  119. package/src/reStructure/TemplateData/relationshipPerAction/get/complete/sns-out/template.ejs +1 -1
  120. package/src/reStructure/TemplateData/relationshipPerAction/update/action/functionYaml/api/data.js +1 -1
  121. package/src/reStructure/TemplateData/relationshipPerAction/update/action/functionYaml/dsq/data.js +1 -1
  122. package/src/reStructure/TemplateData/relationshipPerAction/update/action/functionYaml/inv/data.js +1 -1
  123. package/src/reStructure/TemplateData/relationshipPerAction/update/action/functionYaml/sqs/data.js +4 -4
  124. package/src/reStructure/TemplateData/relationshipPerAction/update/action/sns-in-sqs/snsTemplate.ejs +1 -1
  125. package/src/reStructure/TemplateData/relationshipPerAction/update/complete/functionYaml/data.js +2 -2
  126. package/src/reStructure/TemplateData/relationshipPerAction/update/complete/sns-out/template.ejs +1 -1
  127. package/src/reStructure/TemplateData/resourceYaml/dynamodb/defaultDynamoDbTable.js +1 -1
  128. package/src/reStructure/TemplateData/resourceYaml/dynamodb/generateDynamoPerLink.js +1 -1
  129. package/src/reStructure/TemplateData/resourceYaml/dynamodb/mainResourcePerObjectSchemaData.js +1 -1
  130. package/src/reStructure/TemplateData/resourceYaml/generateTemplateData.js +6 -12
  131. package/src/reStructure/TemplateData/resourceYaml/sns-in-sqs/defaultSnsInSqsForFindDataAndProcessLogical.js +1 -1
  132. package/src/reStructure/TemplateData/resourceYaml/sns-in-sqs/snsAndSqsPerActionData.js +22 -49
  133. package/src/reStructure/TemplateData/resourceYaml/sns-in-sqs/snsTemplate.ejs +1 -1
  134. package/src/reStructure/TemplateData/resourceYaml/sns-out/data.js +8 -24
  135. package/src/reStructure/TemplateData/resourceYaml/sns-out/template.ejs +1 -1
  136. package/src/reStructure/TemplateData/testTemplate/template.ejs +0 -5
  137. package/src/reStructure/TemplateData/flowSchema/components/schema/inProcess/functionYaml/data.js +0 -76
  138. package/src/reStructure/TemplateData/flowSchema/components/schema/inProcess/sns-sqs/data.js +0 -35
  139. package/src/reStructure/TemplateData/flowSchema/components/schema/outComplete/functionYaml/data.js +0 -34
  140. package/src/reStructure/TemplateData/flowSchema/components/schema/outComplete/functionYaml/template.ejs +0 -0
  141. package/src/reStructure/TemplateData/flowSchema/components/schema/outComplete/handler/data.js +0 -34
  142. package/src/reStructure/TemplateData/flowSchema/components/schema/outComplete/handler/template.ejs +0 -0
  143. package/src/reStructure/TemplateData/flowSchema/components/schema/outComplete/mainFunction/data.js +0 -34
  144. package/src/reStructure/TemplateData/flowSchema/components/schema/outComplete/mainFunction/template.ejs +0 -0
  145. package/src/reStructure/TemplateData/flowSchema/components/schema/outComplete/sns-sqs/data.js +0 -34
  146. package/src/reStructure/TemplateData/flowSchema/components/schema/outComplete/sns-sqs/template.ejs +0 -0
  147. package/src/reStructure/TemplateData/flowSchema/components/upload/hook/handler/data.js +0 -93
  148. package/src/reStructure/TemplateData/flowSchema/components/upload/hook/handler/templateAsyncHandler.ejs +0 -110
  149. package/src/reStructure/TemplateData/flowSchema/components/upload/hook/handler/templateSyncHandler.ejs +0 -49
  150. package/src/reStructure/TemplateData/flowSchema/components/upload/hook/mainFunction/data.js +0 -65
  151. package/src/reStructure/TemplateData/flowSchema/components/upload/hook/mainFunction/template.ejs +0 -7
  152. package/src/reStructure/TemplateData/flowSchema/components/upload/hook/queue/data.js +0 -72
  153. package/src/reStructure/TemplateData/flowSchema/components/upload/hook/queue/snsTemplate.ejs +0 -59
  154. package/src/reStructure/TemplateData/flowSchema/components/upload/hook/queue/sqsTemplate.ejs +0 -43
  155. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/getSignUrls/handler/template.ejs +0 -120
  156. package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/getSignUrls/mainFunction/template.ejs +0 -163
  157. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/functionYaml/data.js +0 -101
  158. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/functionYaml/template.ejs +0 -43
  159. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/handler/data.js +0 -93
  160. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/handler/templateSyncHandler.ejs +0 -49
  161. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/hookLogic/data.js +0 -64
  162. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/mainFunction/data.js +0 -66
  163. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/mainFunction/template.ejs +0 -30
  164. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/queue/data.js +0 -124
  165. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/queue/snsTemplate.ejs +0 -59
  166. package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/queue/sqsTemplate.ejs +0 -43
  167. package/src/reStructure/TemplateData/relationshipPerAction.zip +0 -0
  168. /package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{reservedLimit → createPresignUrl}/queue/template.ejs +0 -0
  169. /package/src/reStructure/TemplateData/flowSchema/{components/schema/inProcess/mainFunction/template.ejs → flowSchemaOwnTopic/sns-in/data.js} +0 -0
  170. /package/src/reStructure/TemplateData/flowSchema/{components/schema/inProcess/sns-sqs/template.ejs → flowSchemaOwnTopic/sns-out/data.js} +0 -0
@@ -0,0 +1,253 @@
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
+
18
+ 'use strict';
19
+
20
+ const asyncFlowSharedLib = require('@izara_project/izara-core-library-asynchronous-flow');
21
+ const snsSharedLib = require('@izara_project/izara-core-library-sns');
22
+ const callingFlowSharedLib = require('@izara_project/izara-core-library-calling-flow');
23
+ const lambdaSharedLib = require('@izara_project/izara-core-library-lambda');
24
+ const dynamodbSharedLib = require('@izara_project/izara-core-library-dynamodb');
25
+
26
+ const externalRequest = require('@izara_project/izara-core-library-external-request')
27
+ const lambda = externalRequest.lambda;
28
+ const sns = externalRequest.sns;
29
+
30
+ const { S3Client } = require('@aws-sdk/client-s3');
31
+ const client = new S3Client({ region: 'us-east-2' });
32
+ const { createPresignedPost } = require('@aws-sdk/s3-presigned-post');
33
+ const consts = require('@izara_project/izara-middleware/src/MiddlewareCore/Consts')
34
+
35
+ const { postToConnection } = require("../../libs/source/ImportDataLib");
36
+ const hash = require('object-hash');
37
+ const utils = require('@izara_project/izara-market-library-service-schemas/src/MainLibs/src/Utils');
38
+ const coreConsts = require('@izara_project/izara-core-library-core/src/Consts');
39
+ const { getNestObject } = require("../../libs/source/ImportDataLib");
40
+ const { EXTERNAL_SERVICE_NAME } = require('@izara_project/izara-market-library-service-schemas/src/GenerateCodeLibs/src/Consts');
41
+ /**
42
+ * description of function.
43
+ * @param {Object} _izContext
44
+ * @param {CorrelationIds} _izContext.correlationIds - property of _izContext
45
+ * @param {Logger} _izContext.logger - property of _izContext
46
+ * @param {Logger} _izContext.logger - property of _izContext
47
+ * @param {Object} returnMessage - limitValue or limitFound
48
+ * @param {Array} errorsFound - array
49
+ * @param {boolean} passStatus - true || false
50
+ * @param {Object} passBackProperties - identifier
51
+ *
52
+ * @returns {object} returnResponse
53
+ */
54
+
55
+ module.exports.createPresignUrl = async (
56
+ _izContext,
57
+ returnMessage,
58
+ errorsFound,
59
+ passStatus,
60
+ passBackProperties
61
+ ) => {
62
+
63
+ try {
64
+
65
+ _izContext.logger.debug('----- createPresignUrl event params -----', {
66
+ returnMessage: returnMessage,
67
+ errorsFound: errorsFound,
68
+ passStatus: passStatus,
69
+ passBackProperties: passBackProperties
70
+ });
71
+
72
+ const servicePendingId = passBackProperties.passBackProperties.identifier.servicePendingId; // importBatchId
73
+ const reservedDataId = passBackProperties.passBackProperties.identifier.reservedDataId;
74
+ const objType = passBackProperties.passBackProperties.objType
75
+
76
+ const correlationId = _izContext.correlationIds.get(consts.X_CORRELATION_ID)
77
+ const connectionId = _izContext.correlationIds.get(consts.CONNECTION_ID)
78
+
79
+ // getImportBatchMain from table
80
+ let importBatchMain = await lambda.invokeSync(_izContext,
81
+ await lambdaSharedLib.lambdaFunctionName(_izContext, "ImportBatchMainGetHdrInv"),
82
+ {
83
+ identifiers: {
84
+ importBatchId: servicePendingId
85
+ }
86
+ }
87
+ )
88
+ _izContext.logger.debug("importBatchMain", importBatchMain);
89
+
90
+ const {
91
+ importBatchId
92
+ } = importBatchMain.identifiers
93
+
94
+ const {
95
+ importBatchStatus,
96
+ importConfigId,
97
+ fileName,
98
+ fileSize,
99
+ importType,
100
+ startTime,
101
+ submittedByUserId,
102
+ userId
103
+ } = importBatchMain.fields
104
+
105
+ let uniqueIdentify = getNestObject(
106
+ _izContext,
107
+ returnMessage,
108
+ ['limitFound', 'runningTotal', 'uniqueIdentify', 'usedTimestampId']
109
+ );
110
+ _izContext.logger.debug("uniqueIdentify", uniqueIdentify);
111
+
112
+ await dynamodbSharedLib.putItem(_izContext,
113
+ await dynamodbSharedLib.tableName(_izContext, "ReservedDataMain"),
114
+ {
115
+ servicePendingId: importBatchId, // importBatchId
116
+ reservedDataId: reservedDataId,
117
+ reservedValue: fileSize,
118
+ uniqueIdentify: uniqueIdentify
119
+ }
120
+ );
121
+
122
+ if (passStatus === false) { // if passStatus false post message to client
123
+ // use correlationId to get connectionId and use connectionId to post message to client
124
+
125
+ _izContext.logger.debug("reserved has reach limit");
126
+
127
+ errorsFound.push("reserved has reach limit")
128
+ // update importBatchMainTable
129
+ let updateImportBatchMainMsg = {
130
+ objInstanceFull: {
131
+ identifiers: {
132
+ importBatchId: importBatchId
133
+ },
134
+ fields: {
135
+ importBatchStatus: "error",
136
+ errorsFound: errorsFound
137
+ }
138
+ }
139
+ }
140
+
141
+ let sendMessageToUpdateImportBatch = {
142
+ Message: JSON.stringify(updateImportBatchMainMsg),
143
+ TopicArn: await snsSharedLib.snsTopicArn(_izContext, `InImportBatchMainUpdate`)
144
+ }
145
+ _izContext.logger.debug("sendMessageToUpdateImportBatch", sendMessageToUpdateImportBatch);
146
+
147
+ // cancel reserved
148
+
149
+
150
+ let cancelReservedMsg = {
151
+ userId: userId,
152
+ limitTag: returnMessage.limitTag,
153
+ uniqueIdentify: uniqueIdentify
154
+ };
155
+
156
+ let sendMessageToCancelReserved = {
157
+ Message: JSON.stringify(cancelReservedMsg),
158
+ TopicArn: await snsSharedLib.snsTopicArn(_izContext, 'InCancelUsage', EXTERNAL_SERVICE_NAME.accountLimits)
159
+ };
160
+
161
+ _izContext.logger.debug("sendMessageToCancelReserved", sendMessageToCancelReserved);
162
+ await sns.publishAsync(_izContext, sendMessageToCancelReserved);
163
+
164
+ await postToConnection({ message: "reserved has reach limit" }, connectionId)
165
+ // after post message delete websocket task
166
+ await dynamodbSharedLib.deleteItem(_izContext,
167
+ await dynamodbSharedLib.tableName(_izContext, "WebSocketTask"),
168
+ {
169
+ taskKey: correlationId,
170
+ connectionId: connectionId
171
+ }
172
+ )
173
+ }
174
+
175
+ // store reservedDataId and servicePendingId in ReservedDataMain
176
+
177
+
178
+ const Key = `${fileName}.${importType}`
179
+
180
+ const maximumSize = fileSize * 1048576 // convert to byte unit for restrict
181
+ _izContext.logger.debug("maximumSize", maximumSize);
182
+
183
+ // create PresignUrl
184
+ let createPresignUrlParam = {
185
+ Bucket: "generatecodetemplatebas-integration-test",
186
+ Key: Key,
187
+ Conditions: [
188
+ ["content-length-range", 0, maximumSize],
189
+ ["starts-with", "$Content-Type", "file/csv"],
190
+ ["eq", "$x-amz-meta-importBatchId", importBatchId]
191
+ ],
192
+ fields: {},
193
+ expires: 86400
194
+ };
195
+ _izContext.logger.debug('createPresignUrlParam', createPresignUrlParam);
196
+
197
+ const uploadUrl = await createPresignedPost(client, createPresignUrlParam);
198
+
199
+ uploadUrl.fields['x-amz-meta-importBatchId'] = importBatchId;
200
+ uploadUrl.fields['Content-Type'] = `file/${importType}`;
201
+
202
+ _izContext.logger.debug('uploadUrlLimitSize: ', uploadUrl) // return as object type = {url, fields}
203
+
204
+ // update to waiting to upload
205
+ if (importBatchStatus === "processing") {
206
+
207
+ let updateImportBatchMainMsg = {
208
+ objInstanceFull: {
209
+ identifiers: {
210
+ importBatchId: importBatchId
211
+ },
212
+ fields: {
213
+ importBatchStatus: "waitingToUpload",
214
+ expiryTimestamp: (startTime + (createPresignUrlParam.expires * 1000))
215
+ }
216
+ }
217
+ }
218
+
219
+ updateImportBatchMainMsg = callingFlowSharedLib.addCallingFlowToSnsRequestMessageObject(
220
+ updateImportBatchMainMsg,
221
+ callingFlowSharedLib.addParentCallingFlowConfig(
222
+ returnMessage, // resive parent callingFlowConfig.
223
+ callingFlowSharedLib.createCallingFlowConfig( // callinfflow own service
224
+ await lambdaSharedLib.lambdaFunctionName(_izContext, `WebSocketTaskComplete`), {}
225
+ )
226
+ )
227
+ );
228
+
229
+ _izContext.logger.debug("after add callingFlow", updateImportBatchMainMsg)
230
+
231
+ let sendMessageToUpdateImportBatch = {
232
+ Message: JSON.stringify(updateImportBatchMainMsg),
233
+ TopicArn: await snsSharedLib.snsTopicArn(_izContext, `In${objType.objectType}Update`)
234
+ }
235
+ _izContext.logger.debug("sendMessageToUpdateImportBatch", sendMessageToUpdateImportBatch);
236
+ await sns.publishAsync(_izContext, sendMessageToUpdateImportBatch);
237
+
238
+ await dynamodbSharedLib.updateItem(_izContext,
239
+ await dynamodbSharedLib.tableName(_izContext, "WebSocketTask"),
240
+ {
241
+ taskKey: correlationId,
242
+ connectionId: connectionId
243
+ },
244
+ {
245
+ uploadUrl: uploadUrl
246
+ }
247
+ )
248
+ }
249
+ } catch (err) {
250
+ _izContext.logger.error('error createPresignUrl: ', err)
251
+ throw (err)
252
+ }
253
+ }
@@ -48,7 +48,7 @@ function data(_izContext, srcPath) {
48
48
 
49
49
  WebSocketSqsQueueNames.push(
50
50
  {
51
- queueName: TOPIC_NAME_GENERATE_CODE.reservedLimitComplete
51
+ queueName: TOPIC_NAME_GENERATE_CODE.createPresignUrl
52
52
  }
53
53
  )
54
54
 
@@ -36,9 +36,8 @@ const {
36
36
  awaitingMultipleStepsRole,
37
37
  externalResourceSns,
38
38
  externalResourceName,
39
- DYNAMO_RESOURCE,
40
- LAMBDA_RESOURCE,
41
- SOURCE_GENERATE_IAM_ROLE
39
+ SOURCE_GENERATE_IAM_ROLE,
40
+ FUNCTION_NAME
42
41
  } = require('../../../../../../../../MainLibs/src/Consts');
43
42
 
44
43
  const {
@@ -52,12 +51,12 @@ const {
52
51
  * @return {{ templatePath, templateData, setting } }
53
52
  */
54
53
 
55
- function data(_izContext, srcPath) {
56
- return [createSourceParams(_izContext, srcPath)]
54
+ function data(_izContext, flowSchema, srcPath) {
55
+ return [createSourceParams(_izContext, flowSchema, srcPath)]
57
56
  }
58
57
 
59
- function createSourceParams(_izContext, srcPath) {
60
- let functionName = "ReservedLimitComplete";
58
+ function createSourceParams(_izContext, flowSchema, srcPath) {
59
+ let functionName = upperCase(FUNCTION_NAME.reservedLimit);
61
60
  let handlerType = upperCase(HANDLER.hdrSqs);
62
61
  let additionalResourcePermission = defaultIamRolePerAction();
63
62
 
@@ -69,43 +68,16 @@ function createSourceParams(_izContext, srcPath) {
69
68
  SQS_RESOURCE.sendMessage,
70
69
  SQS_RESOURCE.deleteMessage,
71
70
  SQS_RESOURCE.getQueueAttributes
71
+ ],
72
+ [RESOURCE_CLASSES.sns]: [
73
+ SNS_RESOURCE.publish,
74
+ SNS_RESOURCE.subscribe
72
75
  ]
73
76
  },
74
77
  [
75
78
  resourceNames(RESOURCE_CLASSES.sqs, functionName + handlerType),
76
- resourceNames(RESOURCE_CLASSES.sqs, functionName + "DLQ"),
77
- ]
78
- ),
79
- createIamRole(
80
- {
81
- [RESOURCE_CLASSES.dynamoDbTable]: [
82
- DYNAMO_RESOURCE.query,
83
- DYNAMO_RESOURCE.deleteItem,
84
- DYNAMO_RESOURCE.updateItem,
85
- DYNAMO_RESOURCE.putItem
86
- ]
87
- },
88
- [
89
- resourceNames(RESOURCE_CLASSES.dynamoDbTable, "WebSocketTask"),
90
- resourceNames(RESOURCE_CLASSES.dynamoDbTable, "ReservedDataMain"),
91
- ]
92
- ),
93
- createIamRole(
94
- {
95
- "execute-api": "ManageConnections"
96
- },
97
- [
98
- resourceNames(RESOURCE_CLASSES.webSocket)
99
- ]
100
- ),
101
- createIamRole(
102
- {
103
- [RESOURCE_CLASSES.lambda]: [LAMBDA_RESOURCE.invokeFunction],
104
- [RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
105
- },
106
- [
107
- resourceNames(RESOURCE_CLASSES.lambda, "ImportBatchMainGetHdrInv"),
108
- resourceNames(RESOURCE_CLASSES.sns, "InImportBatchMainUpdate")
79
+ resourceNames(RESOURCE_CLASSES.sqs, functionName + handlerType + "DLQ"),
80
+ resourceNames(RESOURCE_CLASSES.sns, TOPIC_NAME_GENERATE_CODE.outCreateNodeComplete)
109
81
  ]
110
82
  )
111
83
  )
@@ -116,9 +88,9 @@ function createSourceParams(_izContext, srcPath) {
116
88
  functionName,
117
89
  handlerType,
118
90
  functionNameConfig: functionName + upperCase(handlerType),
119
- resourceLocation: SOURCE_PATH.resourceLocationWebSocket,
91
+ resourceLocation: path.join(SOURCE_PATH.resourceLocationWebSocket, flowSchema.flowTag, "source/"),
120
92
  additionalResourcePermission,
121
- functionNameConfig: upperCase("ReservedLimitComp") + upperCase(shortNameHandler(handlerType)),
93
+ functionNameConfig: upperCase(functionName) + upperCase(shortNameHandler(handlerType)),
122
94
  roleName: SOURCE_GENERATE_IAM_ROLE.FlowSchemaUploadS3Role
123
95
  },
124
96
  setting: {
@@ -6,9 +6,6 @@
6
6
  - sqs:
7
7
  arn: arn:aws:sqs:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_resourcePrefix}<%- functionName %><%- firstLetterUpperCase(handlerType) %>
8
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) %><%- firstLetterUpperCase(handlerType) %>"]}}} # functionName of callingFlow
11
- - body: {"MessageAttributes":{"callingFlow":{"Value":[{"exists":false}]}}}
12
9
  role: <%- roleName %>Role
13
10
  #<#<%- functionName %><%- handlerType %>IamRole#>
14
11
  #<#/<%- functionName %><%- handlerType %>IamRole#>
@@ -22,7 +22,7 @@ const path = require('path');
22
22
  const templatePath = path.join(__dirname, "./template.ejs")
23
23
  const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase } = require("../../../../../../../../MainLibs/src/Utils")
24
24
 
25
- const { HANDLER, SOURCE_PATH } = require('../../../../../../../../MainLibs/src/Consts');
25
+ const { HANDLER, SOURCE_PATH, FUNCTION_NAME } = require('../../../../../../../../MainLibs/src/Consts');
26
26
 
27
27
  /**
28
28
  * receive objectSchema
@@ -31,12 +31,12 @@ const { HANDLER, SOURCE_PATH } = require('../../../../../../../../MainLibs/src/C
31
31
  * @return {{ templatePath, templateData, setting } }
32
32
  */
33
33
 
34
- function data(_izContext, srcPath) {
35
- return [createSourceParams(_izContext, srcPath)]
34
+ function data(_izContext, flowSchema, srcPath) {
35
+ return [createSourceParams(_izContext, flowSchema, srcPath)]
36
36
  }
37
37
 
38
- function createSourceParams(_izContext, srcPath) {
39
- let functionName = "ReservedLimitComplete";
38
+ function createSourceParams(_izContext, flowSchema, srcPath) {
39
+ let functionName = upperCase(FUNCTION_NAME.reservedLimit);
40
40
  let handlerType = upperCase(HANDLER.hdrSqs);
41
41
 
42
42
  return {
@@ -47,7 +47,7 @@ function createSourceParams(_izContext, srcPath) {
47
47
  },
48
48
  setting: {
49
49
  saveFileName: `${functionName}_${handlerType}`,
50
- savePath: path.join(srcPath, SOURCE_PATH.webSocket),
50
+ savePath: path.join(srcPath, SOURCE_PATH.webSocket, flowSchema.flowTag, "source/"),
51
51
  fileExtension: ".js",
52
52
  isAppend: true
53
53
  }
@@ -17,56 +17,51 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
 
18
18
  'use strict';
19
19
 
20
- // const AWS = require('aws-sdk');
21
- // const sqs = new AWS.SQS({ apiVersion: '2012-11-05' });
22
-
23
20
  const izara = require("@izara_project/izara-middleware");
24
21
  const middleware = izara.middlewareHandler;
22
+ const izaraShared = require('@izara_project/izara-shared');
25
23
  const recordHandlerSharedLib = require('@izara_project/izara-core-library-record-handler');
26
- const Logger = require('@izara_project/izara-core-library-logger');
27
24
  const callingFlowSharedLib = require('@izara_project/izara-core-library-calling-flow');
25
+ const Logger = require('@izara_project/izara-core-library-logger');
28
26
 
29
- const reservedLimitComplete = require('./ReservedLimitComplete_Main');
27
+ const reservedLimit = require('./ReservedLimit_Main');
30
28
 
31
- // validate event properties in body.Message of sqs event
32
- middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema());
29
+ middleware.setServiceSchema(recordHandlerSharedLib.baseValidatorSchema());
33
30
 
34
- // set schema for record.body.Message
35
31
  let perRecordsValidatorSchema = {
36
32
  type: "object",
37
- required: [
38
- 'returnMessage',
39
- 'errorsFound',
40
- 'passStatus'
41
- ],
33
+ required: ["objType", "objInstanceFull"],
42
34
  properties: {
43
- returnMessage: {
44
- type: "object"
45
- },
46
- errorsFound: {
47
- type: "array"
35
+ objType: {
36
+ type: "object",
37
+ required: ["objectType", "serviceTag"],
38
+ properties: {
39
+ objectType: {
40
+ type: "string",
41
+ pattern: "^[a-zA-Z0-9_-]+$"
42
+ },
43
+ serviceTag: {
44
+ type: "string",
45
+ pattern: "^[a-zA-Z0-9_-]+$"
46
+ }
47
+ },
48
48
  },
49
- passStatus: {
50
- type: 'boolean'
49
+ objInstaceFull: {
50
+ type: "object",
51
+ properties: {
52
+ identifiers: {
53
+ type: "object",
54
+ minProperties: 1
55
+ },
56
+ fields: {
57
+ type: "object"
58
+ }
59
+ }
51
60
  }
52
61
  }
53
62
  };
54
63
 
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)
64
+ perRecordsValidatorSchema = callingFlowSharedLib.addOptionalPassBackPropertiesToValidatorSchema(perRecordsValidatorSchema);
70
65
 
71
66
  module.exports.main = middleware.wrap(async (event, context, callback) => {
72
67
 
@@ -80,26 +75,26 @@ module.exports.main = middleware.wrap(async (event, context, callback) => {
80
75
  let passOnProperties = []
81
76
  record._izContext.logger.debug('record ReceiveMsgOutHdrSqs', record);
82
77
 
83
- // validate message (and MessageAttributes)
78
+ //validate message (and MessageAttributes)
84
79
  await recordHandlerSharedLib.validateRecord(
85
80
  record, // one record will send to mainFunction
86
- "ReservedLimitCompleteHdrSqs", // queue name that need to retry or send to dlq
81
+ "GetPresignUrlHdrSqs", // queue name that need to retry or send to dlq
87
82
  perRecordsValidatorSchema, // schema for record.Message
88
83
  // messageAttributeValidatorSchema // ----- for msgAttr default is null -> do not send this parameter if not want to validate msgAtt
89
84
  );
90
85
 
91
86
  // add argument (to invoke lambda) to passOnProperties[]
92
- passOnProperties.push(record.body.Message.returnMessage)
93
- passOnProperties.push(record.body.Message.errorsFound)
94
- passOnProperties.push(record.body.Message.passStatus)
95
- passOnProperties.push(callingFlowSharedLib.addPassBackPropertiesToPassOnProperties(record.body.Message))
87
+ passOnProperties.push(record.body.Message.objType)
88
+ passOnProperties.push(record.body.Message.objInstanceFull)
89
+ passOnProperties.push(callingFlowSharedLib.addPassBackPropertiesToPassOnProperties(record.body.Message)) // is Ok PassBackProperties
90
+ // passOnProperties.push(callingFlowSharedLib.addCallingFlowToPassOnProperties(record.body.Message)) // is Ok callinfFlow
96
91
  record._izContext.logger.debug('passOnProperties in handler', passOnProperties);
97
92
 
98
93
  // call recordHandlerSharedLib.recordHandler with 3 parameters and return promise(resolve)
99
94
  let recordPromise = recordHandlerSharedLib.recordHandler(
100
95
  record, // one record will send to mainFunction
101
- reservedLimitComplete.reservedLimitComplete, // mainFunction that need to invoke.
102
- "ReservedLimitCompleteHdrSqs", // queue name that need to retry or send to dlq
96
+ reservedLimit.reservedLimit, // mainFunction that need to invoke.
97
+ "GetPresignUrlHdrSqs", // queue name that need to retry or send to dlq
103
98
  passOnProperties, // all parameters that mainFunction needed.
104
99
  );
105
100
  record._izContext.logger.debug('after recordPromise in handler');
@@ -111,7 +106,7 @@ module.exports.main = middleware.wrap(async (event, context, callback) => {
111
106
  // --- main await all promises
112
107
  await Promise.all(recordPromises); // await all promises
113
108
 
114
- return event.Records // return all for local test
109
+ return event.Records // return all for local testing
115
110
 
116
111
  } catch {
117
112
  Logger.debug('Promise.all(recordPromises) in handler threw error (at least one record did no resolve)');
@@ -119,7 +114,7 @@ module.exports.main = middleware.wrap(async (event, context, callback) => {
119
114
  Logger.debug('after Promise.all(recordPromises) in handler');
120
115
 
121
116
  } catch (err) {
122
- Logger.error('Unhandled Error, ReservedImageLimitCompleteHdrSqs: ', err);
117
+ Logger.error('Unhandled Error, updateNodeCompleteHdrSqs: ', err);
123
118
  throw (err);
124
119
  }
125
120
  });
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
20
20
  const path = require('path');
21
21
 
22
22
  const templatePath = path.join(__dirname, "./template.ejs")
23
-
24
- const { SOURCE_PATH } = require('../../../../../../../../MainLibs/src/Consts');
23
+ const { firstLetterUpperCase: upperCase } = require('../../../../../../../../MainLibs/src/Utils')
24
+ const { SOURCE_PATH, FUNCTION_NAME } = require('../../../../../../../../MainLibs/src/Consts');
25
25
 
26
26
  /**
27
27
  * receive objectSchema
@@ -35,16 +35,13 @@ function data(_izContext, flowSchema, srcPath) {
35
35
  }
36
36
 
37
37
  function createSourceParams(_izContext, flowSchema, srcPath) {
38
- let functionName = "ReservedLimitComplete"
39
- let bucketName = flowSchema.bucketName
38
+ let functionName = upperCase(FUNCTION_NAME.reservedLimit)
40
39
  return {
41
40
  templatePath: templatePath,
42
- templateData: {
43
- bucketName
44
- },
41
+ templateData: {},
45
42
  setting: {
46
43
  saveFileName: `${functionName}_Main`,
47
- savePath: path.join(srcPath, SOURCE_PATH.webSocket),
44
+ savePath: path.join(srcPath, SOURCE_PATH.webSocket, flowSchema.flowTag, "source/"),
48
45
  fileExtension: ".js",
49
46
  isAppend: false
50
47
  }