@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
@@ -22,7 +22,7 @@ const fs = require('fs');
22
22
  const { ACTIONS, HANDLER, STORAGE_TYPES } = require('@izara_project/izara-core-library-service-schemas/src/Consts')
23
23
 
24
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, SAVE_FILE_NAME } = require('../../../libs/Consts');
25
+ const { DEFAULT_HANDLER_PER_ACTION, createIamRole, resourceNames, RESOURCE_CLASSES, DEFAULT_LAMBDA_ROLE_PER_ACTION, SOURCE_PATH, SAVE_FILE_NAME, DYNAMO_RESOURCE, SNS_RESOURCE, FUNCTION_NAME } = require('../../../libs/Consts');
26
26
 
27
27
  const templatePath = path.join(__dirname, "./template.ejs")
28
28
 
@@ -128,6 +128,56 @@ function createParamForCreateSource(objectSchema, action, srcPath) {
128
128
  );
129
129
  }
130
130
 
131
+ if (action == ACTIONS.update) {
132
+ additionalResourcePermission.push(
133
+ createIamRole(
134
+ {
135
+ [RESOURCE_CLASSES.dynamoDbTable]: [
136
+ DYNAMO_RESOURCE.putItem,
137
+ ]
138
+ },
139
+ [
140
+ resourceNames(RESOURCE_CLASSES.dynamoDbTable, "AwaitingMultipleSteps"),
141
+ resourceNames(RESOURCE_CLASSES.dynamoDbTable, "AwaitingMultipleStepByPending"),
142
+ ]
143
+ )
144
+ )
145
+ additionalResourcePermission.push(
146
+ createIamRole(
147
+ {
148
+ [RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
149
+ },
150
+ [
151
+ resourceNames(RESOURCE_CLASSES.sns, "Out" + upperCase(FUNCTION_NAME.updateNodeComplete))
152
+ ]
153
+ )
154
+ )
155
+ } else if (action == ACTIONS.create) {
156
+ additionalResourcePermission.push(
157
+ createIamRole(
158
+ {
159
+ [RESOURCE_CLASSES.dynamoDbTable]: [DYNAMO_RESOURCE.putItem,
160
+ DYNAMO_RESOURCE.deleteItem, DYNAMO_RESOURCE.query
161
+ ]
162
+ },
163
+ [
164
+ resourceNames(RESOURCE_CLASSES.dynamoDbTable, "AwaitingMultipleSteps"),
165
+ resourceNames(RESOURCE_CLASSES.dynamoDbTable, "AwaitingMultipleStepByPending")
166
+ ]
167
+ )
168
+ )
169
+ additionalResourcePermission.push(
170
+ createIamRole(
171
+ {
172
+ [RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
173
+ },
174
+ [
175
+ resourceNames(RESOURCE_CLASSES.sns, "Out" + upperCase(FUNCTION_NAME.createObjectComplete))
176
+ ]
177
+ )
178
+ )
179
+ }
180
+
131
181
 
132
182
 
133
183
  return {
@@ -136,7 +186,8 @@ function createParamForCreateSource(objectSchema, action, srcPath) {
136
186
  functionName: functionName,
137
187
  resourceLocation: SOURCE_PATH.resourceLocationPerAction,
138
188
  handlerType: HANDLER.hdrInv,
139
- additionalResourcePermission
189
+ additionalResourcePermission,
190
+ objectType
140
191
  },
141
192
  setting: {
142
193
  savePath: path.join(srcPath, SOURCE_PATH.appYaml),
@@ -22,7 +22,7 @@ const fs = require('fs');
22
22
  const { ACTIONS, HANDLER, STORAGE_TYPES } = require('@izara_project/izara-core-library-service-schemas/src/Consts')
23
23
 
24
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, SQS_RESOURCE, SOURCE_PATH, SAVE_FILE_NAME } = require("../../../libs/Consts");
25
+ const { DEFAULT_HANDLER_PER_ACTION, createIamRole, resourceNames, RESOURCE_CLASSES, DEFAULT_LAMBDA_ROLE_PER_ACTION, SQS_RESOURCE, SOURCE_PATH, SAVE_FILE_NAME, SNS_RESOURCE, FUNCTION_NAME, DYNAMO_RESOURCE } = require("../../../libs/Consts");
26
26
 
27
27
  const templatePath = path.join(__dirname, "./template.ejs")
28
28
 
@@ -135,13 +135,35 @@ function createParamForCreateSource(objectSchema, action, srcPath) {
135
135
  SQS_RESOURCE.getQueueUrl
136
136
  ], [RESOURCE_CLASSES.sns]: ["Publish", "Subscribe"]
137
137
  }, [
138
- resourceNames(RESOURCE_CLASSES.sqs, functionName + upperCase(HANDLER.hdrSqs)),
139
- resourceNames(RESOURCE_CLASSES.sqs, functionName + upperCase(HANDLER.hdrSqs) + "DLQ"),
138
+ resourceNames(RESOURCE_CLASSES.sqs, functionName),
139
+ resourceNames(RESOURCE_CLASSES.sqs, functionName + "DLQ"),
140
140
  resourceNames(RESOURCE_CLASSES.sns, "In" + functionName),
141
141
  resourceNames(RESOURCE_CLASSES.sns, "Out" + functionName)
142
142
  ]
143
143
  )
144
144
  )
