@izara_project/izara-core-library-service-schemas 1.0.76 → 1.0.78

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.
@@ -19,14 +19,14 @@ along with this program.If not, see < http://www.gnu.org/licenses/>.
19
19
  const { createRelTypeConcat, createLinkTypeId } = require('../Utils');
20
20
  const getObjectSchema = require('../GetObjectSchema');
21
21
  const serviceConfig = require('../ServiceConfig');
22
- const { STORAGE_TYPES } = require('../Consts')
22
+ const { STORAGE_TYPES, OBJECT_SCHEMA_BUCKET_NAME } = require('../Consts')
23
23
  const { getObjTypeHierarchy } = require('../GetObjectSchema')
24
24
 
25
- async function validateRequiredOnCreateLinks(_izContext, objType, relationships, settings = {}) {
25
+ async function validateRequiredOnCreateLinks(_izContext, objType, relationships = [], settings = { bucketName: OBJECT_SCHEMA_BUCKET_NAME }) {
26
26
  _izContext.logger.debug("validateRequiredOnCreateLinks:::", { objType, relationships, settings })
27
27
 
28
-
29
- let objectHie = await getObjTypeHierarchy(_izContext, objType).then(objSchema => {
28
+ let bucketName = settings.bucketName ? settings.bucketName : OBJECT_SCHEMA_BUCKET_NAME
29
+ let objectHie = await getObjTypeHierarchy(_izContext, objType, settings.bucketName).then(objSchema => {
30
30
  if (objSchema.errorsFound.length > 0) {
31
31
  throw new NoRetryError(objSchema.errorsFound.join(","))
32
32
  } else {
@@ -36,7 +36,7 @@ async function validateRequiredOnCreateLinks(_izContext, objType, relationships,
36
36
  _izContext.logger.debug("objectHierarchy::", objectHie)
37
37
 
38
38
  if (relationships.length) {
39
- let targetHierarchy = await getObjTypeHierarchy(_izContext, relationships[0].targetObjType).then(objSchema => {
39
+ let targetHierarchy = await getObjTypeHierarchy(_izContext, relationships[0].targetObjType, settings.bucketName).then(objSchema => {
40
40
  if (objSchema.errorsFound.length > 0) {
41
41
  throw new NoRetryError(objSchema.errorsFound.join(","))
42
42
  } else {
@@ -49,7 +49,7 @@ async function validateRequiredOnCreateLinks(_izContext, objType, relationships,
49
49
 
50
50
  let errorsFound = [];
51
51
 
52
- let requiredOnCreateLinks = await getObjectSchema.getRequiredOnCreateLinksWithCache(_izContext, objType)
52
+ let requiredOnCreateLinks = await getObjectSchema.getRequiredOnCreateLinksWithCache(_izContext, objType, [], settings.bucketName)
53
53
  _izContext.logger.debug("requiredOnCreateLinks::", requiredOnCreateLinks)
54
54
 
55
55
  if (!requiredOnCreateLinks.length && relationships.length > 0) {
@@ -64,7 +64,7 @@ async function validateRequiredOnCreateLinks(_izContext, objType, relationships,
64
64
  requiredOnCreateLink.storageResourceTags.map(async (storageTag) => {
65
65
  let storageResource = requiredOnCreateLink.storageResources[storageTag];
66
66
  if (storageResource.storageType === STORAGE_TYPES.graph) {
67
- return await serviceConfig.getGraphServiceTagWithCache(_izContext, storageResource.graphServerTag)
67
+ return await serviceConfig.getGraphServiceTagWithCache(_izContext, storageResource.graphServerTag, settings.bucketName)
68
68
  }
69
69
  })
70
70
  );
@@ -102,7 +102,7 @@ async function validateRequiredOnCreateLinks(_izContext, objType, relationships,
102
102
 
103
103
  for (let link of usedLinkGroup) {
104
104
  // check other with targetObjType, check linkType of other should be 'one',
105
- let targetObjTypeHierarchy = await getObjTypeHierarchy(_izContext, relationship.targetObjType).then(objSchema => {
105
+ let targetObjTypeHierarchy = await getObjTypeHierarchy(_izContext, relationship.targetObjType, settings.bucketName).then(objSchema => {
106
106
  if (objSchema.errorsFound.length > 0) {
107
107
  throw new NoRetryError(objSchema.errorsFound.join(","))
108
108
  } else {
@@ -20,7 +20,7 @@ along with this program.If not, see < http://www.gnu.org/licenses/>.
20
20
  const { NoRetryError } = require('@izara_project/izara-core-library-core');
21
21
 
22
22
  const { getObjSchemaS3WithHierarchy } = require("../GetObjectSchema");
23
- const { DEFAULT_IDENTIFIER_DELIMINATOR } = require("../Consts");
23
+ const { DEFAULT_IDENTIFIER_DELIMINATOR, OBJECT_SCHEMA_BUCKET_NAME } = require("../Consts");
24
24
 
25
25
 
26
26
  /**
@@ -31,7 +31,7 @@ const { DEFAULT_IDENTIFIER_DELIMINATOR } = require("../Consts");
31
31
  * @param {Object} fieldNameSetting
32
32
  * @param {Object} [objType] use to store objType of child
33
33
  */
34
- async function generateDeliminatorTreePerFieldName(_izContext, fieldName, fieldNameSetting, objType, iter = 0) {
34
+ async function generateDeliminatorTreePerFieldName(_izContext, fieldName, fieldNameSetting, objType, bucketName = OBJECT_SCHEMA_BUCKET_NAME, iter = 0) {
35
35
 
36
36
  if (iter > 50) {
37
37
  throw new NoRetryError("generateValidatorSchemaPerFieldName reach max iteration limit")
@@ -43,7 +43,7 @@ async function generateDeliminatorTreePerFieldName(_izContext, fieldName, fieldN
43
43
  [fieldName]: {},
44
44
  };
45
45
 
46
- if (objType) {
46
+ if (Object.keys(objType).length) {
47
47
  Object.assign(deliminatorTree[fieldName], objType);
48
48
  }
49
49
 
@@ -57,7 +57,8 @@ async function generateDeliminatorTreePerFieldName(_izContext, fieldName, fieldN
57
57
  {
58
58
  objectType: fieldNameSetting.fromObjectType,
59
59
  serviceTag: fieldNameSetting.fromServiceNameTag
60
- }
60
+ },
61
+ bucketName
61
62
  );
62
63
 
63
64
  if (!childObjectSchema) {
@@ -93,6 +94,7 @@ async function generateDeliminatorTreePerFieldName(_izContext, fieldName, fieldN
93
94
  objectType: fieldNameSetting.fromObjectType,
94
95
  serviceTag: fieldNameSetting.fromServiceNameTag
95
96
  },
97
+ bucketName,
96
98
  iter
97
99
  );
98
100
  _izContext.logger.debug("childDeliminator: ", childDeliminator)
@@ -136,7 +138,7 @@ async function generateDeliminatorTreePerFieldName(_izContext, fieldName, fieldN
136
138
  }
137
139
 
138
140
 
139
- async function generateDeliminatorTreeAllFieldNames(_izContext, objectSchema) {
141
+ async function generateDeliminatorTreeAllFieldNames(_izContext, objectSchema, bucketName = OBJECT_SCHEMA_BUCKET_NAME) {
140
142
  let deliminatorTreeFieldNames = {};
141
143
  let deliminatorTreePromises = [];
142
144
 
@@ -145,7 +147,7 @@ async function generateDeliminatorTreeAllFieldNames(_izContext, objectSchema) {
145
147
  async () => {
146
148
  Object.assign(
147
149
  deliminatorTreeFieldNames,
148
- await generateDeliminatorTreePerFieldName(_izContext, fieldName, fieldNameData))
150
+ await generateDeliminatorTreePerFieldName(_izContext, fieldName, fieldNameData, {}, bucketName))
149
151
  }
150
152
  )
151
153
  }
@@ -162,7 +164,7 @@ async function generateDeliminatorTreeAllFieldNames(_izContext, objectSchema) {
162
164
  async () => {
163
165
  Object.assign(
164
166
  deliminatorTreeFieldNames,
165
- await generateDeliminatorTreePerFieldName(_izContext, versionedFieldName, versionedDataFieldSetting))
167
+ await generateDeliminatorTreePerFieldName(_izContext, versionedFieldName, versionedDataFieldSetting, {}, bucketName))
166
168
  }
167
169
  )
168
170
  }
@@ -184,7 +186,7 @@ async function generateDeliminatorTreeAllFieldNames(_izContext, objectSchema) {
184
186
  * @param {Object} objectSchema
185
187
  * @returns
186
188
  */
187
- async function generateDeliminatorTreeIdentifier(_izContext, objectSchema) {
189
+ async function generateDeliminatorTreeIdentifier(_izContext, objectSchema, bucketName = OBJECT_SCHEMA_BUCKET_NAME) {
188
190
 
189
191
  let identifiersDeliminatorTree = {};
190
192
 
@@ -199,7 +201,7 @@ async function generateDeliminatorTreeIdentifier(_izContext, objectSchema) {
199
201
 
200
202
  // collect deliminatorTree of composite key
201
203
  await Promise.all(identifier.fieldNames.map(async (compositeKey) => {
202
- let compositeKeyDeliminatortree = await generateDeliminatorTreePerFieldName(_izContext, compositeKey, objectSchema.fieldNames[compositeKey]);
204
+ let compositeKeyDeliminatortree = await generateDeliminatorTreePerFieldName(_izContext, compositeKey, objectSchema.fieldNames[compositeKey], {}, bucketName);
203
205
  _izContext.logger.debug("compositeKeyDeliminatortree each fieldname: ", compositeKeyDeliminatortree);
204
206
  Object.assign(compositeKeysDeliminatorTree, compositeKeyDeliminatortree);
205
207
  }));
@@ -237,7 +239,7 @@ async function generateDeliminatorTreeIdentifier(_izContext, objectSchema) {
237
239
  );
238
240
 
239
241
  } else {
240
- let identifierFieldNameDeliminatorTree = await generateDeliminatorTreePerFieldName(_izContext, identifierName, objectSchema.fieldNames[identifierName]);
242
+ let identifierFieldNameDeliminatorTree = await generateDeliminatorTreePerFieldName(_izContext, identifierName, objectSchema.fieldNames[identifierName], {}, bucketName);
241
243
  Object.assign(identifiersDeliminatorTree, identifierFieldNameDeliminatorTree);
242
244
  }
243
245
  }
@@ -247,9 +249,9 @@ async function generateDeliminatorTreeIdentifier(_izContext, objectSchema) {
247
249
  return identifiersDeliminatorTree
248
250
  }
249
251
 
250
- async function generateDeliminatorCompositeIdentifier(_izContext, objSchema) {
252
+ async function generateDeliminatorCompositeIdentifier(_izContext, objSchema, bucketName = OBJECT_SCHEMA_BUCKET_NAME) {
251
253
 
252
- let deliminatorTreeResult = await generateDeliminatorTreeIdentifier(_izContext, objSchema);
254
+ let deliminatorTreeResult = await generateDeliminatorTreeIdentifier(_izContext, objSchema, bucketName);
253
255
  _izContext.logger.debug("deliminator: ", deliminatorTreeResult);
254
256
 
255
257
 
@@ -20,6 +20,7 @@ along with this program.If not, see < http://www.gnu.org/licenses/>.
20
20
  const { NoRetryError } = require('@izara_project/izara-core-library-core');
21
21
 
22
22
  const deliminatorTree = require("./DeliminatorTree");
23
+ const { OBJECT_SCHEMA_BUCKET_NAME } = require('../Consts');
23
24
 
24
25
 
25
26
  /**
@@ -122,7 +123,7 @@ function explodeDataField(
122
123
  * @param {Object} requestParams
123
124
  * @param {Object} objType
124
125
  */
125
- async function explodedDataForCreate(_izContext, requestParams, objectSchema) {
126
+ async function explodedDataForCreate(_izContext, requestParams, objectSchema, settings = { bucketName: OBJECT_SCHEMA_BUCKET_NAME }) {
126
127
 
127
128
  // ------- validate requestParams -------
128
129
  let errors = [];
@@ -162,7 +163,7 @@ async function explodedDataForCreate(_izContext, requestParams, objectSchema) {
162
163
  fieldNames: {}
163
164
  };
164
165
 
165
- let deliminatorTreeFieldNames = await deliminatorTree.generateDeliminatorTreeAllFieldNames(_izContext, objectSchema);
166
+ let deliminatorTreeFieldNames = await deliminatorTree.generateDeliminatorTreeAllFieldNames(_izContext, objectSchema, settings.bucketName);
166
167
  _izContext.logger.debug("deliminatorTreeFieldNames: ", deliminatorTreeFieldNames);
167
168
 
168
169
  await Promise.all(
@@ -225,7 +226,7 @@ async function explodedDataForCreate(_izContext, requestParams, objectSchema) {
225
226
  * @param {Object} requestParams
226
227
  * @param {Object} objType
227
228
  */
228
- async function explodedDataForIdentifiers(_izContext, requestParams, objectSchema) {
229
+ async function explodedDataForIdentifiers(_izContext, requestParams, objectSchema, settings = { bucketName: OBJECT_SCHEMA_BUCKET_NAME }) {
229
230
  _izContext.logger.debug("explodedDataForIdentifiers: ",
230
231
  { requestParams, objectSchema }
231
232
  );
@@ -280,7 +281,9 @@ async function explodedDataForIdentifiers(_izContext, requestParams, objectSchem
280
281
  await deliminatorTree.generateDeliminatorTreePerFieldName(
281
282
  _izContext,
282
283
  identifierKey,
283
- objectSchema.fieldNames[identifierKey]
284
+ objectSchema.fieldNames[identifierKey],
285
+ {},
286
+ settings.bucketName
284
287
  )
285
288
  );
286
289
 
@@ -337,15 +340,14 @@ async function explodedDataForIdentifiers(_izContext, requestParams, objectSchem
337
340
  return explodedReqParams;
338
341
  }
339
342
 
340
- async function explodedDataForUpdate(_izContext, requestParams, objectSchema, setting) {
343
+ async function explodedDataForUpdate(_izContext, requestParams, objectSchema, settings = { bucketName: OBJECT_SCHEMA_BUCKET_NAME }) {
341
344
  //validate requestParams
342
345
  _izContext.logger.debug("explodedDataForUpdate::",
343
346
  {
344
- requestParams, objectSchema, setting
347
+ requestParams, objectSchema, settings
345
348
  }
346
349
  )
347
-
348
- let errors = [];
350
+ let errorsFound = [];
349
351
 
350
352
  const propertiesTypeForUpdate = {
351
353
  objInstanceFull: {
@@ -370,16 +372,16 @@ async function explodedDataForUpdate(_izContext, requestParams, objectSchema, se
370
372
  for (let prop in propertiesTypeForUpdate) {
371
373
  if (propertiesTypeForUpdate[prop].required === true) {
372
374
  if (!requestParams.hasOwnProperty(prop)) {
373
- errors.push(`Missing require property: ${prop}`);
375
+ errorsFound.push(`Missing require property: ${prop}`);
374
376
  }
375
377
 
376
378
  if (requestParams.hasOwnProperty(prop)) {
377
379
  if (typeof (requestParams[prop]) !== propertiesTypeForUpdate[prop].type) {
378
- errors.push(`property ${prop} type should be ${propertiesTypeForUpdate[prop].type}`);
380
+ errorsFound.push(`property ${prop} type should be ${propertiesTypeForUpdate[prop].type}`);
379
381
  }
380
382
  }
381
383
  if (propertiesTypeForUpdate[prop].type === "object" && requestParams[prop] === null) {
382
- errors.push(`property: ${[prop]} type should be ${propertiesTypeForUpdate[prop].type}`)
384
+ errorsFound.push(`property: ${[prop]} type should be ${propertiesTypeForUpdate[prop].type}`)
383
385
  }
384
386
  }
385
387
  }
@@ -394,14 +396,14 @@ async function explodedDataForUpdate(_izContext, requestParams, objectSchema, se
394
396
  versionedDataIds: {}
395
397
  }
396
398
 
397
- let deliminatorTreeFieldNames = await deliminatorTree.generateDeliminatorTreeAllFieldNames(_izContext, objectSchema)
399
+ let deliminatorTreeFieldNames = await deliminatorTree.generateDeliminatorTreeAllFieldNames(_izContext, objectSchema, settings.bucketName)
398
400
  _izContext.logger.debug("deliminatorTreeFieldNames", deliminatorTreeFieldNames);
399
401
 
400
402
  await Promise.all(
401
403
  Object.entries(requestParams.objInstanceFull.identifiers).map(
402
404
  async ([reqPropKey, reqPropValue]) => {
403
405
  if (!deliminatorTreeFieldNames.hasOwnProperty(reqPropKey)) {
404
- errors.push(`property:${reqPropKey} not match with fieldNames of ObjectSchema`);
406
+ errorsFound.push(`property:${reqPropKey} not match with fieldNames of ObjectSchema`);
405
407
  }
406
408
 
407
409
  let explodedIdentifiers
@@ -415,7 +417,7 @@ async function explodedDataForUpdate(_izContext, requestParams, objectSchema, se
415
417
  }
416
418
  )
417
419
  } catch (err) {
418
- errors.push(err)
420
+ errorsFound.push(err)
419
421
  }
420
422
  _izContext.logger.debug("explodedIdentifiers", explodedIdentifiers)
421
423
  Object.assign(explodedReqParams.objInstanceFull.identifiers, explodedIdentifiers)
@@ -438,7 +440,7 @@ async function explodedDataForUpdate(_izContext, requestParams, objectSchema, se
438
440
  }
439
441
  )
440
442
  } catch (err) {
441
- errors.push(err)
443
+ errorsFound.push(err)
442
444
  }
443
445
  _izContext.logger.debug("explodedField", explodedField)
444
446
  Object.assign(explodedReqParams.objInstanceFull.fields, explodedField)
@@ -23,7 +23,8 @@ const hash = require('@izara_project/izara-shared-core').objectHash;
23
23
  const { NoRetryError } = require('@izara_project/izara-core-library-core');
24
24
  const getObjectSchema = require("../GetObjectSchema");
25
25
  const { validateObjType: { validateObjType } } = require("@izara_project/izara-shared-service-schemas");
26
- const { getObjTypeHierarchy } = require('../GetObjectSchema')
26
+ const { getObjTypeHierarchy } = require('../GetObjectSchema');
27
+ const { OBJECT_SCHEMA_BUCKET_NAME } = require("../Consts");
27
28
  /**
28
29
  * helper function for find link of 2 objects in links and refactor each link
29
30
  *
@@ -31,7 +32,7 @@ const { getObjTypeHierarchy } = require('../GetObjectSchema')
31
32
  * @param {object[]} objTypes - 2 objType in array
32
33
  * @param {object[]} relationshipLinks - links inside relationshipSchema
33
34
  */
34
- async function findLinksByObjTypes(_izContext, objTypes, relationshipLinks) {
35
+ async function findLinksByObjTypes(_izContext, objTypes, relationshipLinks, bucketName = OBJECT_SCHEMA_BUCKET_NAME) {
35
36
 
36
37
  if (!Array.isArray(relationshipLinks)) {
37
38
  throw new NoRetryError("relationshipLinks should be array");
@@ -52,14 +53,14 @@ async function findLinksByObjTypes(_izContext, objTypes, relationshipLinks) {
52
53
  const secondObjType = objTypes[1];
53
54
 
54
55
  // first create hierarchy of each objType
55
- const firstObjTypeTree = await getObjTypeHierarchy(_izContext, objTypes[0]).then(objSchema => {
56
+ const firstObjTypeTree = await getObjTypeHierarchy(_izContext, objTypes[0], bucketName).then(objSchema => {
56
57
  if (objSchema.errorsFound.length > 0) {
57
58
  throw new NoRetryError(objSchema.errorsFound.join(","))
58
59
  } else {
59
60
  return objSchema.result
60
61
  }
61
62
  });
62
- const secondObjTypeTree = await getObjTypeHierarchy(_izContext, objTypes[1]).then(objSchema => {
63
+ const secondObjTypeTree = await getObjTypeHierarchy(_izContext, objTypes[1], bucketName).then(objSchema => {
63
64
  if (objSchema.errorsFound.length > 0) {
64
65
  throw new NoRetryError(objSchema.errorsFound.join(","))
65
66
  } else {
@@ -383,6 +383,10 @@ function generateLinksDataPerLinkTypeId(_izContext, relationshipTag, relationshi
383
383
  from: link.from,
384
384
  to: link.to
385
385
  };
386
+
387
+ if (link.requestProperties) {
388
+ linksData[linkTypeId].requestProperties = link.requestProperties
389
+ }
386
390
  }
387
391
 
388
392
  return linksData;
@@ -60,7 +60,9 @@ async function getObjectS3Shared(param) {
60
60
  return object;
61
61
  }
62
62
 
63
- async function getSchemaByName(params) {
63
+
64
+
65
+ async function getSchemaByName(params, bucketName = OBJECT_SCHEMA_BUCKET_NAME) {
64
66
  if (!params.schemaName || !params.getParams) {
65
67
  throw new NoRetryError(`getSchemaByName invalid parameters`);
66
68
  }
@@ -71,7 +73,7 @@ async function getSchemaByName(params) {
71
73
 
72
74
  // build params for getObjectS3
73
75
  let getDataParam = {
74
- Bucket: OBJECT_SCHEMA_BUCKET_NAME,
76
+ Bucket: bucketName,
75
77
  Key: SCHEMA_NAME_PER_S3_PATH[params.schemaName](params.getParams)
76
78
  };
77
79