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

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 (120) hide show
  1. package/package.json +5 -5
  2. package/src/GenerateCodeLibs/src/Consts.js +46 -0
  3. package/src/GenerateCodeLibs/src/GenerateCodeLibs.js +69 -8
  4. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrApi/data.js +111 -0
  5. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrDsq/data.js +132 -0
  6. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrInv/data.js +110 -0
  7. package/src/TemplateManager/src/CreateRelationship/createRelationship/functionYaml/HdrSqs/data.js +132 -0
  8. package/src/TemplateManager/src/CreateRelationship/createRelationship/mainFunction/data.js +59 -0
  9. package/src/TemplateManager/src/CreateRelationship/createRelationship/mainFunction/template.ejs +338 -0
  10. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrApi/data.js +58 -0
  11. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrApi/request.json +0 -0
  12. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrApi/template.ejs +120 -0
  13. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrDsq/data.js +60 -0
  14. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrDsq/request.json +0 -0
  15. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrDsq/template.ejs +167 -0
  16. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrInv/data.js +60 -0
  17. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrInv/request.json +0 -0
  18. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrInv/template.ejs +107 -0
  19. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrSqs/data.js +60 -0
  20. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrSqs/request.json +0 -0
  21. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/HdrSqs/template.ejs +146 -0
  22. package/src/TemplateManager/src/CreateRelationship/createRelationship/perAction/request.json +30 -0
  23. package/src/TemplateManager/src/CreateRelationship/createRelationship/sns-in-sqs/data.js +80 -0
  24. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/functionYaml/data.js +133 -0
  25. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/functionYaml/request.json +0 -0
  26. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/functionYaml/template.ejs +33 -0
  27. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/handler/HdrSqs/data.js +62 -0
  28. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/handler/HdrSqs/request.json +0 -0
  29. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/handler/HdrSqs/template.ejs +125 -0
  30. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/mainFunction/data.js +56 -0
  31. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/mainFunction/request.json +0 -0
  32. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/mainFunction/template.ejs +137 -0
  33. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/sns-in-sqs/data.js +72 -0
  34. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/sns-in-sqs/request.json +0 -0
  35. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/sns-in-sqs/template.ejs +47 -0
  36. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/sns-out/data.js +72 -0
  37. package/src/TemplateManager/src/CreateRelationship/createRelationshipComplete/sns-out/request.json +0 -0
  38. package/src/TemplateManager/src/GenerateCode.js +176 -43
  39. package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrApi/data.js +7 -23
  40. package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrDsq/data.js +10 -24
  41. package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrInv/data.js +6 -23
  42. package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrSqs/data.js +14 -33
  43. package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrSqs/template.ejs +2 -2
  44. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrApi/data.js +2 -16
  45. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrDsq/data.js +3 -17
  46. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrInv/data.js +3 -16
  47. package/src/TemplateManager/src/PerActionEndpoint/Handler/HdrSqs/data.js +4 -17
  48. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Get/data.js +0 -15
  49. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Get/template.ejs +28 -30
  50. package/src/TemplateManager/src/PerActionEndpoint/MainFunction/Get/testParam.json +5 -0
  51. package/src/TemplateManager/src/ResourceYaml/dynamodb/awaitingMultipleStepData.js +95 -0
  52. package/src/TemplateManager/src/ResourceYaml/dynamodb/mainResourcePerObjectSchemaData.js +7 -29
  53. package/src/TemplateManager/src/ResourceYaml/dynamodb/processLogicalAndFindData.js +5 -8
  54. package/src/TemplateManager/src/ResourceYaml/sns-in-sqs/defaultSnsInSqsForFindDataAndProcessLogical.js +3 -6
  55. package/src/TemplateManager/src/ResourceYaml/sns-in-sqs/snsAndSqsPerActiondata.js +6 -6
  56. package/src/TemplateManager/src/ResourceYaml/sns-in-sqs/sqsTemplate.ejs +1 -0
  57. package/src/TemplateManager/src/ResourceYaml/sns-out/data.js +89 -0
  58. package/src/TemplateManager/src/ResourceYaml/sns-out/request.json +3 -0
  59. package/src/TemplateManager/src/ResourceYaml/sns-out/template.ejs +10 -0
  60. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/functionYaml/data.js +135 -0
  61. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/functionYaml/request.json +3 -0
  62. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/functionYaml/template.ejs +33 -0
  63. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/handler/HdrSqs/data.js +62 -0
  64. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/handler/HdrSqs/request.json +0 -0
  65. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/handler/HdrSqs/template.ejs +127 -0
  66. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/mainFunction/data.js +56 -0
  67. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/mainFunction/request.json +1 -0
  68. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/mainFunction/template.ejs +140 -0
  69. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/sns-in-sqs/data.js +72 -0
  70. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/sns-in-sqs/request.json +3 -0
  71. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/sns-in-sqs/template.ejs +46 -0
  72. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/sns-out/data.js +71 -0
  73. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRalationshipComplete/sns-out/request.json +3 -0
  74. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrApi/data.js +112 -0
  75. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrApi/request.json +0 -0
  76. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrApi/template.ejs +33 -0
  77. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrDsq/data.js +128 -0
  78. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrDsq/request.json +0 -0
  79. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrInv/data.js +110 -0
  80. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrInv/request.json +0 -0
  81. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrSqs/data.js +131 -0
  82. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/functionYaml/HdrSqs/request.json +0 -0
  83. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/mainFunction/data.js +65 -0
  84. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/mainFunction/request.json +1 -0
  85. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/mainFunction/template.ejs +331 -0
  86. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrApi/data.js +59 -0
  87. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrApi/request.json +7 -0
  88. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrApi/template.ejs +120 -0
  89. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrDsq/data.js +59 -0
  90. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrDsq/request.json +7 -0
  91. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrDsq/template.ejs +167 -0
  92. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrInv/data.js +62 -0
  93. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrInv/request.json +5 -0
  94. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrInv/template.ejs +126 -0
  95. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrSqs/data.js +59 -0
  96. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrSqs/request.json +7 -0
  97. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/HdrSqs/template.ejs +146 -0
  98. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/perAction/request.json +30 -0
  99. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/sns-in-sqs/data.js +90 -0
  100. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/sns-in-sqs/request.json +3 -0
  101. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/sns-out/data.js +70 -0
  102. package/src/TemplateManager/src/UpdateRelationshipSchema/updateRelationship/sns-out/request.json +3 -0
  103. package/src/TemplateManager/src/externalService/LambdaRole/data.js +72 -25
  104. package/src/TemplateManager/src/externalService/LambdaRole/template.ejs +8 -3
  105. package/src/TemplateManager/src/externalService/SnsTopicSubscriotions/data.js +51 -3
  106. package/src/TemplateManager/src/externalService/SnsTopicSubscriotions/request.json +12 -0
  107. package/src/TemplateManager/src/externalService/SnsTopicSubscriotions/template.ejs +10 -14
  108. package/src/TemplateManager/src/libs/Consts.js +52 -23
  109. package/src/TemplateManager/src/MainResourcesYaml/CreateSourceData.js +0 -76
  110. package/src/TemplateManager/src/MainResourcesYaml/TemplateAndData/DynamoDbMain/Data/MainDynamoDbYamlData.js +0 -155
  111. package/src/TemplateManager/src/MainResourcesYaml/TemplateAndData/DynamoDbMain/Template/DynamoDb.ejs +0 -31
  112. package/src/TemplateManager/src/MainResourcesYaml/TemplateAndData/DynamoDbMain/Template/DynamoDb.exampleData.js +0 -12
  113. /package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrApi/request.json +0 -0
  114. /package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrApi/template.ejs +0 -0
  115. /package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrDsq/request.json +0 -0
  116. /package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrDsq/template.ejs +0 -0
  117. /package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrInv/example req.js +0 -0
  118. /package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrInv/request.json +0 -0
  119. /package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrInv/template.ejs +0 -0
  120. /package/src/TemplateManager/src/{FunctionYaml → PerActionEndpoint/FunctionYaml}/HdrSqs/request.json +0 -0
