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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/package.json +2 -2
  2. package/src/GenerateCodeLibs/index.js +2 -1
  3. package/src/GenerateCodeLibs/src/Consts.js +12 -3
  4. package/src/GenerateCodeLibs/src/GenerateCodeLibs.js +232 -7
  5. package/src/GenerateCodeLibs/src/TranslateIdsLibs.js +89 -0
  6. package/src/MainLibs/src/Utils.js +10 -0
  7. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrApi/data.js +10 -2
  8. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrDsq/data.js +5 -4
  9. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrInv/data.js +11 -1
  10. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrSqs/data.js +4 -3
  11. package/src/TemplateManager/src/CreateRelationship/createRelationship/mainFunction/template.ejs +24 -22
  12. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrDsq/data.js +0 -1
  13. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrSqs/data.js +1 -1
  14. package/src/TemplateManager/src/CreateRelationship/createRelationship/sns-in-sqs/data.js +0 -2
  15. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/functionYaml/data.js +2 -2
  16. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/handler/HdrSqs/data.js +0 -1
  17. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/sns-out/data.js +1 -1
  18. package/src/TemplateManager/src/FindData/FindDataYaml/data.js +188 -0
  19. package/src/TemplateManager/src/FindData/FindDataYaml/template.ejs +27 -0
  20. package/src/TemplateManager/src/FindData/GetByStorage/getByDynamo.ejs +53 -0
  21. package/src/TemplateManager/src/FindData/GetByStorage/getByGraph.ejs +99 -0
  22. package/src/TemplateManager/src/FindData/Handler/data.js +48 -0
  23. package/src/TemplateManager/src/FindData/Handler/template.ejs +140 -0
  24. package/src/TemplateManager/src/FindData/mainFunction/data.js +279 -0
  25. package/src/TemplateManager/src/FindData/mainFunction/template.ejs +158 -0
  26. package/src/TemplateManager/src/GenerateCode(Old).js +1 -1
  27. package/src/TemplateManager/src/GenerateCode.js +163 -42
  28. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/functionYaml/data.js +98 -0
  29. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/functionYaml/template.ejs +33 -0
  30. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/handler/data.js +59 -0
  31. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/handler/template.ejs +129 -0
  32. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/createObjectComplete_main.js +172 -0
  33. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/data.js +53 -0
  34. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/mainFunction/template.ejs +172 -0
  35. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-in-sqs/data.js +58 -0
  36. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-in-sqs/template.ejs +47 -0
  37. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-out/data.js +62 -0
  38. package/src/TemplateManager/src/OutPerActionComplete/OutCreateComplete/sns-out/template.ejs +10 -0
  39. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/functionYaml/data.js +98 -0
  40. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/functionYaml/template.ejs +33 -0
  41. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/handler/data.js +59 -0
  42. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/handler/template.ejs +129 -0
  43. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/mainFunction/data.js +53 -0
  44. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/mainFunction/template.ejs +126 -0
  45. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/sns-out/data.js +62 -0
  46. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/sqs-in-sns/data.js +58 -0
  47. package/src/TemplateManager/src/OutPerActionComplete/OutUpdateComplete/sqs-in-sns/template.ejs +47 -0
  48. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrApi/data.js +22 -3
  49. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrApi/template.ejs +2 -2
  50. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrDsq/data.js +24 -1
  51. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrInv/data.js +53 -2
  52. package/src/TemplateManager/src/PerActionEndpoint/FunctionYaml/HdrSqs/data.js +25 -3
  53. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/data.js +5 -8
  54. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/getTemplate.ejs +76 -0
  55. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/updateTemplate.ejs +67 -0
  56. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/data.js +47 -23
  57. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/getTemplate.ejs +105 -0
  58. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/updateTemplate.ejs +109 -0
  59. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/createTemplate.ejs +75 -0
  60. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/data.js +69 -21
  61. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/getTemplate.ejs +82 -0
  62. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/updateTemplate.ejs +75 -0
  63. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/data.js +46 -17
  64. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/getTemplate.ejs +124 -0
  65. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/updateTemplate.ejs +133 -0
  66. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/CreateObject_main.js +760 -0
  67. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/data.js +67 -0
  68. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/request.json +0 -0
  69. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Create/template.ejs +575 -0
  70. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Get/data.js +0 -6
  71. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Get/template.ejs +17 -12
  72. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/data.js +61 -0
  73. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/request.json +0 -0
  74. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Update/template.ejs +267 -0
  75. package/src/TemplateManager/src/ProcessLogical/Handler/data.js +49 -0
  76. package/src/TemplateManager/src/ProcessLogical/Handler/template.ejs +129 -0
  77. package/src/TemplateManager/src/ProcessLogical/ProcessLogicalYaml/data.js +175 -0
  78. package/src/TemplateManager/src/ProcessLogical/ProcessLogicalYaml/template.ejs +25 -0
  79. package/src/TemplateManager/src/ProcessLogical/mainFunction/data.js +47 -0
  80. package/src/TemplateManager/src/ProcessLogical/mainFunction/template.ejs +429 -0
  81. package/src/TemplateManager/src/ProcessLogicalPagination/DsqYaml/data.js +50 -0
  82. package/src/TemplateManager/src/ProcessLogicalPagination/DsqYaml/template.ejs +32 -0
  83. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrDsq/data.js +167 -0
  84. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrDsq/template.ejs +25 -0
  85. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrSqs/data.js +169 -0
  86. package/src/TemplateManager/src/ProcessLogicalPagination/FunctionYaml/HdrSqs/template.ejs +25 -0
  87. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrDsq/data.js +48 -0
  88. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrDsq/template.ejs +163 -0
  89. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrSqs/data.js +48 -0
  90. package/src/TemplateManager/src/ProcessLogicalPagination/Handler/HdrSqs/template.ejs +146 -0
  91. package/src/TemplateManager/src/ProcessLogicalPagination/mainFunction/data.js +48 -0
  92. package/src/TemplateManager/src/ProcessLogicalPagination/mainFunction/template.ejs +212 -0
  93. package/src/TemplateManager/src/ResourceYaml/CreateSourceData.js +2 -2
  94. package/src/TemplateManager/src/ResourceYaml/dynamodb/processLogicalAndFindData.js +2 -2
  95. package/src/TemplateManager/src/ResourceYaml/sns-in-sqs/defaultSnsInSqsForFindDataAndProcessLogical.js +27 -12
  96. package/src/TemplateManager/src/ResourceYaml/sns-out/data.js +1 -1
  97. package/src/TemplateManager/src/ResourceYaml/sns-out/defaultSnsOutForFindDataAndProcessLogical.js +75 -0
  98. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/functionYaml/data.js +95 -0
  99. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/functionYaml/template.ejs +30 -0
  100. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/handler/dataHdrDsq.js +52 -0
  101. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/handler/template.ejs +194 -0
  102. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/mainFunction/data.js +48 -0
  103. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/mainFunction/template.ejs +330 -0
  104. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/sns-out/data.js +47 -0
  105. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/sqs-sns/data.js +58 -0
  106. package/src/TemplateManager/src/TranslateIdReq/ProcessingTranslateIds/sqs-sns/template.ejs +43 -0
  107. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/functionYaml/HdrDsq/data.js +116 -0
  108. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/functionYaml/HdrSqs/data.js +116 -0
  109. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrDsq/data.js +60 -0
  110. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrDsq/template.ejs +157 -0
  111. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrSqs/data.js +59 -0
  112. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/handler/HdrSqs/template.ejs +175 -0
  113. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/mainFunction/data.js +61 -0
  114. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/mainFunction/template.ejs +155 -0
  115. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/resourceYaml/dynamoDb/data.js +120 -0
  116. package/src/TemplateManager/src/TranslateIdReq/TranslateIds/resourceYaml/sns-sqs/data.js +75 -0
  117. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/functionYaml/data.js +2 -2
  118. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/sns-out/data.js +1 -1
  119. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrApi/data.js +10 -3
  120. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrDsq/data.js +6 -4
  121. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrInv/data.js +11 -1
  122. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrSqs/data.js +7 -5
  123. package/src/TemplateManager/src/externalService/LambdaRole/data.js +150 -32
  124. package/src/TemplateManager/src/externalService/LambdaRole/template.ejs +16 -15
  125. package/src/TemplateManager/src/externalService/SnsTopicSubscriotions/data.js +35 -6
  126. package/src/TemplateManager/src/externalService/SnsTopicSubscriotions/template.ejs +3 -4
  127. package/src/TemplateManager/src/libs/Consts.js +122 -11
  128. package/src/TemplateManager/src/PerActionEndpoint/Handler/testRequest.json +0 -5
