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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/package.json +2 -2
  2. package/src/GenerateCodeLibs/index.js +2 -1
  3. package/src/GenerateCodeLibs/src/Consts.js +12 -3
  4. package/src/GenerateCodeLibs/src/GenerateCodeLibs.js +232 -7
  5. package/src/GenerateCodeLibs/src/TranslateIdsLibs.js +89 -0
  6. package/src/MainLibs/src/Utils.js +10 -0
  7. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrApi/data.js +10 -2
  8. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrDsq/data.js +5 -4
  9. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrInv/data.js +11 -1
  10. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrSqs/data.js +4 -3
  11. package/src/TemplateManager/src/CreateRelationship/createRelationship/mainFunction/template.ejs +24 -22
  12. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrDsq/data.js +0 -1
  13. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrSqs/data.js +1 -1
  14. package/src/TemplateManager/src/CreateRelationship/createRelationship/sns-in-sqs/data.js +0 -2
  15. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/functionYaml/data.js +2 -2
  16. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/handler/HdrSqs/data.js +0 -1
  17. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/sns-out/data.js +1 -1
  18. package/src/TemplateManager/src/FindData/FindDataYaml/data.js +188 -0
  19. package/src/TemplateManager/src/FindData/FindDataYaml/template.ejs +27 -0
  20. package/src/TemplateManager/src/FindData/GetByStorage/getByDynamo.ejs +53 -0
  21. package/src/TemplateManager/src/FindData/GetByStorage/getByGraph.ejs +99 -0
  22. package/src/TemplateManager/src/FindData/Handler/data.js +48 -0
  23. package/src/TemplateManager/src/FindData/Handler/template.ejs +140 -0
  24. package/src/TemplateManager/src/FindData/mainFunction/data.js +279 -0
  25. package/src/TemplateManager/src/FindData/mainFunction/template.ejs +155 -0
  26. package/src/TemplateManager/src/GenerateCode(Old).js +1 -1
  27. package/src/TemplateManager/src/GenerateCode.js +147 -32
  28. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/functionYaml/data.js +98 -0
  29. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/functionYaml/template.ejs +33 -0
  30. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/handler/data.js +0 -0
  31. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/handler/template.ejs +0 -0
  32. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/createObjectComplete_main.js +172 -0
  33. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/data.js +0 -0
  34. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/template.ejs +0 -0
  35. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-in-sqs/data.js +0 -0
  36. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-in-sqs/template.ejs +0 -0
  37. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-out/data.js +0 -0
  38. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-out/template.ejs +0 -0
  39. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/functionYaml/data.js +98 -0
  40. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/functionYaml/template.ejs +33 -0
  41. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/handler/data.js +59 -0
  42. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/handler/template.ejs +129 -0
  43. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/mainFunction/data.js +53 -0
  44. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/mainFunction/template.ejs +126 -0
  45. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/sns-out/data.js +62 -0
  46. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/sqs-in-sns/data.js +58 -0
  47. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/sqs-in-sns/template.ejs +47 -0
  48. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrApi/data.js +21 -1
  49. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrApi/template.ejs +2 -2
  50. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrDsq/data.js +24 -1
  51. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrInv/data.js +51 -2
  52. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrSqs/data.js +25 -3
  53. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/data.js +4 -6
  54. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/getTemplate.ejs +76 -0
  55. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/updateTemplate.ejs +67 -0
  56. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/data.js +47 -23
  57. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/getTemplate.ejs +105 -0
  58. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/updateTemplate.ejs +109 -0
  59. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/createTemplate.ejs +75 -0
  60. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/data.js +69 -21
  61. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/getTemplate.ejs +82 -0
  62. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/updateTemplate.ejs +75 -0
  63. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/data.js +46 -17
  64. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/getTemplate.ejs +124 -0
  65. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/updateTemplate.ejs +133 -0
  66. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/CreateObject_main.js +760 -0
  67. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/data.js +67 -0
  68. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/request.json +0 -0
  69. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/template.ejs +581 -0
  70. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Get/data.js +0 -6
  71. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Get/template.ejs +17 -12
  72. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/data.js +61 -0
  73. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/request.json +0 -0
  74. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/template.ejs +267 -0
  75. package/src/TemplateManager/src/ProcessLogical/Handler/data.js +49 -0
  76. package/src/TemplateManager/src/ProcessLogical/Handler/template.ejs +129 -0
  77. package/src/TemplateManager/src/ProcessLogical/ProcessLogicalYaml/data.js +175 -0
  78. package/src/TemplateManager/src/ProcessLogical/ProcessLogicalYaml/template.ejs +25 -0
  79. package/src/TemplateManager/src/ProcessLogical/mainFunction/data.js +47 -0
  80. package/src/TemplateManager/src/ProcessLogical/mainFunction/template.ejs +421 -0
  81. package/src/TemplateManager/src/ProcessLogicalPagination/DsqYaml/data.js +50 -0
  82. package/src/TemplateManager/src/ProcessLogicalPagination/DsqYaml/template.ejs +32 -0
  83. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrDsq/data.js +167 -0
  84. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrDsq/template.ejs +25 -0
  85. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrSqs/data.js +169 -0
  86. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrSqs/template.ejs +25 -0
  87. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrDsq/data.js +48 -0
  88. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrDsq/template.ejs +163 -0
  89. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrSqs/data.js +48 -0
  90. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrSqs/template.ejs +146 -0
  91. package/src/TemplateManager/src/ProcessLogicalPagination/mainFunction/data.js +48 -0
  92. package/src/TemplateManager/src/ProcessLogicalPagination/mainFunction/template.ejs +212 -0
  93. package/src/TemplateManager/src/ResourceYaml/CreateSourceData.js +2 -2
  94. package/src/TemplateManager/src/ResourceYaml/dynamodb/processLogicalAndFindData.js +2 -2
  95. package/src/TemplateManager/src/ResourceYaml/sns-in-sqs/defaultSnsInSqsForFindDataAndProcessLogical.js +27 -12
  96. package/src/TemplateManager/src/ResourceYaml/sns-out/data.js +1 -1
  97. package/src/TemplateManager/src/ResourceYaml/sns-out/defaultSnsOutForFindDataAndProcessLogical.js +75 -0
  98. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/functionYaml/data.js +95 -0
  99. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/functionYaml/template.ejs +30 -0
  100. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/handler/dataHdrDsq.js +52 -0
  101. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/handler/template.ejs +194 -0
  102. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/mainFunction/data.js +48 -0
  103. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/mainFunction/template.ejs +330 -0
  104. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/sns-out/data.js +47 -0
  105. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/sqs-sns/data.js +58 -0
  106. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/sqs-sns/template.ejs +43 -0
  107. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/functionYaml/HdrDsq/data.js +116 -0
  108. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/functionYaml/HdrSqs/data.js +116 -0
  109. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrDsq/data.js +60 -0
  110. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrDsq/template.ejs +157 -0
  111. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrSqs/data.js +59 -0
  112. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrSqs/template.ejs +175 -0
  113. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/mainFunction/data.js +61 -0
  114. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/mainFunction/template.ejs +155 -0
  115. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/resourceYaml/dynamoDb/data.js +120 -0
  116. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/resourceYaml/sns-sqs/data.js +75 -0
  117. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/functionYaml/data.js +2 -2
  118. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/sns-out/data.js +1 -1
  119. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrApi/data.js +10 -3
  120. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrDsq/data.js +6 -4
  121. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrInv/data.js +11 -1
  122. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrSqs/data.js +7 -5
  123. package/src/TemplateManager/src/externalService/LambdaRole/data.js +149 -28
  124. package/src/TemplateManager/src/externalService/LambdaRole/template.ejs +16 -15
  125. package/src/TemplateManager/src/externalService/SnsTopicSubscriotions/data.js +35 -6
  126. package/src/TemplateManager/src/externalService/SnsTopicSubscriotions/template.ejs +3 -4
  127. package/src/TemplateManager/src/libs/Consts.js +122 -11
  128. package/src/TemplateManager/src/PerActionEndpoint/Handler/testRequest.json +0 -5
@@ -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
+ } _%>
@@ -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
+ createHandlerGet && 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;