@izara_project/izara-market-library-service-schemas 1.0.29 → 1.0.30
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.
- package/package.json +1 -1
- package/src/GenerateCodeLibs/src/Consts.js +10 -9
- package/src/GenerateCodeLibs/src/GenerateCodeLibs.js +54 -21
- package/src/MainLibs/src/Consts.js +33 -17
- package/src/reStructure/GenerateCode.js +2 -1
- package/src/reStructure/TemplateConfig.js +5 -1
- package/src/reStructure/TemplateData/EndpointPerService/generateTemplateData.js +108 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/api/data.js +76 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/api/request.json +7 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/api/template.ejs +73 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/dsq/data.js +81 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/dsq/request.json +7 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/dsq/template.ejs +125 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/inv/data.js +70 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/inv/request.json +7 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/inv/template.ejs +73 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/sqs/data.js +79 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/sqs/request.json +7 -0
- package/src/reStructure/TemplateData/EndpointPerService/handler/sqs/template.ejs +126 -0
- package/src/reStructure/TemplateData/EndpointPerService/mainFunction/create/data.js +53 -0
- package/src/reStructure/TemplateData/EndpointPerService/mainFunction/create/template.ejs +624 -0
- package/src/reStructure/TemplateData/EndpointPerService/mainFunction/delete/data.js +52 -0
- package/src/reStructure/TemplateData/EndpointPerService/mainFunction/delete/template.ejs +177 -0
- package/src/reStructure/TemplateData/EndpointPerService/mainFunction/get/data.js +56 -0
- package/src/reStructure/TemplateData/EndpointPerService/mainFunction/get/template.ejs +234 -0
- package/src/reStructure/TemplateData/EndpointPerService/mainFunction/update/data.js +56 -0
- package/src/reStructure/TemplateData/EndpointPerService/mainFunction/update/template.ejs +330 -0
- package/src/reStructure/TemplateData/EndpointPerService/yaml/data.js +175 -0
- package/src/reStructure/TemplateData/EndpointPerService/yaml/template.ejs +26 -0
- package/src/reStructure/TemplateData/externalService/generateTemplateData.js +1 -1
- package/src/reStructure/TemplateData/externalService/lambdaRole/data.js +91 -249
- package/src/reStructure/TemplateData/externalService/lambdaRole/template.ejs +1 -1
- package/src/reStructure/TemplateData/externalService/snsTopicSubscriptions/data.js +10 -8
- package/src/reStructure/TemplateData/externalService/snsTopicSubscriptions/template.ejs +1 -1
- package/src/reStructure/TemplateData/findData/findDataYaml/data.js +2 -2
- package/src/reStructure/TemplateData/flowSchema/components/upload/confirmReserved/functionYaml/data.js +4 -3
- package/src/reStructure/TemplateData/flowSchema/components/upload/createObject/functionYaml/data.js +3 -29
- package/src/reStructure/TemplateData/flowSchema/components/upload/createObject/handler/data.js +3 -21
- package/src/reStructure/TemplateData/flowSchema/components/upload/createObject/handler/template.ejs +3 -31
- package/src/reStructure/TemplateData/flowSchema/components/upload/createObjectComplete/functionYaml/data.js +2 -2
- package/src/reStructure/TemplateData/flowSchema/components/upload/createObjectComplete/sns-sqs/data.js +1 -1
- package/src/reStructure/TemplateData/flowSchema/components/upload/createObjectComplete/sns-sqs/template.ejs +1 -1
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → createPresignUrl}/functionYaml/data.js +41 -10
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → createPresignUrl}/functionYaml/template.ejs +3 -0
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → createPresignUrl}/handler/data.js +2 -2
- package/src/reStructure/TemplateData/flowSchema/components/upload/{hook/handler/templateAsyncHandler.ejs → preSignUrl/createPresignUrl/handler/template.ejs} +26 -11
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → createPresignUrl}/mainFunction/data.js +10 -7
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/createPresignUrl/mainFunction/template.ejs +253 -0
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{reservedLimit → createPresignUrl}/queue/data.js +1 -1
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/functionYaml/data.js +10 -38
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/functionYaml/template.ejs +0 -3
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/handler/data.js +2 -2
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/handler/template.ejs +40 -45
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/mainFunction/data.js +7 -10
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/reservedLimit/mainFunction/template.ejs +100 -190
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → reservedLimit}/sqs/data.js +4 -4
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{getSignUrls → reservedLimit}/sqs/template.ejs +2 -2
- package/src/reStructure/TemplateData/flowSchema/components/upload/processFile/functionYml/HdrS3/data.js +8 -6
- package/src/reStructure/TemplateData/flowSchema/components/upload/processFile/queue/s3Template.ejs +1 -1
- package/src/reStructure/TemplateData/flowSchema/components/upload/relate/S3/data.js +5 -2
- package/src/reStructure/TemplateData/flowSchema/generateTemplateData.js +41 -38
- package/src/reStructure/TemplateData/flowSchema/legacy/hookCode-old/queue/snsTemplate.ejs +1 -1
- package/src/reStructure/TemplateData/generateRole/createSharedResource.js +11 -1
- package/src/reStructure/TemplateData/perActionComplete/create/mainFunction/template.ejs +35 -44
- package/src/reStructure/TemplateData/perActionComplete/create/sns-out/template.ejs +1 -1
- package/src/reStructure/TemplateData/perActionComplete/create/yaml/data.js +4 -5
- package/src/reStructure/TemplateData/perActionComplete/delete/yaml/data.js +5 -4
- package/src/reStructure/TemplateData/perActionComplete/generateTemplateData.js +15 -2
- package/src/reStructure/TemplateData/perActionComplete/get/yaml/data.js +7 -4
- package/src/reStructure/TemplateData/perActionComplete/update/sns-out/data.js +1 -1
- package/src/reStructure/TemplateData/perActionComplete/update/yaml/data.js +5 -4
- package/src/reStructure/TemplateData/processLogical/yaml/data.js +3 -3
- package/src/reStructure/TemplateData/processLogicalPagination/yaml/dsq/data.js +1 -1
- package/src/reStructure/TemplateData/processLogicalPagination/yaml/sqs/data.js +2 -2
- package/src/reStructure/TemplateData/relationshipPerAction/create/action/functionYaml/api/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/create/action/functionYaml/dsq/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/create/action/functionYaml/inv/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/create/action/functionYaml/sqs/data.js +3 -3
- package/src/reStructure/TemplateData/relationshipPerAction/create/action/sns-in-sqs/snsTemplate.ejs +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/create/complete/functionYaml/data.js +2 -2
- package/src/reStructure/TemplateData/relationshipPerAction/create/complete/mainFunction/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/create/complete/sns-in-sqs/template.ejs +0 -1
- package/src/reStructure/TemplateData/relationshipPerAction/create/complete/sns-out/template.ejs +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/delete/action/functionYaml/api/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/delete/action/functionYaml/dsq/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/delete/action/functionYaml/inv/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/delete/action/functionYaml/sqs/data.js +3 -3
- package/src/reStructure/TemplateData/relationshipPerAction/delete/action/sns-in-sqs/snsTemplate.ejs +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/delete/complete/functionYaml/data.js +2 -2
- package/src/reStructure/TemplateData/relationshipPerAction/delete/complete/sns-out/template.ejs +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/get/action/functionYaml/api/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/get/action/functionYaml/dsq/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/get/action/functionYaml/inv/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/get/action/functionYaml/sqs/data.js +4 -4
- package/src/reStructure/TemplateData/relationshipPerAction/get/action/sns-in-sqs/snsTemplate.ejs +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/get/complete/functionYaml/data.js +2 -2
- package/src/reStructure/TemplateData/relationshipPerAction/get/complete/sns-out/template.ejs +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/update/action/functionYaml/api/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/update/action/functionYaml/dsq/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/update/action/functionYaml/inv/data.js +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/update/action/functionYaml/sqs/data.js +4 -4
- package/src/reStructure/TemplateData/relationshipPerAction/update/action/sns-in-sqs/snsTemplate.ejs +1 -1
- package/src/reStructure/TemplateData/relationshipPerAction/update/complete/functionYaml/data.js +2 -2
- package/src/reStructure/TemplateData/relationshipPerAction/update/complete/sns-out/template.ejs +1 -1
- package/src/reStructure/TemplateData/resourceYaml/dynamodb/defaultDynamoDbTable.js +1 -1
- package/src/reStructure/TemplateData/resourceYaml/dynamodb/generateDynamoPerLink.js +1 -1
- package/src/reStructure/TemplateData/resourceYaml/dynamodb/mainResourcePerObjectSchemaData.js +1 -1
- package/src/reStructure/TemplateData/resourceYaml/generateTemplateData.js +6 -12
- package/src/reStructure/TemplateData/resourceYaml/sns-in-sqs/defaultSnsInSqsForFindDataAndProcessLogical.js +1 -1
- package/src/reStructure/TemplateData/resourceYaml/sns-in-sqs/snsAndSqsPerActionData.js +22 -49
- package/src/reStructure/TemplateData/resourceYaml/sns-in-sqs/snsTemplate.ejs +1 -1
- package/src/reStructure/TemplateData/resourceYaml/sns-out/data.js +8 -24
- package/src/reStructure/TemplateData/resourceYaml/sns-out/template.ejs +1 -1
- package/src/reStructure/TemplateData/testTemplate/template.ejs +0 -5
- package/src/reStructure/TemplateData/flowSchema/components/upload/hook/handler/data.js +0 -93
- package/src/reStructure/TemplateData/flowSchema/components/upload/hook/handler/templateSyncHandler.ejs +0 -49
- package/src/reStructure/TemplateData/flowSchema/components/upload/hook/hookLogic/data.js +0 -43
- package/src/reStructure/TemplateData/flowSchema/components/upload/hook/mainFunction/data.js +0 -65
- package/src/reStructure/TemplateData/flowSchema/components/upload/hook/mainFunction/template.ejs +0 -7
- package/src/reStructure/TemplateData/flowSchema/components/upload/hook/queue/data.js +0 -72
- package/src/reStructure/TemplateData/flowSchema/components/upload/hook/queue/snsTemplate.ejs +0 -59
- package/src/reStructure/TemplateData/flowSchema/components/upload/hook/queue/sqsTemplate.ejs +0 -43
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/getSignUrls/handler/template.ejs +0 -120
- package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/getSignUrls/mainFunction/template.ejs +0 -163
- package/src/reStructure/TemplateData/relationshipPerAction.zip +0 -0
- /package/src/reStructure/TemplateData/flowSchema/components/upload/preSignUrl/{reservedLimit → createPresignUrl}/queue/template.ejs +0 -0
package/package.json
CHANGED
|
@@ -48,19 +48,20 @@ const TOPIC_NAME_GENERATE_CODE = {
|
|
|
48
48
|
createRelComplete: "CreateRelationshipComplete",
|
|
49
49
|
deleteRelComplete: "DeleteRelationshipComplete",
|
|
50
50
|
getRelComplete: "GetRelationshipComplete",
|
|
51
|
-
outUpdateRelComplete: "
|
|
52
|
-
outCreateRelComplete: "
|
|
53
|
-
outDeleteRelComplete: "
|
|
54
|
-
outGetRelComplete: "
|
|
51
|
+
outUpdateRelComplete: "UpdateRelationshipComplete_Out",
|
|
52
|
+
outCreateRelComplete: "CreateRelationshipComplete_Out",
|
|
53
|
+
outDeleteRelComplete: "DeleteRelationshipComplete_Out",
|
|
54
|
+
outGetRelComplete: "GetRelationshipComplete_Out",
|
|
55
55
|
updateNodeComplete: "UpdateNodeComplete",
|
|
56
|
-
outUpdateNodeComplete: "
|
|
56
|
+
outUpdateNodeComplete: "UpdateNodeComplete_Out",
|
|
57
57
|
createNodeComplete: "CreateObjectComplete",
|
|
58
|
-
outCreateNodeComplete: "
|
|
58
|
+
outCreateNodeComplete: "CreateObjectComplete_Out",
|
|
59
59
|
deleteNodeComplete: "DeleteNodeComplete",
|
|
60
|
-
outDeleteNodeComplete: "
|
|
60
|
+
outDeleteNodeComplete: "DeleteNodeComplete_Out",
|
|
61
61
|
getNodeComplete: "GetNodeComplete",
|
|
62
|
-
outGetNodeComplete: "
|
|
63
|
-
reservedLimitComplete: "ReservedLimitComplete"
|
|
62
|
+
outGetNodeComplete: "GetNodeComplete_Out",
|
|
63
|
+
reservedLimitComplete: "ReservedLimitComplete",
|
|
64
|
+
createPresignUrl: "CreatePresignUrl"
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
const GRAPH_HANDLER_SERVICE_NAME = {
|
|
@@ -19,21 +19,14 @@ along with this program.If not, see < http://www.gnu.org/licenses/>.
|
|
|
19
19
|
|
|
20
20
|
const lodash = require('lodash');
|
|
21
21
|
const hash = require("object-hash")
|
|
22
|
-
|
|
23
22
|
const snsSharedLib = require('@izara_project/izara-core-library-sns');
|
|
24
23
|
const sqsSharedLib = require('@izara_project/izara-core-library-sqs');
|
|
25
24
|
const inMemoryCacheLib = require('@izara_project/izara-core-library-core').inMemoryCacheLib;
|
|
26
25
|
const callingFlowSharedLib = require('@izara_project/izara-core-library-calling-flow');
|
|
27
|
-
|
|
28
26
|
const sns = require('@izara_project/izara-core-library-external-request/src/resources/Sns');
|
|
29
27
|
const sqs = require('@izara_project/izara-core-library-external-request/src/resources/Sqs');
|
|
30
|
-
|
|
31
28
|
const NoRetryError = require('@izara_project/izara-core-library-core/src/NoRetryError');
|
|
32
|
-
const { validateObject } = require('@izara_project/izara-core-library-core/src/Validator');
|
|
33
|
-
|
|
34
|
-
|
|
35
29
|
const getObjectSchema = require('@izara_project/izara-core-library-service-schemas/src/GetObjectSchema')
|
|
36
|
-
// const serviceSchemas = require('./ServiceSchemas');
|
|
37
30
|
const validatorSchema = require('@izara_project/izara-core-library-service-schemas/src/ValidatorSchema');
|
|
38
31
|
const serviceConfig = require('@izara_project/izara-core-library-service-schemas/src/ServiceConfig');
|
|
39
32
|
const utils = require('@izara_project/izara-core-library-service-schemas/src/Utils');
|
|
@@ -47,8 +40,8 @@ const Logger = require("@izara_project/izara-core-library-logger");
|
|
|
47
40
|
|
|
48
41
|
const nodeLabelRegexPattern = "^[a-zA-Z0-9_-]+(?:\:[a-zA-Z0-9_-]+)?$"
|
|
49
42
|
const { validateObjType } = require('@izara_project/izara-shared-service-schemas').validateObjType;
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
// const { validateObject } = require('@izara_project/izara-core-library-core').validator
|
|
44
|
+
const { validateObject } = require("@izara_project/izara-core-library-core").validator
|
|
52
45
|
|
|
53
46
|
const schemaFunctionPerAction = {
|
|
54
47
|
[consts.ACTIONS.create]: validatorSchema.generateValidatorSchemaForCreate,
|
|
@@ -77,23 +70,23 @@ const explodeDataPerAction = {
|
|
|
77
70
|
*/
|
|
78
71
|
function validateSchemaMiddleware(
|
|
79
72
|
middleware,
|
|
80
|
-
objectType,
|
|
73
|
+
// objectType,
|
|
81
74
|
action,
|
|
82
|
-
setting = {}
|
|
75
|
+
// setting = {}
|
|
83
76
|
) {
|
|
84
77
|
|
|
85
78
|
if (!schemaFunctionPerAction[action] || !explodeDataPerAction[action]) {
|
|
86
79
|
throw new NoRetryError(`Not found function for generateValidatorSchema or explodeDataPerAction of action:${action}`);
|
|
87
80
|
}
|
|
88
|
-
Logger.debug("setting in generateCodeLibs", setting)
|
|
81
|
+
// Logger.debug("setting in generateCodeLibs", setting)
|
|
89
82
|
middleware.setServiceSchema(
|
|
90
83
|
schemaFunctionPerAction[action],
|
|
91
84
|
explodeDataPerAction[action],
|
|
92
|
-
{
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
},
|
|
85
|
+
// {
|
|
86
|
+
// objectType: objectType,
|
|
87
|
+
// specificFieldNames: setting?.specificFieldNames ? setting.specificFieldNames : [],
|
|
88
|
+
// action: action
|
|
89
|
+
// },
|
|
97
90
|
);
|
|
98
91
|
}
|
|
99
92
|
|
|
@@ -112,14 +105,15 @@ async function validateSchemaPerRecord(
|
|
|
112
105
|
record,
|
|
113
106
|
lambdaFunctionName,
|
|
114
107
|
objType,
|
|
115
|
-
action,
|
|
108
|
+
action,
|
|
116
109
|
setting
|
|
117
110
|
) {
|
|
118
111
|
try {
|
|
119
|
-
record._izContext.logger.debug("validateSchemaPerRecord: ",
|
|
112
|
+
record._izContext.logger.debug("validateSchemaPerRecord: ",
|
|
113
|
+
record,
|
|
120
114
|
lambdaFunctionName,
|
|
121
115
|
objType,
|
|
122
|
-
action,
|
|
116
|
+
action,
|
|
123
117
|
setting
|
|
124
118
|
)
|
|
125
119
|
|
|
@@ -129,6 +123,10 @@ async function validateSchemaPerRecord(
|
|
|
129
123
|
|
|
130
124
|
const objectSchema = await getObjectSchema.getObjSchemaS3WithHierarchy(record._izContext, objType);
|
|
131
125
|
|
|
126
|
+
if (!objectSchema) {
|
|
127
|
+
throw new Error("not have objectSchema in service");
|
|
128
|
+
}
|
|
129
|
+
|
|
132
130
|
const generateValidatorFunction = schemaFunctionPerAction[action];
|
|
133
131
|
const explodeDataFunction = explodeDataPerAction[action]
|
|
134
132
|
|
|
@@ -147,7 +145,7 @@ async function validateSchemaPerRecord(
|
|
|
147
145
|
record._izContext.logger.debug('explodedDataRequestParams in validateSchemaPerRecord : ', JSON.stringify(explodedDataRequestParams));
|
|
148
146
|
|
|
149
147
|
|
|
150
|
-
let validateStatus = validateObject(
|
|
148
|
+
let validateStatus = validateObject(generatedSchema, explodedDataRequestParams);
|
|
151
149
|
record._izContext.logger.debug('validateStatus : ', validateStatus);
|
|
152
150
|
|
|
153
151
|
// if not pass validate will sent messsage to dlq and throw NoRetryError
|
|
@@ -187,6 +185,40 @@ async function validationForWebSocket(
|
|
|
187
185
|
|
|
188
186
|
|
|
189
187
|
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
*
|
|
191
|
+
* @param {middleware} middleware
|
|
192
|
+
* @param {string} objectType - name of ObjectType
|
|
193
|
+
* @param {string} action - action type of Lambda create | update | get | delete
|
|
194
|
+
*/
|
|
195
|
+
function validatorSchemaMiddlewareByAction(
|
|
196
|
+
middleware,
|
|
197
|
+
// objectType,
|
|
198
|
+
action,
|
|
199
|
+
setting = {}
|
|
200
|
+
) {
|
|
201
|
+
|
|
202
|
+
// if (!schemaFunctionPerAction[action] || !explodeDataPerAction[action]) {
|
|
203
|
+
// throw new NoRetryError(`Not found function for generateValidatorSchema or explodeDataPerAction of action:${action}`);
|
|
204
|
+
// }
|
|
205
|
+
console.log("before send to middleware", {
|
|
206
|
+
middleware,
|
|
207
|
+
// objectType,
|
|
208
|
+
action,
|
|
209
|
+
setting
|
|
210
|
+
})
|
|
211
|
+
Logger.debug("setting in generateCodeLibs", setting)
|
|
212
|
+
middleware.setServiceSchema(
|
|
213
|
+
// schemaFunctionPerAction[action],
|
|
214
|
+
// explodeDataPerAction[action],
|
|
215
|
+
{
|
|
216
|
+
// objectType: objectType,
|
|
217
|
+
specificFieldNames: setting?.specificFieldNames ? setting.specificFieldNames : [],
|
|
218
|
+
action: action
|
|
219
|
+
},
|
|
220
|
+
);
|
|
221
|
+
}
|
|
190
222
|
// /**
|
|
191
223
|
// * use to validate record for Lambda handler hdrSqs/hdrDsq
|
|
192
224
|
// * Note!: cannot throw error when use this function outside recordHandler
|
|
@@ -1032,6 +1064,7 @@ module.exports = {
|
|
|
1032
1064
|
|
|
1033
1065
|
validateSchemaMiddleware,
|
|
1034
1066
|
validateSchemaPerRecord,
|
|
1067
|
+
validatorSchemaMiddlewareByAction,
|
|
1035
1068
|
|
|
1036
1069
|
createGetDataDetails,
|
|
1037
1070
|
collectGetData,
|
|
@@ -55,7 +55,7 @@ function resourceNames(resourceClass, resourceName) {
|
|
|
55
55
|
[RESOURCE_CLASSES.sqs]: "arn:aws:sqs:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_resourcePrefix}" + resourceName,
|
|
56
56
|
[RESOURCE_CLASSES.s3]: "arn:aws:s3:::" + resourceName,
|
|
57
57
|
[RESOURCE_CLASSES.dynamoDbTable]: "arn:aws:dynamodb:${self:custom.iz_region}:${self:custom.iz_accountId}:table/${self:custom.iz_resourcePrefix}" + resourceName,
|
|
58
|
-
[RESOURCE_CLASSES.sns]: "arn:aws:sns:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.
|
|
58
|
+
[RESOURCE_CLASSES.sns]: "arn:aws:sns:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_serviceTag}_${self:custom.iz_stage}_" + resourceName,
|
|
59
59
|
[RESOURCE_CLASSES.lambda]: "arn:aws:lambda:${self:custom.iz_region}:${self:custom.iz_accountId}:function:${self:custom.iz_resourcePrefix}" + resourceName,
|
|
60
60
|
[RESOURCE_CLASSES.webSocket]: "arn:aws:execute-api:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_webSocketHostId}/Test/POST/@connections/{connectionId}"
|
|
61
61
|
}[resourceClass];
|
|
@@ -122,7 +122,9 @@ const SOURCE_PATH = {
|
|
|
122
122
|
resourceLocationLogicalFunctionHook: "src/generatedCode/WebSocket/source/FlowSchemaHook/HookLogicFunction/source",
|
|
123
123
|
generatedCodeHookFunction: "../src/generatedCode/WebSocket/source/FlowSchemaHook/HookFunctionGeneratedCode/source/",
|
|
124
124
|
resourceLocationGeneratedCodeHookFunction: "src/generatedCode/WebSocket/source/FlowSchemaHook/HookFunctionGeneratedCode/source/",
|
|
125
|
-
generatedAttributeTree: "../src/schemas/generatedCode/source/"
|
|
125
|
+
generatedAttributeTree: "../src/schemas/generatedCode/source/",
|
|
126
|
+
endpointPerService: "../src/generatedCode/ActionEndpoint/source/",
|
|
127
|
+
resourceLocationHandlerEndpointPerService: "src/generatedCode/ActionEndpoint/source/"
|
|
126
128
|
};
|
|
127
129
|
|
|
128
130
|
const DEFAULT_LAMBDA_ROLE_PER_ACTION = {
|
|
@@ -221,7 +223,7 @@ const SAVE_FILE_NAME = {
|
|
|
221
223
|
sharedResourceYaml: "generate-SharedResource",
|
|
222
224
|
attributeTreeObjectRelationship: "ObjectRelationships",
|
|
223
225
|
attributeTreeRefObjectRelationship: "RefObjectRelationships",
|
|
224
|
-
attributeTreeObjectSchema: "ObjectFieldSchema"
|
|
226
|
+
attributeTreeObjectSchema: "ObjectFieldSchema",
|
|
225
227
|
};
|
|
226
228
|
|
|
227
229
|
const FUNCTION_NAME = {
|
|
@@ -246,7 +248,9 @@ const FUNCTION_NAME = {
|
|
|
246
248
|
createObjectS3Complete: "webSocketTaskComplete",
|
|
247
249
|
processAfterUploadS3: "processAfterUploadS3",
|
|
248
250
|
getRel: "getRelationship",
|
|
249
|
-
getRelComplete: "getRelationshipComplete"
|
|
251
|
+
getRelComplete: "getRelationshipComplete",
|
|
252
|
+
reservedLimit: "reservedLimit",
|
|
253
|
+
createPresignUrl: "createPresignUrl"
|
|
250
254
|
};
|
|
251
255
|
|
|
252
256
|
const SHORT_FUNCTION_NAME = {
|
|
@@ -318,15 +322,6 @@ function defaultIamRolePerAction() {
|
|
|
318
322
|
return defaultIamRole
|
|
319
323
|
};
|
|
320
324
|
|
|
321
|
-
function getComplexFilterServiceTag(allObjectSchemas) {
|
|
322
|
-
const complexFilterServiceTagSet = new Set();
|
|
323
|
-
for (let objectSchema of allObjectSchemas) {
|
|
324
|
-
complexFilterServiceTagSet.add(objectSchema.complexFilterServiceTag)
|
|
325
|
-
}
|
|
326
|
-
let complexFilterServiceTags = [...complexFilterServiceTagSet];
|
|
327
|
-
return complexFilterServiceTags
|
|
328
|
-
};
|
|
329
|
-
|
|
330
325
|
async function getGraphServiceNameFromObjectSchema(_izContext, allObjSchemas) {
|
|
331
326
|
const graphServiceName = new Set();
|
|
332
327
|
for (const objectSchema of allObjSchemas) {
|
|
@@ -338,7 +333,6 @@ async function getGraphServiceNameFromObjectSchema(_izContext, allObjSchemas) {
|
|
|
338
333
|
}
|
|
339
334
|
}
|
|
340
335
|
let graphServiceNames = [...graphServiceName]
|
|
341
|
-
// console.log("graphServiceName", graphServiceNames)
|
|
342
336
|
return graphServiceNames
|
|
343
337
|
};
|
|
344
338
|
|
|
@@ -371,7 +365,8 @@ const SOURCE_GENERATE_IAM_ROLE = {
|
|
|
371
365
|
NodeCompleteRole: "NodeCom",
|
|
372
366
|
RelationshipRole: "Relationship",
|
|
373
367
|
RelationshipCompleteRole: "RelationshipCom",
|
|
374
|
-
FlowSchemaUploadS3Role: "FlowSchemaUploadS3"
|
|
368
|
+
FlowSchemaUploadS3Role: "FlowSchemaUploadS3",
|
|
369
|
+
perActionEndpoint: "PerActionEndpoint"
|
|
375
370
|
};
|
|
376
371
|
|
|
377
372
|
const ADD_ON_DATA_STRUCTURE_TYPE = {
|
|
@@ -475,6 +470,7 @@ function checkDynamoTypeRelationship(relationship) {
|
|
|
475
470
|
}
|
|
476
471
|
return [storageType, relaitonshipTag, links];
|
|
477
472
|
}
|
|
473
|
+
|
|
478
474
|
function createDynamoDbComponentByLinks(link, relationshipTag) {
|
|
479
475
|
let tableNameFrom = `${link.from.objType.serviceTag}_${link.from.objType.objectType}__${relationshipTag}__${link.to.objType.serviceTag}_${link.to.objType.objectType}`
|
|
480
476
|
let tableNameTo = `${link.to.objType.serviceTag}_${link.to.objType.objectType}__${relationshipTag}__${link.from.objType.serviceTag}_${link.from.objType.objectType}`
|
|
@@ -494,6 +490,26 @@ function createDynamoDbComponentByLinks(link, relationshipTag) {
|
|
|
494
490
|
}
|
|
495
491
|
}
|
|
496
492
|
|
|
493
|
+
async function getStorageResourceFromObjectSchemas(_izContext, allObjSchemas) {
|
|
494
|
+
if (Array.isArray(allObjSchemas)) {
|
|
495
|
+
allObjSchemas = [allObjSchemas]
|
|
496
|
+
}
|
|
497
|
+
let resourceGraphServiceTag = new Set();
|
|
498
|
+
let resourceDynamoTableName = new Set();
|
|
499
|
+
for (const objectSchema of allObjSchemas.records) {
|
|
500
|
+
for (const storageResource of Object.values(objectSchema.storageResources)) {
|
|
501
|
+
if (storageResource.storageType === STORAGE_TYPES.dynamoDB) {
|
|
502
|
+
resourceDynamoTableName.add(storageResource.tableName);
|
|
503
|
+
} else if (storageResource.storageType === STORAGE_TYPES.graph) {
|
|
504
|
+
let graphServiceTag = await getGraphServiceTagWithCache(_izContext, storageResource.graphServerTag);
|
|
505
|
+
resourceGraphServiceTag.add(graphServiceTag);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
return { resourceGraphServiceTag: [...resourceGraphServiceTag], resourceDynamoTableName: [...resourceDynamoTableName] }
|
|
511
|
+
}
|
|
512
|
+
|
|
497
513
|
module.exports = {
|
|
498
514
|
ACTIONS,
|
|
499
515
|
DEFAULT_HANDLER_PER_ACTION,
|
|
@@ -513,7 +529,6 @@ module.exports = {
|
|
|
513
529
|
FUNCTION_NAME,
|
|
514
530
|
getGraphServiceNameFromAllRelSchema,
|
|
515
531
|
defaultIamRolePerAction,
|
|
516
|
-
getComplexFilterServiceTag,
|
|
517
532
|
getGraphServiceNameFromObjectSchema,
|
|
518
533
|
awaitingMultipleStepsRole,
|
|
519
534
|
shortNameHandler,
|
|
@@ -526,5 +541,6 @@ module.exports = {
|
|
|
526
541
|
ATTRIBUTE_TAG,
|
|
527
542
|
PREFIX_RELATIONSHIP,
|
|
528
543
|
checkDynamoTypeRelationship,
|
|
529
|
-
createDynamoDbComponentByLinks
|
|
544
|
+
createDynamoDbComponentByLinks,
|
|
545
|
+
getStorageResourceFromObjectSchemas
|
|
530
546
|
}
|
|
@@ -28,7 +28,7 @@ const templateConfig = require("./TemplateConfig");
|
|
|
28
28
|
const { deleteFileInDir, createHookFunction } = require("../SourceManager/src/Utils");
|
|
29
29
|
const { createSource } = require("../SourceManager/src/CreateSource");
|
|
30
30
|
|
|
31
|
-
const { SOURCE_PATH } = require('../
|
|
31
|
+
const { SOURCE_PATH } = require('../MainLibs/src/Consts');
|
|
32
32
|
|
|
33
33
|
//* get functionNameConfig
|
|
34
34
|
const functionNameConfigYamlData = require('./TemplateData/externalService/functionNameConfig/data');
|
|
@@ -53,6 +53,7 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
|
|
|
53
53
|
relationshipPerAction: join(saveFilePath, SOURCE_PATH.relationshipPerAction),
|
|
54
54
|
webSocketEndpoint: join(saveFilePath, SOURCE_PATH.webSocket),
|
|
55
55
|
generateCodeLib: join(saveFilePath, SOURCE_PATH.generateCodeLib),
|
|
56
|
+
generatedMainFunctionPerService: join(saveFilePath, SOURCE_PATH.endpointPerService),
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
//------ Start Create Source ------
|
|
@@ -21,7 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
21
21
|
module.exports = {
|
|
22
22
|
TemplateAndData: {
|
|
23
23
|
// ** PerActionEndpoint **
|
|
24
|
-
perActionEndpoint: './TemplateData/perActionEndpoint/generateTemplateData.js',
|
|
24
|
+
// perActionEndpoint: './TemplateData/perActionEndpoint/generateTemplateData.js',
|
|
25
|
+
|
|
25
26
|
// ** perActionComplete **
|
|
26
27
|
perActionComplete: './TemplateData/perActionComplete/generateTemplateData.js',
|
|
27
28
|
// ** Resource YAML **
|
|
@@ -44,6 +45,9 @@ module.exports = {
|
|
|
44
45
|
|
|
45
46
|
// ** flowSchema **
|
|
46
47
|
flowSchema: './TemplateData/flowSchema/generateTemplateData.js',
|
|
48
|
+
|
|
49
|
+
// ** endpoint per service **
|
|
50
|
+
endpointPerServiceConfig: './TemplateData/EndpointPerService/generateTemplateData.js'
|
|
47
51
|
},
|
|
48
52
|
Plugin: {
|
|
49
53
|
|
|
@@ -0,0 +1,108 @@
|
|
|
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 { join } = require('path');
|
|
21
|
+
const {
|
|
22
|
+
getAllLocalObjectSchemasWithHierarchy
|
|
23
|
+
} = require('@izara_project/izara-core-library-service-schemas/src/GetObjectSchema');
|
|
24
|
+
const NoRetryError = require('@izara_project/izara-core-library-core').NoRetryError
|
|
25
|
+
// Import handlers and generators
|
|
26
|
+
const modules = {
|
|
27
|
+
handlers: {
|
|
28
|
+
inv: require("./handler/inv/data"),
|
|
29
|
+
api: require("./handler/api/data"),
|
|
30
|
+
sqs: require("./handler/sqs/data"),
|
|
31
|
+
dsq: require("./handler/dsq/data")
|
|
32
|
+
},
|
|
33
|
+
mainFunctions: {
|
|
34
|
+
create: require("./mainFunction/create/data"),
|
|
35
|
+
update: require("./mainFunction/update/data"),
|
|
36
|
+
get: require('./mainFunction/get/data'),
|
|
37
|
+
delete: require('./mainFunction/delete/data')
|
|
38
|
+
},
|
|
39
|
+
// yamlGenerators: {
|
|
40
|
+
// inv: require('./yaml/inv/data'),
|
|
41
|
+
// api: require('./yaml/api/data'),
|
|
42
|
+
// sqs: require('./yaml/sqs/data'),
|
|
43
|
+
// dsq: require('./yaml/dsq/data')
|
|
44
|
+
// },
|
|
45
|
+
yamlGenerators: {
|
|
46
|
+
yaml: require('./yaml/data')
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// Import code libs generator
|
|
51
|
+
// const createGenerateCodeLibs = require('./libs/data');
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Generates code from templates based on object schemas
|
|
55
|
+
* @param {Object} _izContext - Context object
|
|
56
|
+
* @param {string} objSchemaPath - Path to object schema
|
|
57
|
+
* @returns {Promise<Array>} - Array of parameter objects for code generation
|
|
58
|
+
*/
|
|
59
|
+
async function generateCodeWithTemplate(_izContext, objSchemaPath) {
|
|
60
|
+
try {
|
|
61
|
+
const saveFilePath = join(objSchemaPath, `../`);
|
|
62
|
+
const allObjSchemas = await getAllLocalObjectSchemasWithHierarchy(_izContext, objSchemaPath);
|
|
63
|
+
|
|
64
|
+
const createSourceParams = [];
|
|
65
|
+
|
|
66
|
+
for (const objectSchema of allObjSchemas.records) {
|
|
67
|
+
try {
|
|
68
|
+
// Generate handlers
|
|
69
|
+
const handlerParams = Object.entries(modules.handlers)
|
|
70
|
+
.flatMap(([type, handlerFn]) => handlerFn(_izContext, saveFilePath));
|
|
71
|
+
|
|
72
|
+
// Generate main functions
|
|
73
|
+
const functionParams = (await Promise.all(
|
|
74
|
+
Object.entries(modules.mainFunctions).map(([action, functionFn]) =>
|
|
75
|
+
functionFn(_izContext, saveFilePath)
|
|
76
|
+
)
|
|
77
|
+
)).flat();
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
// Generate code libs
|
|
82
|
+
// const libsParam = createGenerateCodeLibs(_izContext, saveFilePath);
|
|
83
|
+
|
|
84
|
+
createSourceParams.push(...handlerParams, ...functionParams);
|
|
85
|
+
} catch (error) {
|
|
86
|
+
_izContext.logger.error(`Error processing schema ${objectSchema.name || 'unknown'}: ${error}`);
|
|
87
|
+
throw new NoRetryError(error)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
// Generate function YAML files
|
|
92
|
+
const yamlParams = (await Promise.all(
|
|
93
|
+
Object.entries(modules.yamlGenerators)
|
|
94
|
+
.map(([type, yamlFn]) => yamlFn(_izContext, allObjSchemas, saveFilePath))
|
|
95
|
+
)).flat();
|
|
96
|
+
createSourceParams.push(...yamlParams);
|
|
97
|
+
|
|
98
|
+
} catch (error) {
|
|
99
|
+
_izContext.logger.error(`Error processing schema yaml ${error}`);
|
|
100
|
+
}
|
|
101
|
+
return createSourceParams;
|
|
102
|
+
} catch (error) {
|
|
103
|
+
_izContext.logger.error('Error generating code with template endpointPerService:', error);
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
module.exports = generateCodeWithTemplate;
|
|
@@ -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
|
+
|
|
20
|
+
const path = require('path');
|
|
21
|
+
|
|
22
|
+
const { ACTIONS, HANDLER } = require('@izara_project/izara-core-library-service-schemas/src/Consts')
|
|
23
|
+
|
|
24
|
+
// const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase, firstLetterUpperCase, checkOverWriteGenerateMainFunction } = require("../#utils");
|
|
25
|
+
// const { DEFAULT_HANDLER_PER_ACTION, SOURCE_PATH } = require("../../../#const");
|
|
26
|
+
const {
|
|
27
|
+
firstLetterLowerCase: lowerCase,
|
|
28
|
+
firstLetterUpperCase: upperCase,
|
|
29
|
+
firstLetterUpperCase,
|
|
30
|
+
checkOverWriteGenerateMainFunction
|
|
31
|
+
} = require("../../../../../MainLibs/index.js").utils;
|
|
32
|
+
const { DEFAULT_HANDLER_PER_ACTION, SOURCE_PATH, SOURCE_GENERATE_IAM_ROLE } = require("../../../../../MainLibs/src/Consts.js");
|
|
33
|
+
|
|
34
|
+
const templatePath = path.join(__dirname, "./template.ejs")
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* receive objectSchema
|
|
38
|
+
* create data for hdrApi template
|
|
39
|
+
*
|
|
40
|
+
* @param {Object} objectSchema
|
|
41
|
+
* @return {{ templatePath, templateData, setting } }
|
|
42
|
+
*/
|
|
43
|
+
function data(_izContext, srcPath) {
|
|
44
|
+
let createSourceArray = [];
|
|
45
|
+
for (const action of Object.values(ACTIONS)) {
|
|
46
|
+
const defaultHandlers = DEFAULT_HANDLER_PER_ACTION[action]
|
|
47
|
+
for (const defaultHandler of defaultHandlers) {
|
|
48
|
+
if (defaultHandler === HANDLER.hdrApi) {
|
|
49
|
+
const createSourceParam = createParamForCreateSource(action, defaultHandler, srcPath)
|
|
50
|
+
createSourceParam && createSourceArray.push(createSourceParam)
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// console.log("createSourceArray::", JSON.stringify(createSourceArray, null, 2))
|
|
55
|
+
return createSourceArray;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
function createParamForCreateSource(action, handler, srcPath) {
|
|
60
|
+
return {
|
|
61
|
+
templatePath: templatePath,
|
|
62
|
+
templateData: {
|
|
63
|
+
roleName: SOURCE_GENERATE_IAM_ROLE.perActionEndpoint,
|
|
64
|
+
action: action,
|
|
65
|
+
handler
|
|
66
|
+
},
|
|
67
|
+
setting: {
|
|
68
|
+
savePath: path.join(srcPath, SOURCE_PATH.endpointPerService),
|
|
69
|
+
saveFileName: `${upperCase(action)}_${upperCase(handler)}`,
|
|
70
|
+
fileExtension: '.js',
|
|
71
|
+
isAppend: false
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
module.exports = data;
|
|
@@ -0,0 +1,73 @@
|
|
|
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-core-library-calling-flow');
|
|
22
|
+
const {
|
|
23
|
+
validatorSchemaMiddlewareByAction
|
|
24
|
+
} = require('@izara_project/izara-market-library-service-schemas/src/GenerateCodeLibs/src/GenerateCodeLibs');
|
|
25
|
+
|
|
26
|
+
const { <%- action %>Main } =require('./<%- firstLetterUpperCase(action) %>_Main.js')
|
|
27
|
+
|
|
28
|
+
//(<globalVarible>
|
|
29
|
+
//</globalVarible>)
|
|
30
|
+
|
|
31
|
+
//validate event params in middleware before into main function
|
|
32
|
+
validatorSchemaMiddlewareByAction(
|
|
33
|
+
middleware,
|
|
34
|
+
"<%- action %>"
|
|
35
|
+
//(<validateSchemaSetting>
|
|
36
|
+
//</validateSchemaSetting>)
|
|
37
|
+
)
|
|
38
|
+
// if need to validate authorizer or additional params , add code to hook tag below
|
|
39
|
+
|
|
40
|
+
//(<afterValidateWith>)
|
|
41
|
+
//(</afterValidateWith>)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
module.exports.main = middleware.wrap(async (event, context, callback) => {
|
|
45
|
+
event._izContext.logger.debug('Event:', event);
|
|
46
|
+
try {
|
|
47
|
+
// invoke LambdaFunction
|
|
48
|
+
let lambdaFunctionResponse = await <%- action %>Main(
|
|
49
|
+
event._izContext, // correlationId/logger/integrationTestDetail/uniqueRequestId/userId
|
|
50
|
+
event,
|
|
51
|
+
callingFlowSharedLib.addCallingFlowToPassOnProperties(event)
|
|
52
|
+
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
// return error to client
|
|
56
|
+
if (lambdaFunctionResponse instanceof Error) {
|
|
57
|
+
return (izara.response.failure(lambdaFunctionResponse));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// return success to client
|
|
61
|
+
return (izara.response.success(lambdaFunctionResponse));
|
|
62
|
+
|
|
63
|
+
} catch (err) {
|
|
64
|
+
event._izContext.logger.error('Error, <%- firstLetterUpperCase(action) %>_<%- firstLetterUpperCase(handler) %>: ', err);
|
|
65
|
+
return (izara.response.failure(err));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
<%_ function firstLetterUpperCase(text){
|
|
69
|
+
return text.charAt(0).toUpperCase() + text.slice(1)
|
|
70
|
+
} _%>
|
|
71
|
+
<%_ function firstLetterLowerCase(str) {
|
|
72
|
+
return str.charAt(0).toLowerCase() + str.slice(1)
|
|
73
|
+
} _%>
|