@@ -23,11 +23,16 @@ const { ACTIONS, HANDLER, STORAGE_TYPES } = require('@izara_project/izara-core-l
23
23
  const { getGraphServiceNameFromGraphServerTagWithCache } = require('@izara_project/izara-core-library-service-schemas/src/ServiceConfig')
24
24
 
25
25
  const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase } = require("../../../../MainLibs/src/Utils")
26
- const { DEFAULT_HANDLER_PER_ACTION, createIamRole, resourceNames, RESOURCE_CLASSES, DEFAULT_LAMBDA_ROLE_PER_ACTION, SOURCE_PATH, externalResourceName, externalResourceSns, FUNCTION_NAME, getGraphServiceNameFromAllRelSchema, SAVE_FILE_NAME } = require("../../libs/Consts");
26
+ const {
27
+ DEFAULT_HANDLER_PER_ACTION, createIamRole, resourceNames, RESOURCE_CLASSES, DEFAULT_LAMBDA_ROLE_PER_ACTION, SOURCE_PATH, externalResourceName, externalResourceSns, FUNCTION_NAME, getGraphServiceNameFromAllRelSchema, SAVE_FILE_NAME, getComplexFilterServiceTag,
28
+ LAMBDA_RESOURCE, SNS_RESOURCE, DYNAMO_RESOURCE, getGraphServiceNameFromObjectSchema } = require("../../libs/Consts");
29
+ // const templatePath = path.join(__dirname, "./template.ejs");
27
30
  const templatePath = path.join(__dirname, "./template.ejs");
28
-
31
+ const { getAllLocalRelationshipSchemas } = require('@izara_project/izara-core-library-service-schemas/src/GetObjectSchema')
29
32
 