145
+ if (action == ACTIONS.update) {
146
+ additionalResourcePermission.push(
147
+ createIamRole(
148
+ {
149
+ [RESOURCE_CLASSES.dynamoDbTable]: [DYNAMO_RESOURCE.putItem]
150
+ },
151
+ [
152
+ resourceNames(RESOURCE_CLASSES.dynamoDbTable, "AwaitingMultipleSteps"),
153
+ resourceNames(RESOURCE_CLASSES.dynamoDbTable, "AwaitingMultipleStepByPending")
154
+ ]
155
+ )
156
+ )
157
+ additionalResourcePermission.push(
158
+ createIamRole({
159
+ [RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
160
+ },
161
+ [
162
+ resourceNames(RESOURCE_CLASSES.sns, "Out" + upperCase(FUNCTION_NAME.updateNodeComplete))
163
+ ]
164
+ )
165
+ )
166
+ }
145
167
 
146
168
  // console.log("additionalResourcePermissionBeforeReturn", additionalResourcePermission)
147
169
  return {
@@ -21,10 +21,10 @@ const fs = require('fs');
21
21
 
22
22
  const { ACTIONS, HANDLER } = require('@izara_project/izara-core-library-service-schemas/src/Consts')
23
23
 
24
- const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase, firstLetterUpperCase } = require("../../../../../MainLibs/src/Utils")
24
+ const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase, firstLetterUpperCase, checkOverWriteGenerateMainFunction } = require("../../../../../MainLibs/src/Utils")
25
25
  const { DEFAULT_HANDLER_PER_ACTION, SOURCE_PATH } = require("../../../libs/Consts");
26
26
 
27
- const templatePath = path.join(__dirname, "./template.ejs")
27
+ const getTemplatePath = path.join(__dirname, "./getTemplate.ejs")
28
28
 
