@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
@@ -0,0 +1,75 @@
1
+ /*
2
+ Copyright (C) 2020 Sven Mason <http://izara.io>
3
+
4
+ This program is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU Affero General Public License as
6
+ published by the Free Software Foundation, either version 3 of the
7
+ License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU Affero General Public License for more details.
13
+
14
+ You should have received a copy of the GNU Affero General Public License
15
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+
18
+ 'use strict';
19
+
20
+ const middleware = require("@izara_project/izara-middleware/src/MiddlewareCore/MiddlewareHandler");
21
+
22
+ const callingFlowSharedLib = require('@izara_project/izara-shared/src/CallingFlowSharedLib')
23
+
24
+
25
+ const {
26
+ validateSchemaMiddleware
27
+ } = require('@izara_project/izara-market-library-service-schemas/src/GenerateCodeLibs/src/GenerateCodeLibs');
28
+
29
+
30
+ <%_ if (isCreateMainFunction == true) { _%>
31
+ // user generate main function
32
+ <%_ } else { %>
33
+ const <%- functionName %> =require('./<%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>_Main')
34
+ <%_ } _%>
35
+
36
+ //validate event params in middleware before into function
37
+ validateSchemaMiddleware(
38
+ middleware,
39
+ "<%- firstLetterUpperCase(objectType) %>", // objectType
40
+ "<%- action %>", // action
41
+ //(<validateSchemaSetting>)
42
+ //(</validateSchemaSetting>)
43
+ )
44
+
45
+ //(<afterValidateWithGenereatedSchema>)
46
+ //(</afterValidateWithGenereatedSchema>)
47
+
48
+ module.exports.main = middleware.wrap(async (event, context, callback) => {
49
+ event._izContext.logger.debug('Event:', event);
50
+ event._izContext.logger.debug('context:', context);
51
+
52
+ try {
53
+
54
+ //(<beforeInvoke>)
55
+ //(</beforeInvoke>)
56
+
57
+ // invoke LambdaFunction
58
+ return await <%- functionName %>.<%- functionName %>Main(
59
+ event._izContext, // correlationId/logger/integrationTestDetail/uniqueRequestId
60
+ event,
61
+ callingFlowSharedLib.addCallingFlowToPassOnProperties(event)
62
+ );
63
+
64
+ } catch (err) {
65
+ event._izContext.logger.error('Error, <%- firstLetterUpperCase(objectType) %>: ', err);
66
+ throw (err);
67
+ }
68
+ });
69
+
70
+ <%_ function firstLetterUpperCase(text){
71
+ return text.charAt(0).toUpperCase() + text.slice(1)
72
+ } _%>
73
+ <%_ function firstLetterLowerCase(str) {
74
+ return str.charAt(0).toLowerCase() + str.slice(1)
75
+ } _%>
@@ -21,12 +21,13 @@ 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")
25
- const { DEFAULT_HANDLER_PER_ACTION, SOURCE_PATH } = require("../../../libs/Consts");
24
+ const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase, firstLetterUpperCase, checkOverWriteGenerateMainFunction } = require("../../../../../MainLibs/src/Utils")
25
+ const { DEFAULT_HANDLER_PER_ACTION, SOURCE_PATH, FUNCTION_NAME } = require("../../../libs/Consts");
26
26
 
27
27
 
28
- const templatePath = path.join(__dirname, "./template.ejs")
29
-
28
+ const getTemplatePath = path.join(__dirname, "./getTemplate.ejs")
29
+ const updateTemplatePath = path.join(__dirname, "./updateTemplate.ejs")
30
+ const createTemplatePath = path.join(__dirname, "./createTemplate.ejs")
30
31
  /**
31
32
  * receive objectSchema
32
33
  * create data for hdrInv template
@@ -41,17 +42,30 @@ function data(_izContext, objectSchema, srcPath) {
41
42
  if (objectSchema.overWriteHandlers?.[action]) {
42
43
  // if have overWriteHander of action check hdrInv inside
43
44
  if (objectSchema.overWriteHandlers[action].includes(HANDLER.hdrInv)) {
44
- // create template data
45
- const createSourceParam = createParamForCreateSource(objectSchema, action, srcPath)
46
- createSourceArray.push(createSourceParam)
45
+ if (action == ACTIONS.get) {
46
+ // create template data
47
+ const createHandlerGet = createParamForCreateHandlerGet(objectSchema, action, HANDLER.hdrInv, srcPath)
48
+ createHandlerGet && createSourceArray.push(createHandlerGet)
49
+ } else if (action == ACTIONS.update) {
50
+ const createHandlerUpdate = createParamForCreateHandlerUpdate(objectSchema, action, HANDLER.hdrInv, srcPath)
51
+ createHandlerUpdate && createSourceArray.push(createHandlerUpdate)
52
+ } else if (action == ACTIONS.create) {
53
+ const createHandlerCreate = createParamForCreateHandlerCreate(objectSchema, action, HANDLER.hdrInv, srcPath)
54
+ createHandlerCreate && createSourceArray.push(createHandlerCreate)
55
+ }
47
56
  }
48
57
  } else {
49
58
  // if not have overWriteHander of action will use default handler
50
59
  const defaultHandler = DEFAULT_HANDLER_PER_ACTION[action]
51
- if (defaultHandler.includes(HANDLER.hdrInv)) {
52
- // create template data and object for create source
53
- const createSourceParam = createParamForCreateSource(objectSchema, action, srcPath)
54
- createSourceArray.push(createSourceParam)
60
+ if (action == ACTIONS.get) {
61
+ if (defaultHandler.includes(HANDLER.hdrInv)) {
62
+ // create template data and object for create source
63
+ const createHandlerGet = createParamForCreateHandlerGet(objectSchema, action, HANDLER.hdrInv, srcPath)
64
+ createHandlerGet && createSourceArray.push(createHandlerGet)
65
+ }
66
+ } else if (action == ACTIONS.update) {
67
+ const createHandlerUpdate = createParamForCreateHandlerUpdate(objectSchema, action, HANDLER.hdrInv, srcPath)
68
+ createHandlerUpdate && createSourceArray.push(createHandlerUpdate);
55
69
  }
56
70
  }
57
71
  }
@@ -60,30 +74,64 @@ function data(_izContext, objectSchema, srcPath) {
60
74
  }
61
75
 
62
76
 
63
- function createParamForCreateSource(objectSchema, action, srcPath) {
77
+ function createParamForCreateHandlerGet(objectSchema, action, handler, srcPath) {
64
78
  let objectType = objectSchema.objectType;
65
- let actionHandler = action;
66
79
  let functionName = objectType + upperCase(action);
67
- const handler = HANDLER.hdrInv
68
-
69
80
  return {
70
- templatePath: templatePath,
81
+ templatePath: getTemplatePath,
71
82
  templateData: {
72
83
  functionName: functionName,
73
84
  objectType: objectType,
74
- actionHandler: actionHandler,
75
- isCreateMainFunction: (objectSchema.overwriteGeneratedMainFunction?.length
76
- && objectSchema.overwriteGeneratedMainFunction.includes(action)
77
- ) ? true : false,
85
+ action: action,
86
+ isCreateMainFunction: checkOverWriteGenerateMainFunction(objectSchema, action)
78
87
  },
79
88
  setting: {
80
89
  savePath: path.join(srcPath, SOURCE_PATH.lambdaPerAction),
81
- saveFileName: `${upperCase(objectSchema.objectType)}${upperCase(action)}_${upperCase(handler)}`,
90
+ saveFileName: `${upperCase(objectType)}${upperCase(action)}_${upperCase(handler)}`,
82
91
  fileExtension: '.js',
83
92
  isAppend: false
84
93
  }
85
94
  }
86
95
  }
87
96
 
97
+ function createParamForCreateHandlerUpdate(objectSchema, action, handler, srcPath) {
98
+ let objectType = objectSchema.objectType;
99
+ let functionName = objectType + upperCase(action);
100
+ return {
101
+ templatePath: updateTemplatePath,
102
+ templateData: {
103
+ functionName,
104
+ objectType,
105
+ action,
106
+ isCreateMainFunction: checkOverWriteGenerateMainFunction(objectSchema, action)
107
+ },
108
+ setting: {
109
+ savePath: path.join(srcPath, SOURCE_PATH.lambdaPerAction),
110
+ saveFileName: `${upperCase(objectType)}${upperCase(action)}_${upperCase(handler)}`,
111
+ fileExtension: ".js",
112
+ isAppend: false
113
+ }
114
+ }
115
+ }
116
+
117
+ function createParamForCreateHandlerCreate(objectSchema, action, handler, srcPath) {
118
+ let objectType = objectSchema.objectType;
119
+ let functionName = objectType + upperCase(action);
120
+ return {
121
+ templatePath: createTemplatePath,
122
+ templateData: {
123
+ functionName,
124
+ objectType,
125
+ action,
126
+ isCreateMainFunction: checkOverWriteGenerateMainFunction(objectSchema, action)
127
+ },
128
+ setting: {
129
+ savePath: path.join(srcPath, SOURCE_PATH.lambdaPerAction),
130
+ saveFileName: `${upperCase(objectType)}${upperCase(action)}_${upperCase(handler)}`,
131
+ fileExtension: ".js",
132
+ isAppend: false
133
+ }
134
+ }
135
+ }
88
136
 
89
137
  module.exports = data;
@@ -0,0 +1,82 @@
1
+ /*
2
+ Copyright (C) 2020 Sven Mason <http://izara.io>
3
+
4
+ This program is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU Affero General Public License as
6
+ published by the Free Software Foundation, either version 3 of the
7
+ License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU Affero General Public License for more details.
13
+
14
+ You should have received a copy of the GNU Affero General Public License
15
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+
18
+ 'use strict';
19
+
20
+ const middleware = require("@izara_project/izara-middleware/src/MiddlewareCore/MiddlewareHandler");
21
+
22
+ const callingFlowSharedLib = require('@izara_project/izara-shared/src/CallingFlowSharedLib')
23
+
24
+
25
+ const {
26
+ validateSchemaMiddleware
27
+ } = require('@izara_project/izara-market-library-service-schemas/src/GenerateCodeLibs/src/GenerateCodeLibs');
28
+
29
+
30
+ <%_ if (isCreateMainFunction == true) { _%>
31
+ // user generate main function
32
+ <%_ } else { %>
33
+ const <%- functionName %> =require('./<%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>_Main')
34
+ <%_ } _%>
35
+
36
+ //(<globalVariable>
37
+ //</globalVariable>)
38
+
39
+
40
+ //validate event params in middleware before into function
41
+ validateSchemaMiddleware(
42
+ middleware,
43
+ "<%- firstLetterUpperCase(objectType) %>", // objectType
44
+ "<%- action %>", // action
45
+ //(<validateSchemaSetting>)
46
+ //(</validateSchemaSetting>)
47
+ )
48
+
49
+ // if need to validate authorizer or additional params, add code to hook tag below
50
+
51
+ //(<afterValidateWithGenereatedSchema>)
52
+ //(</afterValidateWithGenereatedSchema>)
53
+
54
+
55
+ module.exports.main = middleware.wrap(async (event, context, callback) => {
56
+ event._izContext.logger.debug('Event:', event);
57
+ event._izContext.logger.debug('context:', context);
58
+
59
+ try {
60
+
61
+ //(<beforeInvoke>)
62
+ //(</beforeInvoke>)
63
+
64
+ // invoke LambdaFunction
65
+ return await <%- functionName %>.<%- functionName %>Main(
66
+ event._izContext, // correlationId/logger/integrationTestDetail/uniqueRequestId
67
+ event,
68
+ callingFlowSharedLib.addCallingFlowToPassOnProperties(event)
69
+ );
70
+
71
+ } catch (err) {
72
+ event._izContext.logger.error('Error, <%- firstLetterUpperCase(objectType) %>: ', err);
73
+ throw (err);
74
+ }
75
+ });
76
+
77
+ <%_ function firstLetterUpperCase(text){
78
+ return text.charAt(0).toUpperCase() + text.slice(1)
79
+ } _%>
80
+ <%_ function firstLetterLowerCase(str) {
81
+ return str.charAt(0).toLowerCase() + str.slice(1)
82
+ } _%>
@@ -0,0 +1,75 @@
1
+ /*
2
+ Copyright (C) 2020 Sven Mason <http://izara.io>
3
+
4
+ This program is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU Affero General Public License as
6
+ published by the Free Software Foundation, either version 3 of the
7
+ License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU Affero General Public License for more details.
13
+
14
+ You should have received a copy of the GNU Affero General Public License
15
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+
18
+ 'use strict';
19
+
20
+ const middleware = require("@izara_project/izara-middleware/src/MiddlewareCore/MiddlewareHandler");
21
+
22
+ const callingFlowSharedLib = require('@izara_project/izara-shared/src/CallingFlowSharedLib')
23
+
24
+
25
+ const {
26
+ validateSchemaMiddleware
27
+ } = require('@izara_project/izara-market-library-service-schemas/src/GenerateCodeLibs/src/GenerateCodeLibs');
28
+
29
+
30
+ <%_ if (isCreateMainFunction == true) { _%>
31
+ // user generate main function
32
+ <%_ } else { %>
33
+ const <%- functionName %> =require('./<%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>_Main')
34
+ <%_ } _%>
35
+
36
+ //validate event params in middleware before into function
37
+ validateSchemaMiddleware(
38
+ middleware,
39
+ "<%- firstLetterUpperCase(objectType) %>", // objectType
40
+ "<%- action %>", // action
41
+ //(<validateSchemaSetting>)
42
+ //(</validateSchemaSetting>)
43
+ )
44
+
45
+ //(<afterValidateWithGenereatedSchema>)
46
+ //(</afterValidateWithGenereatedSchema>)
47
+
48
+ module.exports.main = middleware.wrap(async (event, context, callback) => {
49
+ event._izContext.logger.debug('Event:', event);
50
+ event._izContext.logger.debug('context:', context);
51
+
52
+ try {
53
+
54
+ //(<beforeInvoke>)
55
+ //(</beforeInvoke>)
56
+
57
+ // invoke LambdaFunction
58
+ return await <%- functionName %>.<%- functionName %>Main(
59
+ event._izContext, // correlationId/logger/integrationTestDetail/uniqueRequestId
60
+ event,
61
+ callingFlowSharedLib.addCallingFlowToPassOnProperties(event)
62
+ );
63
+
64
+ } catch (err) {
65
+ event._izContext.logger.error('Error, <%- firstLetterUpperCase(objectType) %>: ', err);
66
+ throw (err);
67
+ }
68
+ });
69
+
70
+ <%_ function firstLetterUpperCase(text){
71
+ return text.charAt(0).toUpperCase() + text.slice(1)
72
+ } _%>
73
+ <%_ function firstLetterLowerCase(str) {
74
+ return str.charAt(0).toLowerCase() + str.slice(1)
75
+ } _%>
@@ -21,10 +21,11 @@ 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
+ const updateTemplatePath = path.join(__dirname, "./updateTemplate.ejs")
28
29
 
29
30
  /**
30
31
  * receive objectSchema
@@ -40,17 +41,27 @@ function data(_izContext, objectSchema, srcPath) {
40
41
  if (objectSchema.overWriteHandlers?.[action]) {
41
42
  // if have overWriteHander of action check hdrInv inside
42
43
  if (objectSchema.overWriteHandlers[action].includes(HANDLER.hdrSqs)) {
43
- // create template data
44
- const createSourceParam = createParamForCreateSource(objectSchema, action, srcPath)
45
- createSourceArray.push(createSourceParam)
44
+ if (action == ACTIONS.get) {
45
+ // create template data
46
+ const createSourceParamHandlerGet = createParamForCreateSourceGetHandler(objectSchema, action, HANDLER.hdrSqs, srcPath)
47
+ createSourceParamHandlerGet && createSourceArray.push(createSourceParamHandlerGet)
48
+ } else if (action == ACTIONS.update) {
49
+ const createSourceParamHandlerUpdate = createParamForCreateSourceUpdateHandler(objectSchema, action, HANDLER.hdrSqs, srcPath)
50
+ createSourceParamHandlerUpdate && createSourceArray.push(createSourceParamHandlerUpdate)
51
+ }
46
52
  }
47
53
  } else {
48
54
  // if not have overWriteHander of action will use default handler
49
55
  const defaultHandler = DEFAULT_HANDLER_PER_ACTION[action]
50
56
  if (defaultHandler.includes(HANDLER.hdrSqs)) {
51
- // create template data and object for create source
52
- const createSourceParam = createParamForCreateSource(objectSchema, action, srcPath)
53
- createSourceArray.push(createSourceParam)
57
+ if (action == ACTIONS.get) {
58
+ // create template data and object for create source
59
+ const createSourceParam = createParamForCreateSourceGetHandler(objectSchema, action, srcPath)
60
+ createSourceParamHandlerGet && createSourceArray.push(createSourceParam)
61
+ } else if (action == ACTIONS.update) {
62
+ const createSourceParamHandlerUpdate = createParamForCreateSourceUpdateHandler(objectSchema, action, HANDLER.hdrSqs, srcPath)
63
+ createSourceParamHandlerUpdate && createSourceArray.push(createSourceParamHandlerUpdate)
64
+ }
54
65
  }
55
66
  }
56
67
  }
@@ -59,26 +70,22 @@ function data(_izContext, objectSchema, srcPath) {
59
70
  }
60
71
 
61
72
 
62
- function createParamForCreateSource(objectSchema, action, srcPath) {
73
+ function createParamForCreateSourceGetHandler(objectSchema, action, handler, srcPath) {
63
74
  let objectType = objectSchema.objectType;
64
- let actionHandler = action;
65
75
  let functionName = objectType + firstLetterUpperCase(action);
66
- const handler = HANDLER.hdrSqs;
67
76
  let queueName = functionName + handler;
68
77
  return {
69
- templatePath: templatePath,
78
+ templatePath: getTemplatePath,
70
79
  templateData: {
71
80
  functionName: functionName,
72
81
  objectType: objectType,
73
- actionHandler: actionHandler,
74
82
  queueName,
75
- isCreateMainFunction: (objectSchema.overwriteGeneratedMainFunction?.length
76
- && objectSchema.overwriteGeneratedMainFunction.includes(action)
77
- ) ? true : false,
83
+ action,
84
+ isCreateMainFunction: checkOverWriteGenerateMainFunction(objectSchema, action)
78
85
  },
79
86
  setting: {
80
87
  savePath: path.join(srcPath, SOURCE_PATH.lambdaPerAction),
81
- saveFileName: `${upperCase(objectSchema.objectType)}${upperCase(action)}_${upperCase(handler)}`,
88
+ saveFileName: `${upperCase(objectType)}${upperCase(action)}_${upperCase(handler)}`,
82
89
  fileExtension: '.js',
83
90
  isAppend: false
84
91
  }
@@ -86,4 +93,26 @@ function createParamForCreateSource(objectSchema, action, srcPath) {
86
93
  }
87
94
 
88
95
 
96
+ function createParamForCreateSourceUpdateHandler(objectSchema, action, handler, srcPath) {
97
+ let objectType = objectSchema.objectType;
98
+ let functionName = objectType + upperCase(action);
99
+ let queueName = functionName + handler
100
+ return {
101
+ templatePath: updateTemplatePath,
102
+ templateData: {
103
+ objectType,
104
+ functionName,
105
+ queueName,
106
+ action,
107
+ isCreateMainFunction: checkOverWriteGenerateMainFunction(objectSchema, action)
108
+ },
109
+ setting: {
110
+ savePath: path.join(srcPath, SOURCE_PATH.lambdaPerAction),
111
+ saveFileName: `${upperCase(objectType)}${upperCase(action)}_${upperCase(handler)}`,
112
+ fileExtension: '.js',
113
+ isAppend: false
114
+ }
115
+ }
116
+ }
117
+
89
118
  module.exports = data;
@@ -0,0 +1,124 @@
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
+ const Logger = require('@izara_project/izara-core-library-logger');
26
+ const recordHandlerSharedLib = require('@izara_project/izara-shared').recordHandlerSharedLib
27
+
28
+ <%_ if (isCreateMainFunction == true) { _%>
29
+ // user generate main function
30
+ <%_ } else { %>
31
+ const <%- functionName %> =require('./<%- firstLetterUpperCase(objectType) %><%- firstLetterUpperCase(action) %>_Main')
32
+ <%_ } _%>
33
+
34
+ //(<globalVarible>
35
+ //</globalVarible>)
36
+
37
+ const perRecordValidatorSchema = {
38
+ type: "object",
39
+ required: ['identifiers'],
40
+ properties: {
41
+ identifiers: {
42
+ type: 'object'
43
+ }
44
+ }
45
+ }
46
+
47
+ const messageAttributeValidatorSchema = {
48
+ type: "object",
49
+ require: ['msgAtrrParam1','msgAtrrParam2'],
50
+ properties: {
51
+ msgAtrrParam1: {
52
+ type: 'string'
53
+ },
54
+ msgAtrrParam2: {
55
+ type: 'string'
56
+ }
57
+ }
58
+ };
59
+
60
+ //validate event params in middleware before into main function
61
+ validateSchemaMiddleware(
62
+ middleware,
63
+ "<%- firstLetterUpperCase(objectType) %>",
64
+ "<%- action %>"
65
+ //(<validateSchemaSetting>
66
+ //</validateSchemaSetting>)
67
+ )
68
+ // if need to validate authorizer or additional params , add code to hook tag below
69
+
70
+ //(<afterValidateWith)
71
+ module.exports.main = middleware.wrap(async (event, context, callback) => {
72
+ try {
73
+
74
+ let recordPromises = [];
75
+
76
+ await Promise.all(event.Records.map(async record => {
77
+
78
+ let passOnProperties = [];
79
+ record._izContext.logger.debug('record ReceiveMesOutHdrSqs' , record);
80
+
81
+ // validate message (and MessageAttributes)
82
+ await recordHandlerSharedLib.validateRecord(
83
+ record,
84
+ "<%- functionName %>",
85
+ perRecordValidatorSchema,
86
+ // messageAttributeValidatorSchema
87
+ );
88
+
89
+ // add argument (to invoke lambda) to passOnProperties[]
90
+ passOnProperties.push(record.body.Message)
91
+ record._izContext.logger.debug("passOnProperties in handler", passOnProperties);
92
+
93
+ // call recordHandlerSharedLib.recordHandler with 3 parameters and return Promise (resolve)
94
+ let recordPromise = recordHandlerSharedLib.recordHandler(
95
+ record,
96
+ <%- functionName %>.<%- functionName %>Main,
97
+ "<%- queueName %>",
98
+ passOnProperties,
99
+ );
100
+ record._izContext.logger.debug('after recoedPromise in handler');
101
+ recordPromises.push(recordPromise);
102
+ }))
103
+
104
+ Logger.debug('before Promise.all(recordPromises) in handler');
105
+ try {
106
+ // --- main await all Promises
107
+ await Promise.all(recordPromises); // await all Promises
108
+
109
+ return event.Records // return all for local testing
110
+ } catch {
111
+ Logger.debug('Promise.all(recordPromises) in handler threw error (at least one record did not resolve)');
112
+ }
113
+ Logger.debug('after Promise,all(recordPromises) in handler');
114
+ } catch (err) {
115
+ Logger.error('unhandler Error , <%- functionName %>:', err);
116
+ throw (err);
117
+ }
118
+ })
119
+ <%_ function firstLetterUpperCase(text){
120
+ return text.charAt(0).toUpperCase() + text.slice(1)
121
+ } _%>
122
+ <%_ function firstLetterLowerCase(str) {
123
+ return str.charAt(0).toLowerCase() + str.slice(1)
124
+ } _%>