30
33
  const createExternalLambdaRole = async (_izContext, allObjSchemas, allRelSchemas, srcPath) => {
34
+ const allRelationshipSchemas = getAllLocalRelationshipSchemas(_izContext, srcPath)
35
+ // console.log("allRelationshipSchemas", allRelationshipSchemas);
31
36
  const externalLambdaIamRoleArray = [];
32
37
  for (const objectSchema of allObjSchemas) {
33
38
 
@@ -49,31 +54,43 @@ const createExternalLambdaRole = async (_izContext, allObjSchemas, allRelSchemas
49
54
 
50
55
  }
51
56
 
57
+ // validate relationship in ObjectRelationship
58
+ if (allRelationshipSchemas.length) {
59
+
60
+ // updateRelationship external lambda role
61
+ for (const handler of Object.values(HANDLER)) {
62
+ if (handler !== HANDLER.hdrApi) {
63
+ const externalLambdaIamRoleUpdateRelationship = await externalLambdaIamRoleDataUpdateRelationshipSchema(_izContext, allRelSchemas, handler);
64
+ externalLambdaIamRoleUpdateRelationship && externalLambdaIamRoleArray.push(externalLambdaIamRoleUpdateRelationship)
52
65
 
53
- // updateRelationship external lambda role
54
- for (const handler of Object.values(HANDLER)) {
55
- if (handler !== HANDLER.hdrApi) {
56
- const externalLambdaIamRoleUpdateRelationship = await externalLambdaIamRoleDataUpdateRelationshipSchema(_izContext, allRelSchemas, handler);
57
- externalLambdaIamRoleUpdateRelationship && externalLambdaIamRoleArray.push(externalLambdaIamRoleUpdateRelationship)
66
+ }
58
67
  }
59
- }
60
68
 
61
- // CreateRelationship external lambda role
62
- for (const handler of Object.values(HANDLER)) {
63
- if (handler !== HANDLER.hdrApi) {
64
- const externalLambdaIamRoleCreateRelationship = await externalLambdaIamRoleDataCreateRelationshipSchema(_izContext, allRelSchemas, handler);
65
- externalLambdaIamRoleCreateRelationship && externalLambdaIamRoleArray.push(externalLambdaIamRoleCreateRelationship)
69
+ // CreateRelationship external lambda role
70
+ for (const handler of Object.values(HANDLER)) {
71
+ if (handler !== HANDLER.hdrApi) {
72
+ const externalLambdaIamRoleCreateRelationship = await externalLambdaIamRoleDataCreateRelationshipSchema(_izContext, allRelSchemas, handler);
73
+ externalLambdaIamRoleCreateRelationship && externalLambdaIamRoleArray.push(externalLambdaIamRoleCreateRelationship)
74
+ }
66
75
  }
67
- }
68
76
 
69
- // findData external lambda role
77
+ // findData external lambda role
78
+ const externalLambdaIamRoleFindData = await externalLambdaIamRoleDataFindData(_izContext, allObjSchemas);
79
+ externalLambdaIamRoleFindData && externalLambdaIamRoleArray.push(externalLambdaIamRoleFindData)
80
+ // processLogical
81
+
70
82
 
71
- // processLogical
83
+ // updateRelationshipComplete external lambda role
72
84
 
85
+ // ... another external lambda role data
73
86
 
74
- // updateRelationshipComplete external lambda role
87
+ // processTranslateId Request
88
+ const externalLambdaIamRoleTranslateId = await externalLambdaIamRoleDataTranslateId(_izContext, allRelSchemas, allObjSchemas)
89
+ externalLambdaIamRoleTranslateId && externalLambdaIamRoleArray.push(externalLambdaIamRoleTranslateId)
75
90
 
76
- // ... another external lambda role data
91
+ const externalLambdaIamRoleProcessLogical = await externalLambdaIamRoleDataProcessLogical(_izContext, allObjSchemas);
92
+ externalLambdaIamRoleProcessLogical && externalLambdaIamRoleArray.push(externalLambdaIamRoleProcessLogical)
93
+ }
77
94
 
78
95
 
79
96
  console.log("createSourceArrayIamRole", JSON.stringify(externalLambdaIamRoleArray))
@@ -107,29 +124,42 @@ async function externalLambdaIamRoleDataPerAction(_izContext, objectSchema, acti
107
124
  let functionName = upperCase(objectType) + upperCase(action) + upperCase(handler);
108
125
 
109
126
  if (action === ACTIONS.get) {
110
- // create functionName
111
- // functionNameArray.push(functionName)
112
- // create additionalResourcePermission
113
127
  additionalResourcePermission.push(
114
128
  createIamRole(
115
- { [RESOURCE_CLASSES.lambda]: ["InvokeFunction"] },
129
+ { [RESOURCE_CLASSES.lambda]: [LAMBDA_RESOURCE.invokeFunction] },
116
130
  graphServiceNames.map(graphServiceName =>
117
131
  externalResourceName(RESOURCE_CLASSES.lambda, "GetNodeV2HdrInv", graphServiceName),
118
132
  )
119
133
  )
120
134
  )
121
135
 
122
- // }else if (action === ACTIONS.create) {
123
-
124
-
125
- // } else if (action === ACTIONS.update) {
126
-
136
+ } else if (action === ACTIONS.update) {
137
+ additionalResourcePermission.push(
138
+ createIamRole(
139
+ {
140
+ [RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
141
+ },
142
+ graphServiceNames.map(graphServiceName =>
143
+ externalResourceSns("InUpdateNode", graphServiceName)
144
+ )
145
+ )
146
+ )
127
147
 
128
- // } else if (action === ACTIONS.delete) {
148
+ } else if (action === ACTIONS.create) {
149
+ additionalResourcePermission.push(
150
+ createIamRole(
151
+ {
152
+ [RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
153
+ },
154
+ graphServiceNames.map(graphServiceName =>
155
+ externalResourceSns("InCreateNodeV2", graphServiceName)
156
+ )
157
+ )
158
+ )
159
+ } else if (action === ACTIONS.delete) {
129
160
 
130
161
  } else {
131
- return
132
- // throw Error("invalid action")
162
+ throw new error("Invalid action")
133
163
  }
134
164
 
135
165
 
@@ -151,7 +181,7 @@ async function externalLambdaIamRoleDataUpdateRelationshipSchema(_izContext, all
151
181
  additionalResourcePermission.push(
152
182
  createIamRole(
153
183
  {
154
- [RESOURCE_CLASSES.sns]: ["Publish"]
184
+ [RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
155
185
  },
156
186
  graphServiceNamesFromAllRelSchemas.map(graphServiceName =>
157
187
  externalResourceSns("InUpdateRelationship", graphServiceName)
@@ -176,7 +206,7 @@ async function externalLambdaIamRoleDataCreateRelationshipSchema(_izContext, all
176
206
  additionalResourcePermission.push(
177
207
  createIamRole(
178
208
  {
179
- [RESOURCE_CLASSES.sns]: ["Publish"]
209
+ [RESOURCE_CLASSES.sns]: [SNS_RESOURCE.publish]
180
210
  },
181
211
  graphServiceNamesFromAllRelSchemas.map(graphServiceName =>
182
212
  externalResourceSns("InCreateRelationshipV2", graphServiceName)
@@ -189,6 +219,94 @@ async function externalLambdaIamRoleDataCreateRelationshipSchema(_izContext, all
189
219
  }
190
220
  }
191
221
 
222
+ // Process TranslateIds Request
223
+ async function externalLambdaIamRoleDataTranslateId(_izContext, allRelSchemas, allObjSchemas) {
224
+ let functionName = upperCase(FUNCTION_NAME.translateIdsProcess) + upperCase(HANDLER.hdrDsq);
225
+ const additionalResourcePermission = [];
226
+ const graphServiceNamesFromAllRelSchemas = await getGraphServiceNameFromAllRelSchema(_izContext, allRelSchemas);
227
+ let complexFilterServiceTags = getComplexFilterServiceTag(allObjSchemas);
228
+
229
+ additionalResourcePermission.push(
230
+ createIamRole(
231
+ {
232
+ [RESOURCE_CLASSES.lambda]: [LAMBDA_RESOURCE.invokeFunction]
233
+ },
234
+ graphServiceNamesFromAllRelSchemas.map(graphServiceName => (
235
+ externalResourceName(RESOURCE_CLASSES.lambda, "GetNodeAndRelationshipsV2HdrInv", graphServiceName)
236
+ )
237
+ )
238
+ )
239
+ )
240
+ additionalResourcePermission.push(
241
+ createIamRole(
242
+ {
243
+ [RESOURCE_CLASSES.dynamoDbTable]: [DYNAMO_RESOURCE.query]
244
+ },
245
+ complexFilterServiceTags.map(complexFilterServiceTag => (
246
+ externalResourceName(RESOURCE_CLASSES.dynamoDbTable, "FilterData", complexFilterServiceTag)
247
+ )
248
+ )
249
+ )
250
+ )
251
+ return {
252
+ functionName,
253
+ additionalResourcePermission
254
+ }
255
+ }
256
+
257
+ async function externalLambdaIamRoleDataFindData(_izContext, allObjSchemas) {
258
+ let functionName = upperCase(FUNCTION_NAME.findData) + upperCase(HANDLER.hdrSqs);
259
+ let additionalResourcePermission = [];
260
+ let graphServiceNames = []
261
+ for (const objectSchema of allObjSchemas) {
262
+ for (const storgaeResource of Object.values(objectSchema.storageResources)) {
263
+ if (storgaeResource.storageType === STORAGE_TYPES.graph) {
264
+ let getGraphServiceName = await getGraphServiceNameFromGraphServerTagWithCache(_izContext, storgaeResource.graphServerTag)
265
+ if (!graphServiceNames.includes(getGraphServiceName)) {
266
+ graphServiceNames.push(getGraphServiceName)
267
+ }
268
+ }
269
+ }
270
+ }
271
+
272
+
273
+ additionalResourcePermission.push(
274
+ createIamRole(
275
+ {
276
+ [RESOURCE_CLASSES.lambda]: [LAMBDA_RESOURCE.invokeFunction]
277
+ },
278
+ graphServiceNames.map(graphServiceName => (
279
+ externalResourceName(RESOURCE_CLASSES.lambda, "GetNodeV2HdrInv", graphServiceName)
280
+ )
281
+ )
282
+ )
283
+ )
284
+ return {
285
+ functionName,
286
+ additionalResourcePermission
287
+ }
288
+ }
289
+
192
290
 
291
+ async function externalLambdaIamRoleDataProcessLogical(_izContext, allObjectSchemas) {
292
+ let functionName = upperCase(FUNCTION_NAME.processLogical) + upperCase(HANDLER.hdrSqs);
293
+ let additionalResourcePermission = [];
294
+ let graphServiceNames = await getGraphServiceNameFromObjectSchema(_izContext, allObjectSchemas)
295
+ // console.log("graphServiceNameFromProcessLogical::", graphServiceNames)
296
+ additionalResourcePermission.push(
297
+ createIamRole(
298
+ {
299
+ [RESOURCE_CLASSES.lambda]: [LAMBDA_RESOURCE.invokeFunction]
300
+ },
301
+ graphServiceNames.map(graphServiceName => (
302
+ externalResourceName(RESOURCE_CLASSES.lambda, "GetNodeV2HdrInv", graphServiceName)
303
+ ))
304
+ )
305
+ )
306
+ return {
307
+ functionName,
308
+ additionalResourcePermission
309
+ }
310
+ }
193
311
 
194
312
  module.exports = createExternalLambdaRole;
@@ -31,27 +31,28 @@ module.exports.generatedLambdaRole = async () => {
31
31
  {
32
32
  functionName: "<%- data.functionName %>",
33
33
  statement: [
34
+ <%_ data.additionalResourcePermission.forEach((resourcePermission, resourceIdx) => { _%>
34
35
  {
35
- "Sid": "<%- data.functionName %>Test<%- dataIndex %>",
36
- "Effect": <%_ data.additionalResourcePermission.forEach(resourcePermission => { _%>
37
- "<%- resourcePermission.effect %>",
36
+ "Sid": "<%- data.functionName %>Test<%- resourceIdx %>",
37
+ "Effect": "<%- resourcePermission.effect %>",
38
38
  "Action":
39
- <%_ Object.keys(resourcePermission.action).forEach(resourcePerAction => { _%>
40
- <%_ resourcePermission.action[resourcePerAction].forEach(permission => { _%>
41
- [
42
- "<%- resourcePerAction %>:<%- permission %>",
43
- ],
44
- "Resource": [
39
+ [
40
+ <%_ Object.keys(resourcePermission.action).forEach(resourcePerAction => { _%>
41
+ <%_ resourcePermission.action[resourcePerAction].forEach(permission => { _%>
42
+ "<%- resourcePerAction %>:<%- permission %>",
43
+ ],
44
+ "Resource":
45
45
  <%_ resourcePermission.resource.forEach(resource => { _%>
46
- `<%- resource _%>`,
46
+ [
47
+ `<%- resource _%>`,
48
+ ],
47
49
  <%_ }) _%>
48
- ]
49
50
  <%_ }) _%>
50
51
  <%_ }) _%>
51
- <%_ }) _%>
52
- }
53
- ]
54
- }, <%_ }) -%>
52
+ }<% if(resourceIdx < data.additionalResourcePermission.length-1) {_%>, <%_} %>
53
+ <%_ }) _%>
54
+ ]
55
+ }, <%_ }) %>
55
56
  ]
56
57
  return externalLambdaRole
57
58
  }
@@ -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
  const { getGraphServiceNameFromGraphServerTagWithCache, getServiceNameWithCache } = require('@izara_project/izara-core-library-service-schemas/src/ServiceConfig')
24
24
  const { firstLetterLowerCase: lowerCase, firstLetterUpperCase: upperCase } = require("../../../../MainLibs/src/Utils")
25
- const { DEFAULT_HANDLER_PER_ACTION, createIamRole, resourceNames, RESOURCE_CLASSES, DEFAULT_LAMBDA_ROLE_PER_ACTION, SOURCE_PATH, externalResourceName, getGraphServiceNameFromAllRelSchema, FUNCTION_NAME, SAVE_FILE_NAME } = require("../../libs/Consts");
25
+ const { DEFAULT_HANDLER_PER_ACTION, createIamRole, resourceNames, RESOURCE_CLASSES, DEFAULT_LAMBDA_ROLE_PER_ACTION, SOURCE_PATH, externalResourceName, getGraphServiceNameFromAllRelSchema, FUNCTION_NAME, SAVE_FILE_NAME, getGraphServiceNameFromObjectSchema } = require("../../libs/Consts");
26
26
  const {
27
27
  TOPIC_NAME_GRAPH_HANDLER,
28
28
  TOPIC_NAME_GENERATE_CODE
@@ -30,14 +30,21 @@ const {
30
30
  const templatePath = path.join(__dirname, "./template.ejs");
31
31
 
32
32
 
33
- const createExternalSnsSubscriptions = async (_izContext, allRelSchemas, srcPath) => {
33
+ const createExternalSnsSubscriptions = async (_izContext, allRelSchemas, allObjSchemas, srcPath) => {
34
34
  const snsServiceConfigArray = [];
35
+
35
36
  const snsServiceConfigUpdateRelationshipComplete = await snsSubScriptionUpdateRelationshipComplete(_izContext, allRelSchemas)
36
37
  snsServiceConfigUpdateRelationshipComplete && snsServiceConfigArray.push(snsServiceConfigUpdateRelationshipComplete)
37
38
 
38
39
  const snsServiceConfigCreateRelationshipComplete = await snsSubscriptionCreateRelationshipComplete(_izContext, allRelSchemas)
39
40
  snsServiceConfigCreateRelationshipComplete && snsServiceConfigArray.push(snsServiceConfigCreateRelationshipComplete)
40
41
 
42
+ const snsServiceConfigUpdateNodeComplete = await snsSubscriptionOutUpdateNodeComplete(_izContext, allObjSchemas)
43
+ snsServiceConfigUpdateNodeComplete && snsServiceConfigArray.push(snsServiceConfigUpdateNodeComplete)
44
+
45
+ const snsServiceConfigCreateNodeComplete = await snsSubscriptionCreateNodeComplete(_izContext, allObjSchemas)
46
+ snsServiceConfigCreateNodeComplete && snsServiceConfigArray.push(snsServiceConfigCreateNodeComplete);
47
+
41
48
  return {
42
49
  templatePath: templatePath,
43
50
  templateData: { datas: snsServiceConfigArray },
@@ -45,7 +52,7 @@ const createExternalSnsSubscriptions = async (_izContext, allRelSchemas, srcPath
45
52
  savePath: path.join(srcPath, SOURCE_PATH.externalService),
46
53
  saveFileName: SAVE_FILE_NAME.snsSubscription,
47
54
  fileExtension: ".js",
48
- isAppend: false
55
+ isAppend: true
49
56
  }
50
57
  }
51
58
  }
@@ -64,16 +71,38 @@ async function snsSubScriptionUpdateRelationshipComplete(_izContext, allRelSchem
64
71
 
65
72
  // create Relationship
66
73
  async function snsSubscriptionCreateRelationshipComplete(_izContext, allRelSchemas) {
67
- let serviceName = await getGraphServiceNameFromAllRelSchema(_izContext, allRelSchemas)
74
+ let serviceNames = await getGraphServiceNameFromAllRelSchema(_izContext, allRelSchemas)
68
75
 
69
76
  return {
70
- serviceNames: serviceName,
77
+ serviceNames: serviceNames,
71
78
  topicName: TOPIC_NAME_GRAPH_HANDLER.outCreateRel,
72
79
  sqsEndpoint: TOPIC_NAME_GENERATE_CODE.createRelComplete
73
80
  }
74
81
  }
75
- // not done yet wait for comfirmation
76
82
 
83
+ // topic not create yet will return error when initialSetup
84
+ // create topic for OutUpdateNodeComplete
85
+ async function snsSubscriptionOutUpdateNodeComplete(_izContext, allObjSchemas) {
86
+ let serviceNames = await getGraphServiceNameFromObjectSchema(_izContext, allObjSchemas)
87
+
88
+ return {
89
+ serviceNames: serviceNames,
90
+ topicName: TOPIC_NAME_GRAPH_HANDLER.outUpdateNode,
91
+ sqsEndpoint: TOPIC_NAME_GENERATE_CODE.updateNodeComplete
92
+ }
93
+ }
94
+
95
+ async function snsSubscriptionCreateNodeComplete(_izContext, allObjectSchemas) {
96
+ let serviceNames = await getGraphServiceNameFromObjectSchema(_izContext, allObjectSchemas)
97
+
98
+ return {
99
+ serviceNames: serviceNames,
100
+ topicName: TOPIC_NAME_GRAPH_HANDLER.outCreateNode,
101
+ sqsEndpoint: TOPIC_NAME_GENERATE_CODE.createNodeComplete
102
+ }
103
+ }
104
+
105
+ // not done yet wait for comfirmation
77
106
 
78
107
 
79
108
  module.exports = createExternalSnsSubscriptions;
@@ -1,10 +1,9 @@
1
1
  module.exports.generatedSnsTopicSubscription = [ <% datas.forEach(data => { -%>
2
- <% data.serviceNames.forEach(serviceName => { _%>
2
+ <% data.serviceNames.forEach(serviceName => { -%>
3
3
  {
4
4
  serviceName: "<%- serviceName %>",
5
5
  topicName: "<%- data.topicName %>",
6
6
  sqsEndpoint: "<%- data.sqsEndpoint %>"
7
- },
7
+ },
8
8
  <% }) _%>
9
- <% }) _%>
10
- ]
9
+ <% }) _%>]
@@ -36,11 +36,17 @@ const RESOURCE_CLASSES = {
36
36
  sqs: 'sqs',
37
37
  s3: 's3',
38
38
  dynamoDbTable: 'dynamodb',
39
+ dynamoDbAcrossService: 'dynamodb',
39
40
  sns: "SNS",
40
41
  lambda: "lambda"
41
42
  };
42
43
 
43
-
44
+ /**
45
+ *
46
+ * @param {string} resourceClass
47
+ * @param {string} resourceName
48
+ * @returns {string}
49
+ */
44
50
  function resourceNames(resourceClass, resourceName) {
45
51
  return {
46
52
  [RESOURCE_CLASSES.sqs]: "arn:aws:sqs:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_resourcePrefix}" + resourceName,
@@ -51,7 +57,13 @@ function resourceNames(resourceClass, resourceName) {
51
57
  }[resourceClass];
52
58
  }
53
59
 
54
-
60
+ /**
61
+ *
62
+ * @param {string} action
63
+ * @param {string} resource
64
+ * @param {string} effect - optional default Allow
65
+ * @returns {{ effect, action, resource}}
66
+ */
55
67
  function createIamRole(action, resource = [], effect = "Allow") {
56
68
  for (const resourceAction in action) {
57
69
  if (typeof (action[resourceAction]) === 'string') {
@@ -75,13 +87,17 @@ function createIamRole(action, resource = [], effect = "Allow") {
75
87
  const SOURCE_PATH = {
76
88
  appYaml: `../sls_yaml/generatedCode/source/`,
77
89
  resourceYaml: `../../resource/sls_yaml/generatedCode/source/`,
78
- lambdaPerObjectTypePath: `/generatedCode/lambdaPerObjectType/source/`, // test
79
- lamdaPerCombindActionPath: `/generatedCode/lamdaPerCombindAction/source/`, // test
80
90
  externalService: '../initial_setup/generatedCode/source/',
81
91
  lambdaPerAction: '../src/generatedCode/ObjectTypePerActionEndpoint/source/',
82
92
  relationshipPerAction: '../src/generatedCode/RelationshipPerAction/source/',
93
+ findData: '../src/generatedCode/FindData/source/',
94
+ translateIdsRequestFile: '../src/generatedCode/TranslateId/source/',
95
+ processLogical: "../src/generatedCode/ProcessLogical/source/",
83
96
  resourceLocationPerAction: 'src/generatedCode/ObjectTypePerActionEndpoint/source/',
97
+ resourceLocationFindData: 'src/generatedCode/FindData/source',
84
98
  resourceLocationRelationshipPerAction: 'src/generatedCode/RelationshipPerAction/source/',
99
+ resourceLocationTranslateId: 'src/generatedCode/TranslateId/source/',
100
+ resourceLocationProcessLogical: "src/generatedCode/ProcessLogical/source/"
85
101
  };
86
102
 
87
103
 
@@ -113,16 +129,35 @@ const SQS_RESOURCE = {
113
129
  getQueueUrl: "GetQueueUrl"
114
130
  }
115
131
 
116
- function externalResourceName(resourceClass, functionName, serviceTag) {
132
+ const SNS_RESOURCE = {
133
+ publish: "Publish",
134
+ subscription: "Subscription"
135
+ }
136
+
137
+ const DYNAMO_RESOURCE = {
138
+ putItem: "PutItem",
139
+ getItem: "GetItem",
140
+ query: "Query",
141
+ updateItem: "UpdateItem",
142
+ deleteItem: "DeleteItem"
143
+ }
144
+
145
+ const LAMBDA_RESOURCE = {
146
+ invokeFunction: "InvokeFunction"
147
+ }
148
+ function externalResourceName(resourceClass, resourceName, serviceTag) {
117
149
  return {
118
- [RESOURCE_CLASSES.dynamoDbTable]: "arn:aws:dynamodb:${process.env.iz_region}:${process.env.iz_accountId}:table/${await dynamoSharedLib.tableName(_izContext, " + `"${functionName}" ,"${serviceTag}")}`,
119
- [RESOURCE_CLASSES.lambda]: "arn:aws:lambda:${process.env.iz_region}:${process.env.iz_accountId}:function:${await lambdaSharedLib.lambdaFunctionName(_izContext, " + `"${functionName}" ,"${serviceTag}")}`,
150
+ [RESOURCE_CLASSES.dynamoDbTable]: "arn:aws:dynamodb:${process.env.iz_region}:${process.env.iz_accountId}:table/${await dynamoSharedLib.tableName(_izContext, " + `"${resourceName}" ,"${serviceTag}")}`,
151
+ // [RESOURCE_CLASSES.dynamoDbAcrossService]: "arn:aws:dynamodb:${process.env.iz_region}:${process.env.iz_accountId}:table/*/" + `${resourceName}`,
152
+ [RESOURCE_CLASSES.dynamoDbAcrossService]: "arn:aws:dynamodb:${process.env.iz_region}:${process.env.iz_accountId}:table/*" + `${resourceName}`,
153
+ [RESOURCE_CLASSES.lambda]: "arn:aws:lambda:${process.env.iz_region}:${process.env.iz_accountId}:function:${await lambdaSharedLib.lambdaFunctionName(_izContext, " + `"${resourceName}" ,"${serviceTag}")}`,
120
154
  }[resourceClass]
121
155
  }
122
156
 
123
- function externalResourceSns(functionName, serviceTag) {
124
- return "arn:aws:sns:${process.env.iz_region}:${process.env.iz_accountId}:${await snsSharedLib.snsTopicName(_izContext, " + `"${functionName}", "${serviceTag}")}`
157
+ function externalResourceSns(resourceName, serviceTag) {
158
+ return "arn:aws:sns:${process.env.iz_region}:${process.env.iz_accountId}:${await snsSharedLib.snsTopicName(_izContext, " + `"${resourceName}", "${serviceTag}")}`
125
159
  }
160
+
126
161
  const SAVE_FILE_NAME = {
127
162
  dynamoDbYaml: "generated-dynamoDB-table",
128
163
  snsInSqsYaml: "generated-sns-in-sqs",
@@ -131,13 +166,24 @@ const SAVE_FILE_NAME = {
131
166
  functionPerActionYaml: "per-action-function",
132
167
  externalLambdaRole: "generatedLambdaRoleServiceConfig",
133
168
  snsSubscription: "generatedSnsServiceConfig",
169
+ translateId: "TranslateIdsRequest",
170
+ findData: "findData",
171
+ processLogicalYaml: "processLogical"
134
172
  }
135
173
 
136
174
  const FUNCTION_NAME = {
137
175
  updateRel: "updateRelationship",
138
176
  createRel: "createRelationship",
139
177
  updateRelComplete: "updateRelationshipComplete",
140
- createRelComplete: "createRelationshipComplete"
178
+ createRelComplete: "createRelationshipComplete",
179
+ translateId: "translateIdsRequest",
180
+ translateIdsProcess: "processTranslateIds",
181
+ outTranslateIds: "processTranslateIdsComplete",
182
+ findData: "findData",
183
+ processLogical: "processLogical",
184
+ updateNodeComplete: "updateNodeComplete",
185
+ createObjectComplete: "createObjectComplete",
186
+ paginateProcessLogical: "paginateProcessLogical"
141
187
  }
142
188
 
143
189
  const getGraphServiceNameFromAllRelSchema = async (_izContext, allRelSchemas) => {
@@ -157,6 +203,65 @@ const getGraphServiceNameFromAllRelSchema = async (_izContext, allRelSchemas) =>
157
203
  return graphServiceName
158
204
  }
159
205
 
206
+ const TRANSLATEIDS_HANDLER = {
207
+ sqs: "HdrSqs",
208
+ dsq: "HdrDsq"
209
+ }
210
+ function defaultIamRolePerAction() {
211
+
212
+ let defaultIamRole = [];
213
+
214
+
215
+ defaultIamRole.push(
216
+ createIamRole(
217
+ {
218
+ [RESOURCE_CLASSES.s3]: ["GetObject", "GetObjectVersion"],
219
+ },
220
+ [
221
+ resourceNames(RESOURCE_CLASSES.s3, "object-schema/perServiceSchemas/*"),
222
+ resourceNames(RESOURCE_CLASSES.s3, "object-schema/serviceConfig/ServiceNameConfig.json"),
223
+ resourceNames(RESOURCE_CLASSES.s3, "object-schema/serviceConfig/GraphServerTags.json"),
224
+ ]
225
+ )
226
+ );
227
+
228
+ defaultIamRole.push(
229
+ createIamRole(
230
+ { [RESOURCE_CLASSES.s3]: ["ListBucket"] },
231
+ [
232
+ resourceNames(RESOURCE_CLASSES.s3, "object-schema"),
233
+ ]
234
+ )
235
+ );
236
+
237
+ return defaultIamRole
238
+ }
239
+
240
+ function getComplexFilterServiceTag(allObjectSchemas) {
241
+ const complexFilterServiceTagSet = new Set();
242
+ for (let objectSchema of allObjectSchemas) {
243
+ complexFilterServiceTagSet.add(objectSchema.complexFilterServiceTag)
244
+ }
245
+ let complexFilterServiceTags = [...complexFilterServiceTagSet];
246
+ return complexFilterServiceTags
247
+ }
248
+
249
+ async function getGraphServiceNameFromObjectSchema(_izContext, allObjSchemas) {
250
+ const graphServiceName = new Set();
251
+ for (const objectSchema of allObjSchemas) {
252
+ for (let storageResource of Object.values(objectSchema.storageResources)) {
253
+ if (storageResource.storageType === STORAGE_TYPES.graph) {
254
+ let getGraphServiceName = await getGraphServiceNameFromGraphServerTagWithCache(_izContext, storageResource.graphServerTag)
255
+ graphServiceName.add(getGraphServiceName)
256
+ }
257
+ }
258
+ }
259
+ let graphServiceNames = [...graphServiceName]
260
+ console.log("graphServiceName", graphServiceNames)
261
+ return graphServiceNames
262
+ }
263
+
264
+
160
265
  module.exports = {
161
266
  ACTIONS,
162
267
  DEFAULT_HANDLER_PER_ACTION,
@@ -166,10 +271,16 @@ module.exports = {
166
271
  SOURCE_PATH,
167
272
  DEFAULT_LAMBDA_ROLE_PER_ACTION,
168
273
  SQS_RESOURCE,
274
+ SNS_RESOURCE,
275
+ DYNAMO_RESOURCE,
276
+ LAMBDA_RESOURCE,
169
277
  HANDLER,
170
278
  externalResourceName,
171
279
  externalResourceSns,
172
280
  SAVE_FILE_NAME,
173
281
  FUNCTION_NAME,
174
- getGraphServiceNameFromAllRelSchema
282
+ getGraphServiceNameFromAllRelSchema,
283
+ defaultIamRolePerAction,
284
+ getComplexFilterServiceTag,
285
+ getGraphServiceNameFromObjectSchema
175
286
  }
@@ -1,5 +0,0 @@
1
- {
2
- "identifiers": {
3
- "personId": "basTest"
4
- }
5
- }