29
29
  /**
30
30
  * receive objectSchema
@@ -61,18 +61,15 @@ function data(_izContext, objectSchema, srcPath) {
61
61
 
62
62
  function createParamForCreateSource(objectSchema, action, srcPath) {
63
63
  let objectType = objectSchema.objectType;
64
- let actionHandler = action;
65
64
  let functionName = objectType + firstLetterUpperCase(action);
66
65
  const handler = HANDLER.hdrApi
67
66
  return {
68
- templatePath: templatePath,
67
+ templatePath: getTemplatePath,
69
68
  templateData: {
70
69
  functionName: functionName,
71
70
  objectType: objectType,
72
- actionHandler: actionHandler,
73
- isCreateMainFunction: (objectSchema.overwriteGeneratedMainFunction?.length
74
- && objectSchema.overwriteGeneratedMainFunction.includes(action)
75
- ) ? true : false,
71
+ action: action,
72
+ isCreateMainFunction: checkOverWriteGenerateMainFunction(objectSchema, action)
76
73
  },
77
74
  setting: {
78
75
  savePath: path.join(srcPath, SOURCE_PATH.lambdaPerAction),
@@ -0,0 +1,76 @@
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 izara = require("@izara_project/izara-middleware");
20
+ const middleware = izara.middlewareHandler;
21
+ const callingFlowSharedLib = require('@izara_project/izara-shared/src/CallingFlowSharedLib')
22
+ const {
23
+ validateSchemaMiddleware
24
+ } = require('@izara_project/izara-market-library-service-schemas/src/GenerateCodeLibs/src/GenerateCodeLibs');
25
+
26
+ <%_ if (isCreateMainFunction == true) { _%>
27
+ // user generate main function
28
+ <%_ } else { %>
29
+ const <%- functionName %> =require('./<%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>_Main')
30
+ <%_ } _%>
31
+
32
+ //(<globalVarible>
33
+ //</globalVarible>)
34
+
35
+ //validate event params in middleware before into main function
36
+ validateSchemaMiddleware(
37
+ middleware,
38
+ "<%- firstLetterUpperCase(objectType) %>",
39
+ "<%- action %>"
40
+ //(<validateSchemaSetting>
41
+ //</validateSchemaSetting>)
42
+ )
43
+ // if need to validate authorizer or additional params , add code to hook tag below
44
+
45
+ //(<afterValidateWith>)
46
+ //(</afterValidateWith>)
47
+
48
+
49
+ module.exports.main = middleware.wrap(async (event, context, callback) => {
50
+ event._izContext.logger.debug('Event:', event);
51
+ try {
52
+ // invoke LambdaFunction
53
+ let lambdaFunctionResponse = await <%- functionName %>.<%- functionName %>Main(
54
+ event._izContext, // correlationId/logger/integrationTestDetail/uniqueRequestId/userId
55
+ event,
56
+ );
57
+
58
+ // return error to client
59
+ if (lambdaFunctionResponse instanceof Error) {
60
+ return (izara.response.failure(lambdaFunctionResponse));
61
+ }
62
+
63
+ // return success to client
64
+ return (izara.response.success(lambdaFunctionResponse));
65
+
66
+ } catch (err) {
67
+ event._izContext.logger.error('Error, <%- functionName %>Main: ', err);
68
+ return (izara.response.failure(err));
69
+ }
70
+ });
71
+ <%_ function firstLetterUpperCase(text){
72
+ return text.charAt(0).toUpperCase() + text.slice(1)
73
+ } _%>
74
+ <%_ function firstLetterLowerCase(str) {
75
+ return str.charAt(0).toLowerCase() + str.slice(1)
76
+ } _%>
@@ -0,0 +1,67 @@
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 izara = require("@izara_project/izara-middleware");
20
+ const middleware = izara.middlewareHandler;
21
+ const callingFlowSharedLib = require('@izara_project/izara-shared/src/CallingFlowSharedLib')
22
+ const {
23
+ validateSchemaMiddleware
24
+ } = require('@izara_project/izara-market-library-service-schemas/src/GenerateCodeLibs/src/GenerateCodeLibs');
25
+
26
+ <%_ if (isCreateMainFunction == true) { _%>
27
+ // user generate main function
28
+ <%_ } else { %>
29
+ const <%- functionName %> =require('./<%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>_Main')
30
+ <%_ } _%>
31
+
32
+ //(<globalVarible>
33
+ //</globalVarible>)
34
+ // if need to validate authorizer or additional params , add code to hook tag below
35
+
36
+ //(<afterValidateWith>)
37
+ //(</afterValidateWith>)
38
+
39
+
40
+ module.exports.main = middleware.wrap(async (event, context, callback) => {
41
+ event._izContext.logger.debug('Event:', event);
42
+ try {
43
+ // invoke LambdaFunction
44
+ let lambdaFunctionResponse = await <%- functionName %>.<%- functionName %>Main(
45
+ event._izContext, // correlationId/logger/integrationTestDetail/uniqueRequestId/userId
46
+ event,
47
+ );
48
+
49
+ // return error to client
50
+ if (lambdaFunctionResponse instanceof Error) {
51
+ return (izara.response.failure(lambdaFunctionResponse));
52
+ }
53
+
54
+ // return success to client
55
+ return (izara.response.success(lambdaFunctionResponse));
56
+
57
+ } catch (err) {
58
+ event._izContext.logger.error('Error, <%- functionName %>Main: ', err);
59
+ return (izara.response.failure(err));
60
+ }
61
+ });
62
+ <%_ function firstLetterUpperCase(text){
63
+ return text.charAt(0).toUpperCase() + text.slice(1)
64
+ } _%>
65
+ <%_ function firstLetterLowerCase(str) {
66
+ return str.charAt(0).toLowerCase() + str.slice(1)
67
+ } _%>
@@ -22,11 +22,12 @@ const fs = require('fs');
22
22
  const { ACTIONS, HANDLER } = require('@izara_project/izara-core-library-service-schemas/src/Consts')
23
23
 
24
24
 
25
- const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase, firstLetterUpperCase } = require("../../../../../MainLibs/src/Utils")
25
+ const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase, firstLetterUpperCase, checkOverWriteGenerateMainFunction } = require("../../../../../MainLibs/src/Utils")
26
26
  const { DEFAULT_HANDLER_PER_ACTION, SOURCE_PATH } = require("../../../libs/Consts");
27
27
 
28
28
 
29
- const templatePath = path.join(__dirname, "./template.ejs")
29
+ const getTemplatePath = path.join(__dirname, "./getTemplate.ejs")
30
+ const updateTemplatePath = path.join(__dirname, "./updateTemplate.ejs")
30
31
 
31
32
  /**
32
33
  * receive objectSchema
@@ -42,50 +43,73 @@ function data(_izContext, objectSchema, srcPath) {
42
43
  if (objectSchema.overWriteHandlers?.[action]) {
43
44
  // if have overWriteHander of action check hdrInv inside
44
45
  if (objectSchema.overWriteHandlers[action].includes(HANDLER.hdrDsq)) {
45
- // create template data
46
- const createSourceParam = createParamForCreateSource(objectSchema, action, srcPath)
47
- createSourceArray.push(createSourceParam)
46
+ // create template data by action
47
+ if (action == ACTIONS.get) {
48
+ const createSourceParamHandlerGet = createParamForCreateSourceHandlerGet(objectSchema, action, HANDLER.hdrDsq, srcPath);
49
+ createSourceParamHandlerGet && createSourceArray.push(createSourceParamHandlerGet);
50
+ } else if (action == ACTIONS.update) {
51
+ const createSourceParamHandlerUpdate = createParamForCreateSourceHandlerUpdate(objectSchema, action, HANDLER.hdrDsq, srcPath);
52
+ createSourceParamHandlerUpdate && createSourceArray.push(createSourceParamHandlerUpdate)
53
+ }
48
54
  }
49
55
  } else {
50
56
  // if not have overWriteHander of action will use default handler
51
57
  const defaultHandler = DEFAULT_HANDLER_PER_ACTION[action]
52
58
  if (defaultHandler.includes(HANDLER.hdrDsq)) {
53
- // create template data and object for create source
54
- const createSourceParam = createParamForCreateSource(objectSchema, action, srcPath)
55
- createSourceArray.push(createSourceParam)
59
+ if (action == ACTIONS.get) {
60
+ // create template data and object for create source
61
+ const createSourceParamHandlerGet = createParamForCreateSourceHandlerGet(objectSchema, action, HANDLER.hdrdsq, srcPath);
62
+ createSourceParamHandlerGet && createSourceArray.push(createSourceParamHandlerGet);
63
+ } else if (action == ACTIONS.update) {
64
+ const createSourceParamHandlerUpdate = createParamForCreateSourceHandlerUpdate(objectSchema, action, HANDLER.hdrDsq, srcPath);
65
+ createSourceParamHandlerUpdate && createSourceArray.push(createSourceParamHandlerUpdate);
66
+ }
56
67
  }
57
68
  }
58
69
  }
59
-
60
70
  return createSourceArray;
61
71
  }
62
72
 
63
73
 
64
- function createParamForCreateSource(objectSchema, action, srcPath) {
74
+ function createParamForCreateSourceHandlerGet(objectSchema, action, handler, srcPath) {
65
75
  let objectType = objectSchema.objectType;
66
- let actionHandler = action;
67
76
  let functionName = objectType + upperCase(action);
68
- const handler = HANDLER.hdrDsq
69
77
  let queueName = objectType + firstLetterUpperCase(action) + upperCase(handler);
70
- let identifiers = [];
71
- for (const identifier of Object.values(objectSchema.identifiers)) {
72
- identifiers.push(identifier.fieldName)
73
- }
78
+
74
79
  return {
75
- templatePath: templatePath,
80
+ templatePath: getTemplatePath,
76
81
  templateData: {
77
82
  functionName: functionName,
78
83
  objectType: objectType,
79
- actionHandler: actionHandler,
80
84
  queueName,
81
- identifiers,
82
- isCreateMainFunction: (objectSchema.overwriteGeneratedMainFunction?.length
83
- && objectSchema.overwriteGeneratedMainFunction.includes(action)
84
- ) ? true : false,
85
+ action,
86
+ isCreateMainFunction: checkOverWriteGenerateMainFunction(objectSchema, action)
87
+ },
88
+ setting: {
89
+ savePath: path.join(srcPath, SOURCE_PATH.lambdaPerAction),
90
+ saveFileName: `${upperCase(objectType)}${upperCase(action)}_${upperCase(handler)}`,
91
+ fileExtension: '.js',
92
+ isAppend: false
93
+ }
94
+ }
95
+ }
96
+
97
+ function createParamForCreateSourceHandlerUpdate(objectSchema, action, handler, srcPath) {
98
+ let objectType = objectSchema.objectType;
99
+ let functionName = objectType + upperCase(action);
100
+ let queueName = objectType + upperCase(action) + upperCase(handler)
101
+ return {
102
+ templatePath: updateTemplatePath,
103
+ templateData: {
104
+ objectType,
105
+ functionName,
106
+ queueName,
107
+ action,
108
+ isCreateMainFunction: checkOverWriteGenerateMainFunction(objectSchema, action)
85
109
  },
86
110
  setting: {
87
111
  savePath: path.join(srcPath, SOURCE_PATH.lambdaPerAction),
88
- saveFileName: `${upperCase(objectSchema.objectType)}${upperCase(action)}_${upperCase(handler)}`,
112
+ saveFileName: `${upperCase(objectType)}${upperCase(action)}_${upperCase(handler)}`,
89
113
  fileExtension: '.js',
90
114
  isAppend: false
91
115
  }
@@ -0,0 +1,105 @@
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 izara = require("@izara_project/izara-middleware");
20
+ const middleware = izara.middlewareHandler;
21
+ const callingFlowSharedLib = require('@izara_project/izara-shared/src/CallingFlowSharedLib');
22
+ const recordHandlerSharedLib = require('@izara_project/izara-shared').recordHandlerSharedLib;
23
+ const {
24
+ validateSchemaMiddleware
25
+ } = require('@izara_project/izara-market-library-service-schemas/src/GenerateCodeLibs/src/GenerateCodeLibs');
26
+ const Logger = require('@izara_project/izara-core-library-logger');
27
+
28
+ <%_ if (isCreateMainFunction == true) { _%>
29
+ // user generate main function
30
+ <%_ } else { %>
31
+ const <%- functionName %> =require('./<%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>_Main')
32
+ <%_ } _%>
33
+
34
+ const perRecordsValidatorSchema = {
35
+ type: "object",
36
+ required: ['identifiers'],
37
+ properties: {
38
+ identifiers: {
39
+ type: "object"
40
+ }
41
+ }
42
+ }
43
+
44
+ module.exports.main = middleware.wrap(async(event,context,callback) => {
45
+
46
+ try {
47
+
48
+ let recordPromises = []; // final return
49
+
50
+ // loop each record and send to mainFunction
51
+ await Promise.all(event.Records.map(async record => { // promise.all for map() function
52
+
53
+ // --- reforming record.body for Dsq request
54
+ record = recordHandlerSharedLib.reformatDsqMessage(record._izContext, record);
55
+ record._izContext.logger.debug('record LambdaFunctionHdrDsq after reform', record);
56
+
57
+ let passOnProperties = []
58
+
59
+ // --- validate message (and MessageAttributes)
60
+ await recordHandlerSharedLib.validateRecord(
61
+ record, // one record will send to mainFunction
62
+ "<%- queueName %>", // queue name that need to retry or send to dlq
63
+ perRecordsValidatorSchema, // schema for record.Message
64
+ // messageAttributeValidatorSchema // ----- for msgAttr default is null -> do not send this parameter if not want to validate msgAtt
65
+ );
66
+
67
+ // add argument (to invoke lambda) to passOnProperties[]
68
+ passOnProperties.push(record.body.Message)
69
+ record._izContext.logger.debug('passOnProperties in handler', passOnProperties);
70
+
71
+ // call recordHandlerSharedLib.recordHandler with 3 parameters and return promise(resolve)
72
+ let recordPromise = recordHandlerSharedLib.recordHandler(
73
+ record, // one record will send to mainFunction
74
+ <%- functionName %>.<%- functionName %>Main, // mainFunction that need to invoke.
75
+ "<%- queueName %>", // queue name that need to retry or send to dlq
76
+ passOnProperties, // all parameters that mainFunction needed.
77
+ );
78
+ record._izContext.logger.debug('after recordPromise in handler');
79
+ recordPromises.push(recordPromise); // push promise to recordPromises
80
+ })) //end record
81
+
82
+ Logger.debug('before Promise.all(recordPromises) in handler');
83
+ try {
84
+ await Promise.all(recordPromises); // await all promises
85
+ return event.Records // return all for local test
86
+ } catch {
87
+ Logger.debug('Promise.all(recordPromises) in handler threw error (at least one record did no resolve)');
88
+ }
89
+ Logger.debug('after Promise.all(recordPromises) in handler');
90
+ } catch (err) {
91
+ Logger.error('Unhandled Error, <%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>Dsq :', err);
92
+ throw (err);
93
+ }
94
+ })
95
+
96
+
97
+
98
+
99
+
100
+ <%_ function firstLetterUpperCase(text){
101
+ return text.charAt(0).toUpperCase() + text.slice(1)
102
+ } _%>
103
+ <%_ function firstLetterLowerCase(str) {
104
+ return str.charAt(0).toLowerCase() + str.slice(1)
105
+ } _%>
@@ -0,0 +1,109 @@
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 izara = require("@izara_project/izara-middleware");
20
+ const middleware = izara.middlewareHandler;
21
+ const callingFlowSharedLib = require('@izara_project/izara-shared/src/CallingFlowSharedLib');
22
+ const recordHandlerSharedLib = require('@izara_project/izara-shared').recordHandlerSharedLib;
23
+ const {
24
+ validateSchemaMiddleware
25
+ } = require('@izara_project/izara-market-library-service-schemas/src/GenerateCodeLibs/src/GenerateCodeLibs');
26
+ const Logger = require('@izara_project/izara-core-library-logger');
27
+
28
+ <%_ if (isCreateMainFunction == true) { _%>
29
+ // user generate main function
30
+ <%_ } else { %>
31
+ const <%- functionName %> =require('./<%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>_Main')
32
+ <%_ } _%>
33
+
34
+ const perRecordsValidatorSchema = {
35
+ type: 'object',
36
+ required: ["objInstance"],
37
+ properties: {
38
+ objInstance: {
39
+ type: "object",
40
+ required: ["identifiers", "fields"],
41
+ properties: {
42
+ identifiers: {
43
+ type: "object",
44
+ minProperties: 1
45
+ },
46
+ fields: {
47
+ type: "object",
48
+ minProperties: 1
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }
54
+
55
+ module.exports.main = middleware.wrap(async(event, context,callback) => {
56
+
57
+ try {
58
+ let recordPromises = [];
59
+
60
+ await Promise.all(event.Records.map(async record => {
61
+
62
+ record = recordHandlerSharedLib.reformatDsqMessage(record._izContext, record);
63
+ record._izContext.logger.debug('record <%- objectType %> after reform', record);
64
+ let passOnProperties = []
65
+
66
+ // --- validate message (and MessageAttributes)
67
+ await recordHandlerSharedLib.validateRecord(
68
+ record, // one record will send to mainFunction
69
+ "<%- queueName %>", // queue name that need to retry or send to dlq
70
+ perRecordsValidatorSchema, // schema for record.Message
71
+ // messageAttributeValidatorSchema // ----- for msgAttr default is null -> do not send this parameter if not want to validate msgAtt
72
+ );
73
+
74
+ // add argument (to invoke lambda) to passOnProperties[]
75
+ passOnProperties.push(record.body.Message)
76
+ record._izContext.logger.debug('passOnProperties in handler', passOnProperties);
77
+
78
+ // call recordHandlerSharedLib.recordHandler with 3 parameters and return promise(resolve)
79
+ let recordPromise = recordHandlerSharedLib.recordHandler(
80
+ record, // one record will send to mainFunction
81
+ <%- functionName %>.<%- functionName %>Main, // mainFunction that need to invoke.
82
+ "<%- queueName %>", // queue name that need to retry or send to dlq
83
+ passOnProperties, // all parameters that mainFunction needed.
84
+ );
85
+ record._izContext.logger.debug('after recordPromise in handler');
86
+ recordPromises.push(recordPromise); // push promise to recordPromises
87
+ })) //end record
88
+
89
+ Logger.debug('before Promise.all(recordPromises) in handler');
90
+ try {
91
+ await Promise.all(recordPromises); // await all promises
92
+ return event.Records // return all for local test
93
+ } catch {
94
+ Logger.debug('Promise.all(recordPromises) in handler threw error (at least one record did no resolve)');
95
+ }
96
+ Logger.debug('after Promise.all(recordPromises) in handler');
97
+ } catch (err) {
98
+ Logger.error('Unhandled Error, <%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>Dsq :', err);
99
+ throw (err);
100
+ }
101
+ })
102
+
103
+
104
+ <%_ function firstLetterUpperCase(text){
105
+ return text.charAt(0).toUpperCase() + text.slice(1)
106
+ } _%>
107
+ <%_ function firstLetterLowerCase(str) {
108
+ return str.charAt(0).toLowerCase() + str.slice(1)
109
+ } _%>