@@ -19,9 +19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
 
20
20
  const {
21
21
  HANDLER,
22
- ACTIONS
22
+ ACTIONS,
23
+ STORAGE_TYPES
23
24
  } = require('@izara_project/izara-core-library-service-schemas/src/Consts');
24
25
 
26
+ const { getGraphServiceNameFromGraphServerTagWithCache } = require('@izara_project/izara-core-library-service-schemas/src/ServiceConfig');
25
27
 
26
28
  const DEFAULT_HANDLER_PER_ACTION = {
27
29
  [ACTIONS.create]: [HANDLER.hdrApi, HANDLER.hdrSqs],
@@ -73,11 +75,13 @@ function createIamRole(action, resource = [], effect = "Allow") {
73
75
  const SOURCE_PATH = {
74
76
  appYaml: `../sls_yaml/generatedCode/source/`,
75
77
  resourceYaml: `../../resource/sls_yaml/generatedCode/source/`,
76
- lambdaPerObjectTypePath: `/generatedCode/lambdaPerObjectType/source/`,
77
- lamdaPerCombindActionPath: `/generatedCode/lamdaPerCombindAction/source/`,
78
+ lambdaPerObjectTypePath: `/generatedCode/lambdaPerObjectType/source/`, // test
79
+ lamdaPerCombindActionPath: `/generatedCode/lamdaPerCombindAction/source/`, // test
78
80
  externalService: '../initial_setup/generatedCode/source/',
79
- lambdaPerAction: '../src//generatedCode/perAction/source/',
80
- resourceLocation: 'src/generatedCode/perAction/source/',
81
+ lambdaPerAction: '../src/generatedCode/ObjectTypePerActionEndpoint/source/',
82
+ relationshipPerAction: '../src/generatedCode/RelationshipPerAction/source/',
83
+ resourceLocationPerAction: 'src/generatedCode/ObjectTypePerActionEndpoint/source/',
84
+ resourceLocationRelationshipPerAction: 'src/generatedCode/RelationshipPerAction/source/',
81
85
  };
82
86
 
83
87
 
@@ -102,34 +106,56 @@ const DEFAULT_LAMBDA_ROLE_PER_ACTION = {
102
106
 
103
107
  const SQS_RESOURCE = {
104
108
  sendMessage: "SendMessage",
105
- recieveMessage: "RecieveMessage",
109
+ receiveMessage: "ReceiveMessage",
106
110
  deleteMessage: "DeleteMessage",
107
- getQueueAttributes: "GetQueueAttributes"
111
+ getQueueAttributes: "GetQueueAttributes",
112
+ deleteMessageBatch: "DeleteMessageBatch",
113
+ getQueueUrl: "GetQueueUrl"
108
114
  }
109
115
 
110
- function externalResourceName(resourceClass, functionName, serviceName) {
116
+ function externalResourceName(resourceClass, functionName, serviceTag) {
111
117
  return {
112
- [RESOURCE_CLASSES.dynamoDbTable]: "arn:aws:dynamodb:${process.env.iz_region}:${process.env.iz_accountId}:table/${dynamoSharedLib.tableName(" + `"${functionName}" ,"${serviceName}")}`,
113
- [RESOURCE_CLASSES.lambda]: "arn:aws:lambda:${process.env.iz_region}:${process.env.iz_accountId}:function:${lambdaSharedLib.lambdaFunctionName(" + `"${functionName}" ,"${serviceName}")}`,
114
- [RESOURCE_CLASSES.sns]: `snsSharedLib.snsTopicArn("${functionName}" , "${serviceName}")`,
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}")}`,
115
120
  }[resourceClass]
116
121
  }
117
122
 
118
- const FUNCTION_PER_ACTION = {
119
- [ACTIONS.create]: "InCreateNode",
120
- [ACTIONS.update]: "InCreateVersionedData",
121
- [ACTIONS.get]: "GetNodeHdrInv",
123
+ function externalResourceSns(functionName, serviceTag) {
124
+ return "arn:aws:sns:${process.env.iz_region}:${process.env.iz_accountId}:${await snsSharedLib.snsTopicName(_izContext, " + `"${functionName}", "${serviceTag}")}`
125
+ }
126
+ const SAVE_FILE_NAME = {
127
+ dynamoDbYaml: "generated-dynamoDB-table",
128
+ snsInSqsYaml: "generated-sns-in-sqs",
129
+ snsOutYaml: "generated-sns-out",
130
+ functionRelationshipYaml: "RelationshipPerAction",
131
+ functionPerActionYaml: "per-action-function",
132
+ externalLambdaRole: "generatedLambdaRoleServiceConfig",
133
+ snsSubscription: "generatedSnsServiceConfig",
122
134
  }
123
135
 
124
- const DEFAULT_EXTERNAL_IAM_ROLE_PER_ACTION = {
125
- [ACTIONS.create]: "InCreateNode",
126
- [ACTIONS.update]: "InCreateVersionedData",
127
- [ACTIONS.get]: {
128
- [RESOURCE_CLASSES.lambda]: ["GetNodeHdrInv"],
129
- },
130
- [ACTIONS.delete]: "GetNodeHdrInv",
136
+ const FUNCTION_NAME = {
137
+ updateRel: "updateRelationship",
138
+ createRel: "createRelationship",
139
+ updateRelComplete: "updateRelationshipComplete",
140
+ createRelComplete: "createRelationshipComplete"
131
141
  }
132
142
 
143
+ const getGraphServiceNameFromAllRelSchema = async (_izContext, allRelSchemas) => {
144
+ const graphServiceNameSet = new Set();
145
+ await Promise.all(allRelSchemas.map(async relSchema => {
146
+ let relTag = Object.keys(relSchema)[0];
147
+ let relSchemaData = relSchema[relTag];
148
+
149
+ await Promise.all(Object.values(relSchemaData.storageResources).map(async storageResource => {
150
+ if (storageResource.storageType === STORAGE_TYPES.graph) {
151
+ const getGraphServiceName = await getGraphServiceNameFromGraphServerTagWithCache(_izContext, storageResource.graphServerTag);
152
+ graphServiceNameSet.add(getGraphServiceName)
153
+ }
154
+ }))
155
+ }))
156
+ const graphServiceName = [...graphServiceNameSet]
157
+ return graphServiceName
158
+ }
133
159
 
134
160
  module.exports = {
135
161
  ACTIONS,
@@ -142,5 +168,8 @@ module.exports = {
142
168
  SQS_RESOURCE,
143
169
  HANDLER,
144
170
  externalResourceName,
145
- FUNCTION_PER_ACTION
171
+ externalResourceSns,
172
+ SAVE_FILE_NAME,
173
+ FUNCTION_NAME,
174
+ getGraphServiceNameFromAllRelSchema
146
175
  }
@@ -1,76 +0,0 @@
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 schemaConsts = require('@izara_project/izara-core-library-service-schemas/src/Consts');
23
-
24
-
25
-
26
- // const lambdaYaml = require("./Template/Resource/Lambda/LambdaYamlTemplateData");
27
-
28
- const config = require('../libs/Consts')
29
-
30
-
31
- const dynamoDbMainYaml = require("./TemplateAndData/DynamoDbMain/Data/MainDynamoDbYamlData")
32
-
33
- /**
34
- * @param {Object} _izContext
35
- * @param {Object} objectSchema
36
- */
37
- module.exports.createSourceDataObjectSchema = (_izContext, objectSchema, saveFilePath) => {
38
-
39
- let resultsForCreateSource = [];
40
-
41
-
42
- const dynamoDbMainYamlDataList = dynamoDbMainYaml.dynamoDbMainYamlFromObjectSchema.templateDataFunction(_izContext, objectSchema);
43
- // console.log("dynamoDbMainYamlDataList: ", dynamoDbMainYamlDataList);
44
-
45
- for (let dynamoDbMainYamlData of dynamoDbMainYamlDataList) {
46
- // create iam role of handler here
47
- resultsForCreateSource.push({
48
- templatePath: dynamoDbMainYaml.dynamoDbMainYamlFromObjectSchema.templatePath,
49
- templateData: dynamoDbMainYamlData,
50
- setting: {
51
- initialData: 'Resources:\n',
52
- savePath: path.join(saveFilePath, config.SOURCE_PATH.resourceYaml),
53
- saveFileName: 'generate-dynamodb-table',
54
- fileExtension: '.yml',
55
- isAppend: true
56
- }
57
- });
58
- }
59
-
60
- // console.log("resultsForCreateSource: ", resultsForCreateSource);
61
-
62
- return resultsForCreateSource;
63
- }
64
-
65
-
66
- /**
67
- *
68
- * @param {Object} _izContext
69
- * @param {Object} relSchema
70
- * @param {String} saveFilePath
71
- * @returns
72
- */
73
- module.exports.createSourceDataRelSchema = (_izContext, relSchema, saveFilePath) => {
74
-
75
- return []
76
- }
@@ -1,155 +0,0 @@
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 {
23
- // HANDLER,
24
- // STORAGE_TYPES
25
- // } = require('@izara_project/izara-core-library-service-schemas/src/Consts');
26
-
27
-
28
- const STORAGE_TYPES = {
29
- dynamoDB: "dynamoDB",
30
- graph: "graph"
31
- }
32
-
33
-
34
- // ---------- End Per Lambda Handler IamRole Data ----------
35
-
36
-
37
-
38
- /**
39
- * create data for dynamoDbYaml tempalte from objectSchema
40
- * return array of dynamoDb data
41
- * because one objectSchema can create multiple dynamoDb table
42
- *
43
- * @param {Object} _izContext
44
- * @param {Object} objectSchema
45
- * @returns {Object[]} - data of multiple dynamoDb template
46
- */
47
- function dataForMainDynamoDbYamlFromObjectSchema(_izContext, objectSchema) {
48
- let dynamoDbYamlTemplateData = [];
49
-
50
- // store detail for create dynamoDb table
51
- let identifiersDetail = {};
52
-
53
- // add identifiersDetail for dynamoDb storage
54
- for (let identifier of objectSchema.identifiers) {
55
- // console.log("in identifiers")
56
- if (identifier.type === "partitionKey" || identifier.type === "sortKey") {
57
- identifiersDetail[identifier.type] = {};
58
-
59
- if (identifier.name) {
60
- Object.assign(
61
- identifiersDetail[identifier.type],
62
- {
63
- AttributeName: identifier.name,
64
- AttributeType: "S"
65
- }
66
- );
67
- } else {
68
- let fieldNameType = objectSchema.fieldNames[identifier.fieldName].type;
69
- let attributeType;
70
-
71
- if (fieldNameType === "string") {
72
- attributeType = "S"
73
- } else if (fieldNameType === "number") {
74
- attributeType = "N"
75
- }
76
-
77
- Object.assign(
78
- identifiersDetail[identifier.type],
79
- {
80
- AttributeName: identifier.fieldName,
81
- AttributeType: attributeType
82
- }
83
- );
84
- }
85
- }
86
- }
87
- // console.log("identifiersDetail: ", identifiersDetail)
88
- if (!identifiersDetail.hasOwnProperty("partitionKey")) {
89
- return [];
90
- }
91
-
92
-
93
- // start create dynamoDb template data
94
- for (let storageResource of Object.values(objectSchema.storageResources)) {
95
- if (storageResource.storageType === STORAGE_TYPES.dynamoDB) {
96
- let templateData = {
97
- tableName: storageResource.tableName,
98
- attributes: []
99
- };
100
-
101
-
102
- if (storageResource.hasOwnProperty("groupByPartitionKeyField")) {
103
- templateData.attributes.push(
104
- {
105
- keyType: "partitionKey",
106
- AttributeName: storageResource.groupByPartitionKeyField,
107
- AttributeType: "S"
108
- }
109
- );
110
- } else {
111
- for (let identifierType in identifiersDetail) {
112
- templateData.attributes.push(
113
- {
114
- keyType: identifierType,
115
- AttributeName: identifiersDetail[identifierType].AttributeName,
116
- AttributeType: identifiersDetail[identifierType].AttributeType
117
- }
118
- );
119
- }
120
- }
121
- dynamoDbYamlTemplateData.push(templateData);
122
- // console.log("templateData: ", templateData)
123
- }
124
- }
125
-
126
- return dynamoDbYamlTemplateData
127
- }
128
-
129
-
130
- // return array of table data
131
- // because one relSchema can create multiple dynamoDb table
132
- function dataForMainDynamoDbYamlFromRelSchema(_izContext, relSchema) {
133
- let relTag = Object.keys(relSchema)[0];
134
- let relData = relSchema[relTag];
135
-
136
- for (let parents of relData.parents) {
137
- let parentObjectType = parent.objType.objectType;
138
-
139
-
140
- }
141
-
142
- return
143
- }
144
-
145
-
146
- module.exports = {
147
- dynamoDbMainYamlFromObjectSchema: {
148
- templatePath: path.join(__dirname, '../Template/DynamoDb.ejs'),
149
- templateDataFunction: dataForMainDynamoDbYamlFromObjectSchema
150
- },
151
- dynamoDbMainYamlFromRelSchema: {
152
- templatePath: path.join(__dirname, '../Template/DynamoDb.ejs'),
153
- templateDataFunction: dataForMainDynamoDbYamlFromRelSchema
154
- },
155
- }
@@ -1,31 +0,0 @@
1
- <%- tableName %>Table:
2
- Type: "AWS::DynamoDB::Table"
3
- Properties:
4
- TableName: ${self:custom.iz_resourcePrefix}<%- tableName %>
5
- AttributeDefinitions:
6
- <%_ attributes.forEach((attribute) => { -%>
7
- - AttributeName: <%- attribute["AttributeName"] %>
8
- AttributeType: <%- attribute["AttributeType"] %>
9
- <%_ }) _%>
10
- KeySchema:
11
- <%_ attributes.forEach((attribute) => { -%>
12
- <%_ if(attribute.keyType === 'partitionKey') { -%>
13
- - AttributeName: <%- attribute["AttributeName"] %>
14
- KeyType: HASH
15
- <%_ } -%>
16
- <%_ if(attribute.keyType === 'sortKey') { -%>
17
- - AttributeName: <%- attribute["AttributeName"] %>
18
- KeyType: RANGE
19
- <%_ } -%>
20
- <%_ }) _%>
21
- ProvisionedThroughput:
22
- ReadCapacityUnits: 1
23
- WriteCapacityUnits: 1
24
- #<#<%- firstLetterUpperCase(tableName) %>DynamoDbSetting#>
25
- #<#/<%- firstLetterUpperCase(tableName) %>DynamoDbSetting#>
26
- <%_ function firstLetterUpperCase(text){
27
- return text.charAt(0).toUpperCase() + text.slice(1)
28
- } _%>
29
- <%_ function firstLetterLowerCase(str) {
30
- return str.charAt(0).toLowerCase() + str.slice(1)
31
- } _%>
@@ -1,12 +0,0 @@
1
- // example template data for dynamoDb
2
- const templateData = {
3
- tableName: "xx",
4
- attributes: [
5
- {
6
- keyType: "xx", // partitionKey || sortKey
7
- AttributeName: "", // any
8
- AttributeType: "" // S, N, B
9
- },
10
- //...
11
- ]
12
- }