@izara_project/izara-market-library-service-schemas 1.0.13 → 1.0.14
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/GenerateCodeLibs.js +4 -4
- package/src/TemplateManager/src/GenerateCode.js +3 -3
- package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/template.ejs +2 -2
- package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/data.js +1 -1
- package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/template.ejs +3 -2
- package/src/TemplateManager/src/RelationshipPerAction/DeleteRelationship/DeleteRelationship/functionYaml/HdrInv/data.js +2 -2
- package/src/TemplateManager/src/RelationshipPerAction/DeleteRelationship/DeleteRelationship/mainFunction/template.ejs +25 -17
- package/src/TemplateManager/src/RelationshipPerAction/DeleteRelationship/DeleteRelationship/perAction/HdrApi/template.ejs +39 -21
- package/src/TemplateManager/src/RelationshipPerAction/DeleteRelationship/DeleteRelationship/perAction/HdrDsq/template.ejs +38 -21
- package/src/TemplateManager/src/RelationshipPerAction/DeleteRelationship/DeleteRelationship/perAction/HdrInv/template.ejs +40 -22
- package/src/TemplateManager/src/RelationshipPerAction/DeleteRelationship/DeleteRelationship/perAction/HdrSqs/template.ejs +38 -22
- package/src/TemplateManager/src/RelationshipPerAction/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrApi/data.js +1 -1
- package/src/TemplateManager/src/RelationshipPerAction/UpdateRelationshipSchema/updateRelationship/mainFunction/template.ejs +21 -11
- package/src/TemplateManager/src/RelationshipPerAction/UpdateRelationshipSchema/updateRelationship/perAction/HdrApi/template.ejs +37 -20
- package/src/TemplateManager/src/RelationshipPerAction/UpdateRelationshipSchema/updateRelationship/perAction/HdrDsq/template.ejs +40 -23
- package/src/TemplateManager/src/RelationshipPerAction/UpdateRelationshipSchema/updateRelationship/perAction/HdrInv/template.ejs +40 -23
- package/src/TemplateManager/src/RelationshipPerAction/UpdateRelationshipSchema/updateRelationship/perAction/HdrSqs/template.ejs +40 -23
- package/src/TemplateManager/src/externalService/FunctionNameConfig/data.js +45 -12
- package/src/TemplateManager/src/externalService/FunctionNameConfig/templateIntTesting.ejs +31 -0
- package/src/TemplateManager/src/externalService/FunctionNameConfig/templateYaml.ejs +10 -0
- package/src/TemplateManager/src/externalService/LambdaRole/data.js +10 -46
- package/src/TemplateManager/src/libs/Consts.js +3 -3
package/package.json
CHANGED
|
@@ -154,11 +154,11 @@ async function validateSchemaPerRecord(
|
|
|
154
154
|
|
|
155
155
|
// if not pass validate will sent messsage to dlq and throw NoRetryError
|
|
156
156
|
if (!validateStatus.pass) {
|
|
157
|
-
await messageToDlq(record, `Invalid: ${validateStatus.error}`, sqsSharedLib.sqsQueueUrlDLQ(lambdaFunctionName));
|
|
157
|
+
await messageToDlq(record, `Invalid: ${validateStatus.error}`, await sqsSharedLib.sqsQueueUrlDLQ(record._izContext, lambdaFunctionName));
|
|
158
158
|
record._izError = new Error(validateStatus.error)
|
|
159
159
|
}
|
|
160
160
|
} catch (error) {
|
|
161
|
-
await messageToDlq(record, error.message, sqsSharedLib.sqsQueueUrlDLQ(lambdaFunctionName));
|
|
161
|
+
await messageToDlq(record, error.message, await sqsSharedLib.sqsQueueUrlDLQ(record._izContext, lambdaFunctionName));
|
|
162
162
|
record._izError = new Error(error)
|
|
163
163
|
}
|
|
164
164
|
|
|
@@ -176,7 +176,7 @@ async function sendMsgOutComplete(_izContext, topicName, messageObj, callingFlow
|
|
|
176
176
|
let sendMessageOutComplete = {
|
|
177
177
|
Message: JSON.stringify(messageObj),
|
|
178
178
|
MessageAttributes: sns.createStringMessageAttributes(_izContext, messageAttributes),
|
|
179
|
-
TopicArn: snsSharedLib.snsTopicArn(topicName),
|
|
179
|
+
TopicArn: await snsSharedLib.snsTopicArn(_izContext, topicName),
|
|
180
180
|
};
|
|
181
181
|
|
|
182
182
|
_izContext.logger.debug(`Send message to ${topicName} :`, sendMessageOutComplete);
|
|
@@ -214,7 +214,7 @@ async function messageToDlq(record, messageFailError, queueUrl) {
|
|
|
214
214
|
|
|
215
215
|
record._izContext.logger.debug('messageToDlq, params before sending DLQ', params);
|
|
216
216
|
|
|
217
|
-
|
|
217
|
+
sqs.sendMessage(record._izContext, params);
|
|
218
218
|
record._izContext.logger.debug("----- messageToDlq sendMessage success -----");
|
|
219
219
|
};
|
|
220
220
|
|
|
@@ -178,7 +178,7 @@ const createProcessLogicalPaginateFunctionYamlHdrDsq = require('./ProcessLogical
|
|
|
178
178
|
const createProcessLogicalPaginateFunctionYamlHdrSqs = require('./ProcessLogicalPagination/FunctionYaml/HdrSqs/data')
|
|
179
179
|
|
|
180
180
|
//get functionNameConfig
|
|
181
|
-
const
|
|
181
|
+
const functionNameConfigYamldata = require('./externalService/FunctionNameConfig/data')
|
|
182
182
|
|
|
183
183
|
//lib of generateCode
|
|
184
184
|
const { checkValidTableYaml } = require('./libs/GenerateCodeUtils');
|
|
@@ -479,8 +479,8 @@ async function generateCodeWithTemplate(_izContext, objSchemaPath) {
|
|
|
479
479
|
}
|
|
480
480
|
// console.log("createSourceParams templatePath in GenerateCode", createSourceParams.templatePath)
|
|
481
481
|
|
|
482
|
-
const createFunctionNameConfig =
|
|
483
|
-
createSourceParams = createSourceParams.concat(createFunctionNameConfig);
|
|
482
|
+
const createFunctionNameConfig = functionNameConfigYamldata(_izContext, createSourceParams, saveFilePath);
|
|
483
|
+
createSourceParams = createSourceParams.concat(...createFunctionNameConfig);
|
|
484
484
|
|
|
485
485
|
// delete file .yml before start to prevent confilct of data
|
|
486
486
|
for (let folderPathToEmpty of Object.keys(GENERATECODE_SOURCE_PATH)) {
|
|
@@ -68,8 +68,8 @@ module.exports.main = middleware.wrap(async (event,context, callback) => {
|
|
|
68
68
|
await validateSchemaPerRecord(
|
|
69
69
|
record,
|
|
70
70
|
"<%- functionName %><%- firstLetterUpperCase(handler) %>",
|
|
71
|
-
|
|
72
|
-
<%- action %>"
|
|
71
|
+
OBJTYPE,
|
|
72
|
+
"<%- action %>"
|
|
73
73
|
//(<validateSchemaSetting>)
|
|
74
74
|
//(</validateSchemaSetting>)
|
|
75
75
|
)
|
|
@@ -40,7 +40,7 @@ async function data(_izContext, objectSchema, srcPath) {
|
|
|
40
40
|
async function createMainFunctionUpdateEndpoint(_izContext, objectSchema, action, srcPath) {
|
|
41
41
|
let objectType = objectSchema.objectType
|
|
42
42
|
let actionHandler = action;
|
|
43
|
-
let functionName =
|
|
43
|
+
let functionName = (objectType) + upperCase(actionHandler);
|
|
44
44
|
return {
|
|
45
45
|
templatePath: templatePath,
|
|
46
46
|
templateData: {
|
|
@@ -83,6 +83,8 @@ module.exports.<%- functionName %>Main = async (
|
|
|
83
83
|
_izContext.logger.debug("<%- functionName %> requestParams", requestParams)
|
|
84
84
|
_izContext.logger.debug("<%- functionName %> callingFlowConfig", callingFlowConfig)
|
|
85
85
|
|
|
86
|
+
let errorFounds = [];
|
|
87
|
+
|
|
86
88
|
_izContext.correlationIds.set(coreConsts.BASE_USER_ID, "BasDev");
|
|
87
89
|
const userId = _izContext.correlationIds.get(coreConsts.BASE_USER_ID)
|
|
88
90
|
if (!userId) {
|
|
@@ -115,7 +117,6 @@ module.exports.<%- functionName %>Main = async (
|
|
|
115
117
|
|
|
116
118
|
let originTimestamp = Date.now();
|
|
117
119
|
|
|
118
|
-
let errorFounds = [];
|
|
119
120
|
|
|
120
121
|
let messageAttributes
|
|
121
122
|
|
|
@@ -136,7 +137,7 @@ module.exports.<%- functionName %>Main = async (
|
|
|
136
137
|
|
|
137
138
|
updateNodeCompleteMessage = callingFlowSharedLib.addPassBackPropertiesToSnsResponseMessageObject(callingFlowConfig, updateNodeCompleteMessage);
|
|
138
139
|
messageAttributes = callingFlowSharedLib.addCallingFlowToSnsResponseMessageAttributes(callingFlowConfig, {})
|
|
139
|
-
|
|
140
|
+
|
|
140
141
|
let messageParams = {
|
|
141
142
|
Message: JSON.stringify(updateNodeCompleteMessage),
|
|
142
143
|
MessageAttributes: sns.createStringMessageAttributes(_izContext, messageAttributes),
|
|
@@ -22,7 +22,7 @@ const fs = require('fs');
|
|
|
22
22
|
const { ACTIONS, HANDLER, STORAGE_TYPES } = require('@izara_project/izara-core-library-service-schemas/src/Consts')
|
|
23
23
|
|
|
24
24
|
const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase } = require("../../../../../../../MainLibs/src/Utils")
|
|
25
|
-
const { createIamRole, resourceNames, RESOURCE_CLASSES, SOURCE_PATH, SAVE_FILE_NAME, FUNCTION_NAME, SNS_RESOURCE, defaultIamRolePerAction, awaitingMultipleStepsRole, SHORT_FUNCTION_NAME } = require("../../../../../libs/Consts");
|
|
25
|
+
const { createIamRole, resourceNames, RESOURCE_CLASSES, SOURCE_PATH, SAVE_FILE_NAME, FUNCTION_NAME, SNS_RESOURCE, defaultIamRolePerAction, awaitingMultipleStepsRole, SHORT_FUNCTION_NAME, shortNameHandler } = require("../../../../../libs/Consts");
|
|
26
26
|
|
|
27
27
|
const templatePath = path.join(__dirname, './template.ejs')
|
|
28
28
|
|
|
@@ -68,7 +68,7 @@ function createParamForCreateSource(srcPath) {
|
|
|
68
68
|
handlerType,
|
|
69
69
|
additionalResourcePermission,
|
|
70
70
|
resourceLocation: SOURCE_PATH.resourceLocationRelationshipPerAction,
|
|
71
|
-
functionNameConfig: upperCase(SHORT_FUNCTION_NAME.deleteRel) + upperCase(handlerType)
|
|
71
|
+
functionNameConfig: upperCase(SHORT_FUNCTION_NAME.deleteRel) + upperCase(shortNameHandler(handlerType))
|
|
72
72
|
},
|
|
73
73
|
setting: {
|
|
74
74
|
savePath: path.join(srcPath, SOURCE_PATH.appYaml),
|
|
@@ -60,7 +60,7 @@ const {
|
|
|
60
60
|
*
|
|
61
61
|
* @returns {object} description of return value
|
|
62
62
|
*/
|
|
63
|
-
module.exports
|
|
63
|
+
module.exports.deleteRelationship = async (
|
|
64
64
|
_izContext,
|
|
65
65
|
requestParams,
|
|
66
66
|
callingFlowConfig = {},
|
|
@@ -70,15 +70,17 @@ module.exports.<%- functionName %> = async (
|
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
try {
|
|
73
|
-
_izContext.logger.debug('
|
|
74
|
-
_izContext.logger.debug('
|
|
75
|
-
_izContext.logger.debug('
|
|
73
|
+
_izContext.logger.debug('deleteRelationship _izContext: ', _izContext);
|
|
74
|
+
_izContext.logger.debug('deleteRelationship requestParams: ', requestParams);
|
|
75
|
+
_izContext.logger.debug('deleteRelationship callingFlowConfig: ', callingFlowConfig);
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
const {
|
|
79
|
-
|
|
79
|
+
firstObject,
|
|
80
|
+
secondObject,
|
|
80
81
|
relType,
|
|
81
|
-
relationshipProperties
|
|
82
|
+
relationshipProperties,
|
|
83
|
+
relationshipDirection
|
|
82
84
|
//(<requestparamDeleteRel>)
|
|
83
85
|
//(</requestparamDeleteRel>)
|
|
84
86
|
} = requestParams;
|
|
@@ -114,8 +116,8 @@ module.exports.<%- functionName %> = async (
|
|
|
114
116
|
}
|
|
115
117
|
}
|
|
116
118
|
|
|
117
|
-
await validateIdentifiersExists(_izContext,
|
|
118
|
-
await validateIdentifiersExists(_izContext,
|
|
119
|
+
await validateIdentifiersExists(_izContext, firstObject.objType, firstObject.identifiers);
|
|
120
|
+
await validateIdentifiersExists(_izContext, secondObject.objType, secondObject.identifiers);
|
|
119
121
|
// finished validate object and identifiers
|
|
120
122
|
|
|
121
123
|
//(<afterValidateDeleteRel>)
|
|
@@ -136,8 +138,8 @@ module.exports.<%- functionName %> = async (
|
|
|
136
138
|
const { serviceTag: fromServiceTag, objectType: fromObjectType } = from.objType
|
|
137
139
|
const { serviceTag: toServiceTag, objectType: toObjectType } = to.objType
|
|
138
140
|
|
|
139
|
-
const { serviceTag: firstServiceTag, objectType: firstObjectType } =
|
|
140
|
-
const { serviceTag: secondServiceTag, objectType: secondObjectType } =
|
|
141
|
+
const { serviceTag: firstServiceTag, objectType: firstObjectType } = firstObject.objType;
|
|
142
|
+
const { serviceTag: secondServiceTag, objectType: secondObjectType } = secondObject.objType;
|
|
141
143
|
|
|
142
144
|
// find exists link
|
|
143
145
|
if (
|
|
@@ -189,7 +191,7 @@ module.exports.<%- functionName %> = async (
|
|
|
189
191
|
}
|
|
190
192
|
|
|
191
193
|
// validate canCreate properties relationship
|
|
192
|
-
for (const [propName, propSetting] of Object.entries(relationshipSchema.
|
|
194
|
+
for (const [propName, propSetting] of Object.entries(relationshipSchema.fieldNames)) {
|
|
193
195
|
if (propSetting.requiredOnCreate === true) {
|
|
194
196
|
if (!relationshipProperties.hasOwnProperty(propName)) {
|
|
195
197
|
errorsFound.push(`Missing requiredOnCreate property:${propKey}`);
|
|
@@ -210,9 +212,11 @@ module.exports.<%- functionName %> = async (
|
|
|
210
212
|
if (errorsFound.length) {
|
|
211
213
|
|
|
212
214
|
let deleteRelCompleteMsg = {
|
|
213
|
-
|
|
215
|
+
firstObject: firstObject,
|
|
216
|
+
secondObject: secondObject,
|
|
214
217
|
relType: relType,
|
|
215
218
|
relationshipProperties: relationshipProperties,
|
|
219
|
+
relationshipDirection: relationshipDirection,
|
|
216
220
|
//(<inDeleteRelCompleteMsg>)
|
|
217
221
|
//(</inDeleteRelCompleteMsg>)
|
|
218
222
|
status: 'error',
|
|
@@ -241,7 +245,7 @@ module.exports.<%- functionName %> = async (
|
|
|
241
245
|
|
|
242
246
|
|
|
243
247
|
// before create awaitingStepId per graph storageResource
|
|
244
|
-
const linkTypeId = createLinkTypeId(_izContext,
|
|
248
|
+
const linkTypeId = createLinkTypeId(_izContext, objects[0].objType, objects[1].objType, relType, relationshipDirection);
|
|
245
249
|
|
|
246
250
|
let usedGraphServiceTag = []; // collect used graph serviceTag, use to check duplicate graph serviceTag across graph serverTag
|
|
247
251
|
let targetGraphStorageResources = []; // collect used graph storageResources, filtered duplicate graphServiceTag from graphServerTag out
|
|
@@ -277,9 +281,11 @@ module.exports.<%- functionName %> = async (
|
|
|
277
281
|
|
|
278
282
|
// prepare message body
|
|
279
283
|
let deleteRelMessageBody = {
|
|
280
|
-
|
|
284
|
+
firstObject: firstObject,
|
|
285
|
+
secondObject: secondObject,
|
|
281
286
|
relType: relType,
|
|
282
|
-
relationshipProperties
|
|
287
|
+
relationshipProperties: relationshipProperties,
|
|
288
|
+
relationshipDirection: relationshipDirection,
|
|
283
289
|
//(<inDeleteRelMessageBody>)
|
|
284
290
|
//(</inDeleteRelMessageBody>)
|
|
285
291
|
}
|
|
@@ -315,10 +321,12 @@ module.exports.<%- functionName %> = async (
|
|
|
315
321
|
}
|
|
316
322
|
|
|
317
323
|
return {
|
|
318
|
-
|
|
324
|
+
firstObject,
|
|
325
|
+
secondObject,
|
|
319
326
|
relType,
|
|
320
327
|
relationshipProperties,
|
|
321
|
-
|
|
328
|
+
relationshipDirection,
|
|
329
|
+
errorsFound
|
|
322
330
|
};
|
|
323
331
|
|
|
324
332
|
|
|
@@ -27,31 +27,44 @@ const <%- functionName %> = require('./<%- firstLetterUpperCase(functionName) %>
|
|
|
27
27
|
// validate event params in middleware before into function
|
|
28
28
|
let validatorSchema = {
|
|
29
29
|
type: "object",
|
|
30
|
-
required: ["
|
|
30
|
+
required: ["firstObject","secondObject", "relType", "relationshipProperties","relationshipDirection"],
|
|
31
31
|
properties: {
|
|
32
|
-
|
|
33
|
-
type: "
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
required: ["serviceTag", "objectType"],
|
|
43
|
-
properties: {
|
|
44
|
-
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
45
|
-
objectType: izara.validatorSchema.stringNotEmpty()
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
identifiers: {
|
|
49
|
-
type: "object",
|
|
50
|
-
minproperties: 1
|
|
32
|
+
firstObject: {
|
|
33
|
+
type: "object",
|
|
34
|
+
required: ["objType","identifiers"],
|
|
35
|
+
properties: {
|
|
36
|
+
objType: {
|
|
37
|
+
type: "object",
|
|
38
|
+
required: ["serviceTag","objectType"],
|
|
39
|
+
properties: {
|
|
40
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
41
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
51
42
|
}
|
|
43
|
+
},
|
|
44
|
+
identifiers: {
|
|
45
|
+
type: "object",
|
|
46
|
+
minProperties: 1
|
|
52
47
|
}
|
|
53
48
|
}
|
|
54
49
|
},
|
|
50
|
+
secondObject: {
|
|
51
|
+
type: "object",
|
|
52
|
+
required: ["objType","identifiers"],
|
|
53
|
+
properties: {
|
|
54
|
+
objType: {
|
|
55
|
+
type: "object",
|
|
56
|
+
required: ["serviceTag","objectType"],
|
|
57
|
+
properties: {
|
|
58
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
59
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
identifiers: {
|
|
63
|
+
type: "object",
|
|
64
|
+
minProperties: 1
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
55
68
|
relType: {
|
|
56
69
|
type: "object",
|
|
57
70
|
required: ["relationshipTag", "serviceTag"],
|
|
@@ -67,6 +80,10 @@ let validatorSchema = {
|
|
|
67
80
|
relationshipProperties: {
|
|
68
81
|
type: "object",
|
|
69
82
|
minProperties: 1
|
|
83
|
+
},
|
|
84
|
+
relationshipDirection: {
|
|
85
|
+
type: "string",
|
|
86
|
+
enum: ['from','to']
|
|
70
87
|
}
|
|
71
88
|
}
|
|
72
89
|
};
|
|
@@ -94,7 +111,8 @@ module.exports.main = middleware.wrap(async (event, context, callback) => {
|
|
|
94
111
|
objects: event.objects,
|
|
95
112
|
relType: event.relType,
|
|
96
113
|
relId: event.relId,
|
|
97
|
-
relationshipProperties: event.relationshipProperties
|
|
114
|
+
relationshipProperties: event.relationshipProperties,
|
|
115
|
+
relationshipDirection: event.relationshipDirection
|
|
98
116
|
}
|
|
99
117
|
);
|
|
100
118
|
|
|
@@ -46,33 +46,46 @@ middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema(
|
|
|
46
46
|
));
|
|
47
47
|
|
|
48
48
|
// validate event params in middlewware before into function.
|
|
49
|
-
let validatorSchema =
|
|
49
|
+
let validatorSchema = {
|
|
50
50
|
type: "object",
|
|
51
|
-
required: ["
|
|
51
|
+
required: ["firstObject","secondObject", "relType", "relationshipProperties","relationshipDirection"],
|
|
52
52
|
properties: {
|
|
53
|
-
|
|
54
|
-
type: "
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
required: ["serviceTag", "objectType"],
|
|
64
|
-
properties: {
|
|
65
|
-
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
66
|
-
objectType: izara.validatorSchema.stringNotEmpty()
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
identifiers: {
|
|
70
|
-
type: "object",
|
|
71
|
-
minproperties: 1
|
|
53
|
+
firstObject: {
|
|
54
|
+
type: "object",
|
|
55
|
+
required: ["objType","identifiers"],
|
|
56
|
+
properties: {
|
|
57
|
+
objType: {
|
|
58
|
+
type: "object",
|
|
59
|
+
required: ["serviceTag","objectType"],
|
|
60
|
+
properties: {
|
|
61
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
62
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
72
63
|
}
|
|
64
|
+
},
|
|
65
|
+
identifiers: {
|
|
66
|
+
type: "object",
|
|
67
|
+
minProperties: 1
|
|
73
68
|
}
|
|
74
69
|
}
|
|
75
70
|
},
|
|
71
|
+
secondObject: {
|
|
72
|
+
type: "object",
|
|
73
|
+
required: ["objType","identifiers"],
|
|
74
|
+
properties: {
|
|
75
|
+
objType: {
|
|
76
|
+
type: "object",
|
|
77
|
+
required: ["serviceTag","objectType"],
|
|
78
|
+
properties: {
|
|
79
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
80
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
identifiers: {
|
|
84
|
+
type: "object",
|
|
85
|
+
minProperties: 1
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
76
89
|
relType: {
|
|
77
90
|
type: "object",
|
|
78
91
|
required: ["relationshipTag", "serviceTag"],
|
|
@@ -88,6 +101,10 @@ let validatorSchema = {
|
|
|
88
101
|
relationshipProperties: {
|
|
89
102
|
type: "object",
|
|
90
103
|
minProperties: 1
|
|
104
|
+
},
|
|
105
|
+
relationshipDirection: {
|
|
106
|
+
type: "string",
|
|
107
|
+
enum: ['from','to']
|
|
91
108
|
}
|
|
92
109
|
}
|
|
93
110
|
};
|
|
@@ -29,33 +29,46 @@ const callingFlowSharedLib = require('@izara_project/izara-shared/src/CallingFlo
|
|
|
29
29
|
const <%- functionName %> = require('./<%- firstLetterUpperCase(functionName) %>_Main');
|
|
30
30
|
|
|
31
31
|
// validate event params in middlewware before into function.
|
|
32
|
-
let validatorSchema =
|
|
32
|
+
let validatorSchema = {
|
|
33
33
|
type: "object",
|
|
34
|
-
required: ["
|
|
34
|
+
required: ["firstObject","secondObject", "relType", "relationshipProperties","relationshipDirection"],
|
|
35
35
|
properties: {
|
|
36
|
-
|
|
37
|
-
type: "
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
required: ["serviceTag", "objectType"],
|
|
47
|
-
properties: {
|
|
48
|
-
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
49
|
-
objectType: izara.validatorSchema.stringNotEmpty()
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
identifiers: {
|
|
53
|
-
type: "object",
|
|
54
|
-
minproperties: 1
|
|
36
|
+
firstObject: {
|
|
37
|
+
type: "object",
|
|
38
|
+
required: ["objType","identifiers"],
|
|
39
|
+
properties: {
|
|
40
|
+
objType: {
|
|
41
|
+
type: "object",
|
|
42
|
+
required: ["serviceTag","objectType"],
|
|
43
|
+
properties: {
|
|
44
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
45
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
55
46
|
}
|
|
47
|
+
},
|
|
48
|
+
identifiers: {
|
|
49
|
+
type: "object",
|
|
50
|
+
minProperties: 1
|
|
56
51
|
}
|
|
57
52
|
}
|
|
58
53
|
},
|
|
54
|
+
secondObject: {
|
|
55
|
+
type: "object",
|
|
56
|
+
required: ["objType","identifiers"],
|
|
57
|
+
properties: {
|
|
58
|
+
objType: {
|
|
59
|
+
type: "object",
|
|
60
|
+
required: ["serviceTag","objectType"],
|
|
61
|
+
properties: {
|
|
62
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
63
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
identifiers: {
|
|
67
|
+
type: "object",
|
|
68
|
+
minProperties: 1
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
59
72
|
relType: {
|
|
60
73
|
type: "object",
|
|
61
74
|
required: ["relationshipTag", "serviceTag"],
|
|
@@ -71,6 +84,10 @@ let validatorSchema = {
|
|
|
71
84
|
relationshipProperties: {
|
|
72
85
|
type: "object",
|
|
73
86
|
minProperties: 1
|
|
87
|
+
},
|
|
88
|
+
relationshipDirection: {
|
|
89
|
+
type: "string",
|
|
90
|
+
enum: ['from','to']
|
|
74
91
|
}
|
|
75
92
|
}
|
|
76
93
|
};
|
|
@@ -84,12 +101,13 @@ module.exports.main = middleware.wrap(async (event, context, callback) => {
|
|
|
84
101
|
|
|
85
102
|
try {
|
|
86
103
|
// invoke LambdaFunction
|
|
87
|
-
return await
|
|
104
|
+
return await <%- functionName %>.<%- functionName %>(
|
|
88
105
|
event._izContext, // correlationId/logger/integrationTestDetail/uniqueRequestId
|
|
89
106
|
{
|
|
90
107
|
objects: event.objects,
|
|
91
108
|
relType: event.relType,
|
|
92
109
|
relationshipProperties: event.relationshipProperties,
|
|
110
|
+
relationshipDirection: event.relationshipDirection
|
|
93
111
|
},
|
|
94
112
|
callingFlowSharedLib.addCallingFlowToPassOnProperties(event)
|
|
95
113
|
);
|
|
@@ -30,33 +30,46 @@ const <%- functionName %> = require('./<%- firstLetterUpperCase(functionName) %>
|
|
|
30
30
|
middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema());
|
|
31
31
|
|
|
32
32
|
// validate event params in middleware before into function
|
|
33
|
-
let validatorSchema =
|
|
33
|
+
let validatorSchema = {
|
|
34
34
|
type: "object",
|
|
35
|
-
required: ["
|
|
35
|
+
required: ["firstObject","secondObject", "relType", "relationshipProperties","relationshipDirection"],
|
|
36
36
|
properties: {
|
|
37
|
-
|
|
38
|
-
type: "
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
required: ["serviceTag", "objectType"],
|
|
48
|
-
properties: {
|
|
49
|
-
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
50
|
-
objectType: izara.validatorSchema.stringNotEmpty()
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
identifiers: {
|
|
54
|
-
type: "object",
|
|
55
|
-
minproperties: 1
|
|
37
|
+
firstObject: {
|
|
38
|
+
type: "object",
|
|
39
|
+
required: ["objType","identifiers"],
|
|
40
|
+
properties: {
|
|
41
|
+
objType: {
|
|
42
|
+
type: "object",
|
|
43
|
+
required: ["serviceTag","objectType"],
|
|
44
|
+
properties: {
|
|
45
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
46
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
56
47
|
}
|
|
48
|
+
},
|
|
49
|
+
identifiers: {
|
|
50
|
+
type: "object",
|
|
51
|
+
minProperties: 1
|
|
57
52
|
}
|
|
58
53
|
}
|
|
59
54
|
},
|
|
55
|
+
secondObject: {
|
|
56
|
+
type: "object",
|
|
57
|
+
required: ["objType","identifiers"],
|
|
58
|
+
properties: {
|
|
59
|
+
objType: {
|
|
60
|
+
type: "object",
|
|
61
|
+
required: ["serviceTag","objectType"],
|
|
62
|
+
properties: {
|
|
63
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
64
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
identifiers: {
|
|
68
|
+
type: "object",
|
|
69
|
+
minProperties: 1
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
60
73
|
relType: {
|
|
61
74
|
type: "object",
|
|
62
75
|
required: ["relationshipTag", "serviceTag"],
|
|
@@ -72,11 +85,14 @@ let validatorSchema = {
|
|
|
72
85
|
relationshipProperties: {
|
|
73
86
|
type: "object",
|
|
74
87
|
minProperties: 1
|
|
88
|
+
},
|
|
89
|
+
relationshipDirection: {
|
|
90
|
+
type: "string",
|
|
91
|
+
enum: ['from','to']
|
|
75
92
|
}
|
|
76
93
|
}
|
|
77
94
|
};
|
|
78
95
|
|
|
79
|
-
|
|
80
96
|
//(<globalVarible>
|
|
81
97
|
//</globalVarible>)
|
|
82
98
|
|
|
@@ -65,7 +65,7 @@ function createParamForCreateSource(srcPath) {
|
|
|
65
65
|
functionName,
|
|
66
66
|
handlerType,
|
|
67
67
|
additionalResourcePermission,
|
|
68
|
-
resourceLocation: SOURCE_PATH.
|
|
68
|
+
resourceLocation: SOURCE_PATH.resourceLocationRelationshipPerAction,
|
|
69
69
|
functionNameConfig: upperCase(SHORT_FUNCTION_NAME.updateRel) + upperCase(shortNameHandler(handlerType))
|
|
70
70
|
},
|
|
71
71
|
setting: {
|
|
@@ -67,7 +67,7 @@ const {
|
|
|
67
67
|
*
|
|
68
68
|
* @returns {object} description of return value
|
|
69
69
|
*/
|
|
70
|
-
module.exports
|
|
70
|
+
module.exports.updateRelationship = async (
|
|
71
71
|
_izContext,
|
|
72
72
|
requestParams,
|
|
73
73
|
callingFlowConfig = {},
|
|
@@ -83,10 +83,12 @@ module.exports.<%- functionName %> = async (
|
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
const {
|
|
86
|
-
|
|
86
|
+
firstObject,
|
|
87
|
+
secondObject,
|
|
87
88
|
relType,
|
|
88
89
|
relId,
|
|
89
|
-
relationshipProperties
|
|
90
|
+
relationshipProperties,
|
|
91
|
+
relationshipDirection
|
|
90
92
|
//(<requestparamUpdateRel>)
|
|
91
93
|
//(</requestparamUpdateRel>)
|
|
92
94
|
} = requestParams;
|
|
@@ -121,8 +123,8 @@ module.exports.<%- functionName %> = async (
|
|
|
121
123
|
}
|
|
122
124
|
}
|
|
123
125
|
|
|
124
|
-
await validateIdentifiersExists(_izContext,
|
|
125
|
-
await validateIdentifiersExists(_izContext,
|
|
126
|
+
await validateIdentifiersExists(_izContext, firstObject.objType, firstObject.identifiers);
|
|
127
|
+
await validateIdentifiersExists(_izContext, secondObject.objType, secondObject.identifiers);
|
|
126
128
|
// finished validate object and identifiers
|
|
127
129
|
|
|
128
130
|
//(<afterValidateUpdateRel>)
|
|
@@ -142,8 +144,8 @@ module.exports.<%- functionName %> = async (
|
|
|
142
144
|
const { serviceTag: fromServiceTag, objectType: fromObjectType } = from.objType
|
|
143
145
|
const { serviceTag: toServiceTag, objectType: toObjectType } = to.objType
|
|
144
146
|
|
|
145
|
-
const { serviceTag: firstServiceTag, objectType: firstObjectType } =
|
|
146
|
-
const { serviceTag: secondServiceTag, objectType: secondObjectType } =
|
|
147
|
+
const { serviceTag: firstServiceTag, objectType: firstObjectType } = firstObject.objType;
|
|
148
|
+
const { serviceTag: secondServiceTag, objectType: secondObjectType } = secondObject.objType;
|
|
147
149
|
|
|
148
150
|
// find exists link
|
|
149
151
|
if (
|
|
@@ -210,8 +212,11 @@ module.exports.<%- functionName %> = async (
|
|
|
210
212
|
if (errorsFound.length) {
|
|
211
213
|
|
|
212
214
|
let updateCompleteMsg = {
|
|
215
|
+
firstObject: firstObject,
|
|
216
|
+
secondObject: secondObject,
|
|
213
217
|
relId: relId,
|
|
214
218
|
relType: relType,
|
|
219
|
+
relationshipDirection,
|
|
215
220
|
status: 'error',
|
|
216
221
|
errorFounds: errorsFound
|
|
217
222
|
//(<inUpdateCompleteMsgUpdateRel>)
|
|
@@ -240,7 +245,7 @@ module.exports.<%- functionName %> = async (
|
|
|
240
245
|
|
|
241
246
|
|
|
242
247
|
// before create awaitingStepId per graph storageResource
|
|
243
|
-
const linkTypeId = createLinkTypeId(_izContext,
|
|
248
|
+
const linkTypeId = createLinkTypeId(_izContext, firstObject.objType, secondObject.objType, relType, relationshipDirection);
|
|
244
249
|
|
|
245
250
|
let usedGraphServiceTag = []; // collect used graph serviceName, use to check duplicate graph serviceName across graph serverTag
|
|
246
251
|
let targetGraphStorageResources = []; // collect used graph storageResources, filtered duplicate graphServiceTag from graphServerTag out
|
|
@@ -276,10 +281,12 @@ module.exports.<%- functionName %> = async (
|
|
|
276
281
|
|
|
277
282
|
// prepare message body
|
|
278
283
|
let updateRelMessageBody = {
|
|
279
|
-
|
|
284
|
+
firstObject,
|
|
285
|
+
secondObject,
|
|
280
286
|
relId,
|
|
281
287
|
relType: relType,
|
|
282
|
-
relationshipProperties
|
|
288
|
+
relationshipProperties,
|
|
289
|
+
relationshipDirection
|
|
283
290
|
//(<inUpdateRelMessageBodyUpdateRel>)
|
|
284
291
|
//(</inUpdateRelMessageBodyUpdateRel>)
|
|
285
292
|
}
|
|
@@ -318,9 +325,12 @@ module.exports.<%- functionName %> = async (
|
|
|
318
325
|
}
|
|
319
326
|
|
|
320
327
|
return {
|
|
328
|
+
firstObject,
|
|
329
|
+
secondObject,
|
|
321
330
|
relId: relId,
|
|
322
331
|
relType: relType,
|
|
323
|
-
|
|
332
|
+
relationshipDirection,
|
|
333
|
+
errorsFound
|
|
324
334
|
};
|
|
325
335
|
|
|
326
336
|
} catch (err) {
|
|
@@ -27,31 +27,44 @@ const <%- functionName %> = require('./<%- firstLetterUpperCase(functionName) %>
|
|
|
27
27
|
// validate event params in middleware before into function
|
|
28
28
|
let validatorSchema = {
|
|
29
29
|
type: "object",
|
|
30
|
-
required: ["
|
|
30
|
+
required: ["firstObject","secondObject", "relType", "relationshipProperties","relationshipDirection"],
|
|
31
31
|
properties: {
|
|
32
|
-
|
|
33
|
-
type: "
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
required: ["serviceTag", "objectType"],
|
|
43
|
-
properties: {
|
|
44
|
-
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
45
|
-
objectType: izara.validatorSchema.stringNotEmpty()
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
identifiers: {
|
|
49
|
-
type: "object",
|
|
50
|
-
minproperties: 1
|
|
32
|
+
firstObject: {
|
|
33
|
+
type: "object",
|
|
34
|
+
required: ["objType","identifiers"],
|
|
35
|
+
properties: {
|
|
36
|
+
objType: {
|
|
37
|
+
type: "object",
|
|
38
|
+
required: ["serviceTag","objectType"],
|
|
39
|
+
properties: {
|
|
40
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
41
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
51
42
|
}
|
|
43
|
+
},
|
|
44
|
+
identifiers: {
|
|
45
|
+
type: "object",
|
|
46
|
+
minProperties: 1
|
|
52
47
|
}
|
|
53
48
|
}
|
|
54
49
|
},
|
|
50
|
+
secondObject: {
|
|
51
|
+
type: "object",
|
|
52
|
+
required: ["objType","identifiers"],
|
|
53
|
+
properties: {
|
|
54
|
+
objType: {
|
|
55
|
+
type: "object",
|
|
56
|
+
required: ["serviceTag","objectType"],
|
|
57
|
+
properties: {
|
|
58
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
59
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
identifiers: {
|
|
63
|
+
type: "object",
|
|
64
|
+
minProperties: 1
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
55
68
|
relType: {
|
|
56
69
|
type: "object",
|
|
57
70
|
required: ["relationshipTag", "serviceTag"],
|
|
@@ -68,6 +81,10 @@ let validatorSchema = {
|
|
|
68
81
|
relationshipProperties: {
|
|
69
82
|
type: "object",
|
|
70
83
|
minProperties: 1
|
|
84
|
+
},
|
|
85
|
+
relationshipDirection: {
|
|
86
|
+
type: "string",
|
|
87
|
+
enum: ['from','to']
|
|
71
88
|
}
|
|
72
89
|
}
|
|
73
90
|
};
|
|
@@ -47,31 +47,44 @@ middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema(
|
|
|
47
47
|
// validate event params in middleware before into function
|
|
48
48
|
let validatorSchema = {
|
|
49
49
|
type: "object",
|
|
50
|
-
required: ["
|
|
50
|
+
required: ["firstObject","secondObject", "relType", "relationshipProperties","relationshipDirection"],
|
|
51
51
|
properties: {
|
|
52
|
-
|
|
53
|
-
type: "
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
required: ["serviceTag", "objectType"],
|
|
63
|
-
properties: {
|
|
64
|
-
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
65
|
-
objectType: izara.validatorSchema.stringNotEmpty()
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
identifiers: {
|
|
69
|
-
type: "object",
|
|
70
|
-
minProperties: 1
|
|
52
|
+
firstObject: {
|
|
53
|
+
type: "object",
|
|
54
|
+
required: ["objType","identifiers"],
|
|
55
|
+
properties: {
|
|
56
|
+
objType: {
|
|
57
|
+
type: "object",
|
|
58
|
+
required: ["serviceTag","objectType"],
|
|
59
|
+
properties: {
|
|
60
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
61
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
71
62
|
}
|
|
63
|
+
},
|
|
64
|
+
identifiers: {
|
|
65
|
+
type: "object",
|
|
66
|
+
minProperties: 1
|
|
72
67
|
}
|
|
73
68
|
}
|
|
74
69
|
},
|
|
70
|
+
secondObject: {
|
|
71
|
+
type: "object",
|
|
72
|
+
required: ["objType","identifiers"],
|
|
73
|
+
properties: {
|
|
74
|
+
objType: {
|
|
75
|
+
type: "object",
|
|
76
|
+
required: ["serviceTag","objectType"],
|
|
77
|
+
properties: {
|
|
78
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
79
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
identifiers: {
|
|
83
|
+
type: "object",
|
|
84
|
+
minProperties: 1
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
},
|
|
75
88
|
relType: {
|
|
76
89
|
type: "object",
|
|
77
90
|
required: ["relationshipTag", "serviceTag"],
|
|
@@ -81,14 +94,18 @@ let validatorSchema = {
|
|
|
81
94
|
type: 'string',
|
|
82
95
|
pattern: "^[a-zA-Z0-9_-]+$",
|
|
83
96
|
enum: [process.env.iz_serviceTag]
|
|
84
|
-
}
|
|
97
|
+
}
|
|
85
98
|
}
|
|
86
99
|
},
|
|
87
100
|
relId: izara.validatorSchema.stringNotEmpty(),
|
|
88
101
|
relationshipProperties: {
|
|
89
|
-
type:
|
|
90
|
-
minProperties: 1
|
|
102
|
+
type: "object",
|
|
103
|
+
minProperties: 1
|
|
91
104
|
},
|
|
105
|
+
relationshipDirection: {
|
|
106
|
+
type: "string",
|
|
107
|
+
enum: ['from','to']
|
|
108
|
+
}
|
|
92
109
|
}
|
|
93
110
|
};
|
|
94
111
|
|
|
@@ -29,31 +29,44 @@ const <%- functionName %> = require('./<%- firstLetterUpperCase(functionName) %>
|
|
|
29
29
|
// validate event params in middlewware before into function.
|
|
30
30
|
let validatorSchema = {
|
|
31
31
|
type: "object",
|
|
32
|
-
required: ["
|
|
32
|
+
required: ["firstObject","secondObject", "relType", "relationshipProperties","relationshipDirection"],
|
|
33
33
|
properties: {
|
|
34
|
-
|
|
35
|
-
type: "
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
required: ["serviceTag", "objectType"],
|
|
45
|
-
properties: {
|
|
46
|
-
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
47
|
-
objectType: izara.validatorSchema.stringNotEmpty()
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
identifiers: {
|
|
51
|
-
type: "object",
|
|
52
|
-
minProperties: 1
|
|
34
|
+
firstObject: {
|
|
35
|
+
type: "object",
|
|
36
|
+
required: ["objType","identifiers"],
|
|
37
|
+
properties: {
|
|
38
|
+
objType: {
|
|
39
|
+
type: "object",
|
|
40
|
+
required: ["serviceTag","objectType"],
|
|
41
|
+
properties: {
|
|
42
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
43
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
53
44
|
}
|
|
45
|
+
},
|
|
46
|
+
identifiers: {
|
|
47
|
+
type: "object",
|
|
48
|
+
minProperties: 1
|
|
54
49
|
}
|
|
55
50
|
}
|
|
56
51
|
},
|
|
52
|
+
secondObject: {
|
|
53
|
+
type: "object",
|
|
54
|
+
required: ["objType","identifiers"],
|
|
55
|
+
properties: {
|
|
56
|
+
objType: {
|
|
57
|
+
type: "object",
|
|
58
|
+
required: ["serviceTag","objectType"],
|
|
59
|
+
properties: {
|
|
60
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
61
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
identifiers: {
|
|
65
|
+
type: "object",
|
|
66
|
+
minProperties: 1
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
57
70
|
relType: {
|
|
58
71
|
type: "object",
|
|
59
72
|
required: ["relationshipTag", "serviceTag"],
|
|
@@ -63,14 +76,18 @@ let validatorSchema = {
|
|
|
63
76
|
type: 'string',
|
|
64
77
|
pattern: "^[a-zA-Z0-9_-]+$",
|
|
65
78
|
enum: [process.env.iz_serviceTag]
|
|
66
|
-
}
|
|
79
|
+
}
|
|
67
80
|
}
|
|
68
81
|
},
|
|
69
82
|
relId: izara.validatorSchema.stringNotEmpty(),
|
|
70
83
|
relationshipProperties: {
|
|
71
|
-
type:
|
|
72
|
-
minProperties: 1
|
|
84
|
+
type: "object",
|
|
85
|
+
minProperties: 1
|
|
73
86
|
},
|
|
87
|
+
relationshipDirection: {
|
|
88
|
+
type: "string",
|
|
89
|
+
enum: ['from','to']
|
|
90
|
+
}
|
|
74
91
|
}
|
|
75
92
|
};
|
|
76
93
|
|
|
@@ -32,31 +32,44 @@ middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema());
|
|
|
32
32
|
// validate event params in middleware before into function
|
|
33
33
|
let validatorSchema = {
|
|
34
34
|
type: "object",
|
|
35
|
-
required: ["
|
|
35
|
+
required: ["firstObject","secondObject", "relType", "relationshipProperties","relationshipDirection"],
|
|
36
36
|
properties: {
|
|
37
|
-
|
|
38
|
-
type: "
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
required: ["serviceTag", "objectType"],
|
|
48
|
-
properties: {
|
|
49
|
-
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
50
|
-
objectType: izara.validatorSchema.stringNotEmpty()
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
identifiers: {
|
|
54
|
-
type: "object",
|
|
55
|
-
minProperties: 1
|
|
37
|
+
firstObject: {
|
|
38
|
+
type: "object",
|
|
39
|
+
required: ["objType","identifiers"],
|
|
40
|
+
properties: {
|
|
41
|
+
objType: {
|
|
42
|
+
type: "object",
|
|
43
|
+
required: ["serviceTag","objectType"],
|
|
44
|
+
properties: {
|
|
45
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
46
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
56
47
|
}
|
|
48
|
+
},
|
|
49
|
+
identifiers: {
|
|
50
|
+
type: "object",
|
|
51
|
+
minProperties: 1
|
|
57
52
|
}
|
|
58
53
|
}
|
|
59
54
|
},
|
|
55
|
+
secondObject: {
|
|
56
|
+
type: "object",
|
|
57
|
+
required: ["objType","identifiers"],
|
|
58
|
+
properties: {
|
|
59
|
+
objType: {
|
|
60
|
+
type: "object",
|
|
61
|
+
required: ["serviceTag","objectType"],
|
|
62
|
+
properties: {
|
|
63
|
+
serviceTag: izara.validatorSchema.stringNotEmpty(),
|
|
64
|
+
objectType: izara.validatorSchema.stringNotEmpty(),
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
identifiers: {
|
|
68
|
+
type: "object",
|
|
69
|
+
minProperties: 1
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
60
73
|
relType: {
|
|
61
74
|
type: "object",
|
|
62
75
|
required: ["relationshipTag", "serviceTag"],
|
|
@@ -66,14 +79,18 @@ let validatorSchema = {
|
|
|
66
79
|
type: 'string',
|
|
67
80
|
pattern: "^[a-zA-Z0-9_-]+$",
|
|
68
81
|
enum: [process.env.iz_serviceTag]
|
|
69
|
-
}
|
|
82
|
+
}
|
|
70
83
|
}
|
|
71
84
|
},
|
|
72
85
|
relId: izara.validatorSchema.stringNotEmpty(),
|
|
73
86
|
relationshipProperties: {
|
|
74
|
-
type:
|
|
75
|
-
minProperties: 1
|
|
87
|
+
type: "object",
|
|
88
|
+
minProperties: 1
|
|
76
89
|
},
|
|
90
|
+
relationshipDirection: {
|
|
91
|
+
type: "string",
|
|
92
|
+
enum: ['from','to']
|
|
93
|
+
}
|
|
77
94
|
}
|
|
78
95
|
};
|
|
79
96
|
|
|
@@ -21,30 +21,63 @@ const fs = require('fs');
|
|
|
21
21
|
|
|
22
22
|
const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase } = require("../../../../MainLibs/src/Utils");
|
|
23
23
|
const { SOURCE_PATH } = require('../../libs/Consts');
|
|
24
|
-
const
|
|
24
|
+
const templateYamlPath = path.join(__dirname, "./templateYaml.ejs");
|
|
25
|
+
const templatePathIntTestPath = path.join(__dirname, "./templateIntTesting.ejs");
|
|
25
26
|
|
|
26
27
|
|
|
27
28
|
function data(_izContext, createSourceParams, srcPath) {
|
|
28
29
|
// console.log("createSourceParams in Data", createSourceParams);
|
|
29
30
|
const functionNameConfigs = new Set();
|
|
31
|
+
let createFunctionNameConfig = []
|
|
30
32
|
for (let { templatePath, templateData, setting } of createSourceParams) {
|
|
31
33
|
if (templateData.functionNameConfig !== undefined) {
|
|
32
34
|
functionNameConfigs.add(templateData.functionNameConfig)
|
|
33
35
|
}
|
|
34
36
|
}
|
|
37
|
+
let createFunctionNameConfigYaml = createFunctionNameConfigFileYaml(functionNameConfigs, srcPath);
|
|
38
|
+
let createFunctionNameConfigJs = createFunctionNameConfigFileJs(functionNameConfigs, srcPath);
|
|
39
|
+
createFunctionNameConfig.push(...createFunctionNameConfigYaml, ...createFunctionNameConfigJs)
|
|
40
|
+
return createFunctionNameConfig
|
|
35
41
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function createFunctionNameConfigFileYaml(functionNameConfigs, srcPath) {
|
|
45
|
+
let createFunctionNameConfigYaml = []
|
|
46
|
+
createFunctionNameConfigYaml.push(
|
|
47
|
+
{
|
|
48
|
+
templatePath: templateYamlPath,
|
|
49
|
+
templateData: {
|
|
50
|
+
functionNameConfigs: functionNameConfigs
|
|
51
|
+
},
|
|
52
|
+
setting: {
|
|
53
|
+
savePath: path.join(srcPath, SOURCE_PATH.appYaml),
|
|
54
|
+
saveFileName: "FunctionNameConfig",
|
|
55
|
+
fileExtension: ".yml",
|
|
56
|
+
isAppend: true
|
|
57
|
+
}
|
|
46
58
|
}
|
|
47
|
-
|
|
59
|
+
)
|
|
60
|
+
return createFunctionNameConfigYaml
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function createFunctionNameConfigFileJs(functionNameConfigs, srcPath) {
|
|
64
|
+
let createFunctionNameConfigJs = []
|
|
65
|
+
createFunctionNameConfigJs.push(
|
|
66
|
+
{
|
|
67
|
+
templatePath: templatePathIntTestPath,
|
|
68
|
+
templateData: {
|
|
69
|
+
functionNameConfigs: functionNameConfigs
|
|
70
|
+
},
|
|
71
|
+
setting: {
|
|
72
|
+
savePath: path.join(srcPath, SOURCE_PATH.externalService),
|
|
73
|
+
saveFileName: "FunctionNameConfig",
|
|
74
|
+
fileExtension: ".js",
|
|
75
|
+
isAppend: true
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
return createFunctionNameConfigJs
|
|
48
81
|
}
|
|
49
82
|
|
|
50
83
|
module.exports = data;
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
module.exports.generatedIntTestFunctionNameConfig = () => {
|
|
21
|
+
let functionNameConfigIntTest = [
|
|
22
|
+
<% functionNameConfigs.forEach(functionNameConfig => { _%>
|
|
23
|
+
"<%- firstLetterUpperCase(functionNameConfig) %>",
|
|
24
|
+
<% }) _%>
|
|
25
|
+
]
|
|
26
|
+
return functionNameConfigIntTest
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
<%_function firstLetterUpperCase(text) {
|
|
30
|
+
return text.charAt(0).toUpperCase() + text.slice(1)
|
|
31
|
+
} %>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# for createIamRole
|
|
2
|
+
|
|
3
|
+
<% functionNameConfigs.forEach(functionNameConfig => { _%>
|
|
4
|
+
- ${self:custom.iz_prefixIamRole}<%- firstLetterUpperCase(functionNameConfig) %>${self:custom.iz_suffixIamRole}
|
|
5
|
+
<% }) _%>
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
<%_function firstLetterUpperCase(text) {
|
|
9
|
+
return text.charAt(0).toUpperCase() + text.slice(1)
|
|
10
|
+
} %>
|
|
@@ -20,7 +20,9 @@ const path = require('path');
|
|
|
20
20
|
const fs = require('fs');
|
|
21
21
|
|
|
22
22
|
const { ACTIONS, HANDLER, STORAGE_TYPES } = require('@izara_project/izara-core-library-service-schemas/src/Consts')
|
|
23
|
-
const { getGraphServiceNameFromGraphServerTagWithCache
|
|
23
|
+
const { getGraphServiceNameFromGraphServerTagWithCache,
|
|
24
|
+
getGraphServiceTagWithCache
|
|
25
|
+
} = require('@izara_project/izara-core-library-service-schemas/src/ServiceConfig')
|
|
24
26
|
|
|
25
27
|
const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase, renameObjectType } = require("../../../../MainLibs/src/Utils")
|
|
26
28
|
const {
|
|
@@ -87,15 +89,12 @@ const createExternalLambdaRole = async (_izContext, allObjSchemas, allRelSchemas
|
|
|
87
89
|
|
|
88
90
|
// ... another external lambda role data
|
|
89
91
|
|
|
90
|
-
//
|
|
91
|
-
const externalLambdaIamRoleTranslateId = await externalLambdaIamRoleDataTranslateId(_izContext, allRelSchemas, allObjSchemas)
|
|
92
|
-
externalLambdaIamRoleTranslateId && externalLambdaIamRoleArray.push(externalLambdaIamRoleTranslateId)
|
|
93
|
-
|
|
92
|
+
// ProcessLogical
|
|
94
93
|
const externalLambdaIamRoleProcessLogical = await externalLambdaIamRoleDataProcessLogical(_izContext, allObjSchemas);
|
|
95
94
|
externalLambdaIamRoleProcessLogical && externalLambdaIamRoleArray.push(externalLambdaIamRoleProcessLogical)
|
|
96
95
|
}
|
|
97
96
|
|
|
98
|
-
|
|
97
|
+
console.log("externalLambdaIamRoleArray", externalLambdaIamRoleArray)
|
|
99
98
|
// console.log("createSourceArrayIamRole", JSON.stringify(externalLambdaIamRoleArray))
|
|
100
99
|
// return externalLambdaIamRoleArray
|
|
101
100
|
|
|
@@ -117,7 +116,7 @@ async function externalLambdaIamRoleDataPerAction(_izContext, objectSchema, acti
|
|
|
117
116
|
const graphServiceNames = [];
|
|
118
117
|
for (const storgaeResource of Object.values(objectSchema.storageResources)) {
|
|
119
118
|
if (storgaeResource.storageType === STORAGE_TYPES.graph) {
|
|
120
|
-
let getGraphServiceName = await
|
|
119
|
+
let getGraphServiceName = await getGraphServiceTagWithCache(_izContext, storgaeResource.graphServerTag)
|
|
121
120
|
if (!graphServiceNames.includes(getGraphServiceName)) {
|
|
122
121
|
getGraphServiceName && graphServiceNames.push(getGraphServiceName)
|
|
123
122
|
}
|
|
@@ -241,52 +240,17 @@ async function externalLambdaIamRoleDataCreateRelationshipSchema(_izContext, all
|
|
|
241
240
|
|
|
242
241
|
// delete Relationship
|
|
243
242
|
async function externalLambdaIamRoleDataDeleteRelationshipSchema(_izContext, allRelSchemas, handler) {
|
|
244
|
-
|
|
245
|
-
// const additionalResourcePermission = [];
|
|
246
|
-
// const graphServiceNamesFromAllRelSchemas = await getGraphServiceNameFromAllRelSchema(_izContext, allRelSchemas);
|
|
247
|
-
|
|
248
|
-
// additionalResourcePermission.push(
|
|
249
|
-
// createIamRole(
|
|
250
|
-
// {
|
|
251
|
-
// [RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
|
|
252
|
-
// },
|
|
253
|
-
// graphServiceNamesFromAllRelSchemas.map(graphServiceName =>
|
|
254
|
-
// externalResourceSns("InDeleteRelationship", graphServiceName)
|
|
255
|
-
// )
|
|
256
|
-
// )
|
|
257
|
-
// )
|
|
258
|
-
// return {
|
|
259
|
-
// functionName,
|
|
260
|
-
// additionalResourcePermission
|
|
261
|
-
// }
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// Process TranslateIds Request
|
|
265
|
-
async function externalLambdaIamRoleDataTranslateId(_izContext, allRelSchemas, allObjSchemas) {
|
|
266
|
-
let functionName = upperCase(SHORT_FUNCTION_NAME.translateIdsProcess) + upperCase(shortNameHandler(HANDLER.hdrDsq));
|
|
243
|
+
const functionName = upperCase(SHORT_FUNCTION_NAME.deleteRel) + upperCase(shortNameHandler(handler))
|
|
267
244
|
const additionalResourcePermission = [];
|
|
268
245
|
const graphServiceNamesFromAllRelSchemas = await getGraphServiceNameFromAllRelSchema(_izContext, allRelSchemas);
|
|
269
|
-
let complexFilterServiceTags = getComplexFilterServiceTag(allObjSchemas);
|
|
270
246
|
|
|
271
247
|
additionalResourcePermission.push(
|
|
272
248
|
createIamRole(
|
|
273
249
|
{
|
|
274
|
-
[RESOURCE_CLASSES.
|
|
275
|
-
},
|
|
276
|
-
graphServiceNamesFromAllRelSchemas.map(graphServiceName => (
|
|
277
|
-
externalResourceName(RESOURCE_CLASSES.lambda, "GetNodeAndRelationshipsV2HdrInv", graphServiceName)
|
|
278
|
-
)
|
|
279
|
-
)
|
|
280
|
-
)
|
|
281
|
-
)
|
|
282
|
-
additionalResourcePermission.push(
|
|
283
|
-
createIamRole(
|
|
284
|
-
{
|
|
285
|
-
[RESOURCE_CLASSES.dynamoDbTable]: [DYNAMO_RESOURCE.query]
|
|
250
|
+
[RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
|
|
286
251
|
},
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
)
|
|
252
|
+
graphServiceNamesFromAllRelSchemas.map(graphServiceName =>
|
|
253
|
+
externalResourceSns("InDeleteRelationship", graphServiceName)
|
|
290
254
|
)
|
|
291
255
|
)
|
|
292
256
|
)
|
|
@@ -23,7 +23,7 @@ const {
|
|
|
23
23
|
STORAGE_TYPES
|
|
24
24
|
} = require('@izara_project/izara-core-library-service-schemas/src/Consts');
|
|
25
25
|
|
|
26
|
-
const { getGraphServiceNameFromGraphServerTagWithCache } = require('@izara_project/izara-core-library-service-schemas/src/ServiceConfig');
|
|
26
|
+
const { getGraphServiceNameFromGraphServerTagWithCache, getGraphServiceTagWithCache } = require('@izara_project/izara-core-library-service-schemas/src/ServiceConfig');
|
|
27
27
|
|
|
28
28
|
const DEFAULT_HANDLER_PER_ACTION = {
|
|
29
29
|
[ACTIONS.create]: [HANDLER.hdrApi, HANDLER.hdrSqs],
|
|
@@ -219,7 +219,7 @@ const getGraphServiceNameFromAllRelSchema = async (_izContext, allRelSchemas) =>
|
|
|
219
219
|
|
|
220
220
|
await Promise.all(Object.values(relSchemaData.storageResources).map(async storageResource => {
|
|
221
221
|
if (storageResource.storageType === STORAGE_TYPES.graph) {
|
|
222
|
-
const getGraphServiceName = await
|
|
222
|
+
const getGraphServiceName = await getGraphServiceTagWithCache(_izContext, storageResource.graphServerTag);
|
|
223
223
|
graphServiceNameSet.add(getGraphServiceName)
|
|
224
224
|
}
|
|
225
225
|
}))
|
|
@@ -272,7 +272,7 @@ async function getGraphServiceNameFromObjectSchema(_izContext, allObjSchemas) {
|
|
|
272
272
|
for (const objectSchema of allObjSchemas) {
|
|
273
273
|
for (let storageResource of Object.values(objectSchema.storageResources)) {
|
|
274
274
|
if (storageResource.storageType === STORAGE_TYPES.graph) {
|
|
275
|
-
let getGraphServiceName = await
|
|
275
|
+
let getGraphServiceName = await getGraphServiceTagWithCache(_izContext, storageResource.graphServerTag)
|
|
276
276
|
graphServiceName.add(getGraphServiceName)
|
|
277
277
|
}
|
|
278
278
|
}
|