-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathgeneralHelper.js
More file actions
67 lines (56 loc) · 2.11 KB
/
Copy pathgeneralHelper.js
File metadata and controls
67 lines (56 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const _ = require('lodash');
const { getName, prepareName } = require('../generalHelper');
const getContainerName = compMod => compMod.keyspaceName;
const getEntityData = (object, properties = [], type = 'new') =>
properties.reduce((transformObject, property) => {
const value = object[property]?.[type];
return {
...transformObject,
...(value ? { [property]: value } : {}),
};
}, {});
const getFullEntityName = (dbName, entityName) => (dbName ? `${dbName}.${entityName}` : entityName);
const generateFullEntityName = entity => {
const compMod = _.get(entity, 'role.compMod', {});
const entityData = _.get(entity, 'role', {});
const dbName = prepareName(getContainerName(compMod));
const entityName = prepareName(getName(entityData));
return getFullEntityName(dbName, entityName);
};
const getEntityProperties = entity => {
const propertiesInRole = _.get(entity, 'role.properties', {});
const propertiesInEntity = _.get(entity, 'properties', {});
return { ...propertiesInEntity, ...propertiesInRole };
};
const getEntityName = (compMod = {}, type = 'collectionName') => {
return {
oldName: prepareName(compMod.code?.old || compMod[type]?.old),
newName: prepareName(compMod.code?.new || compMod[type]?.new),
};
};
const prepareScript = (...scripts) => scripts.filter(Boolean);
const isEqualProperty = (compMod, nameProperty) => {
const { new: newProperty, old: oldProperty } = _.get(compMod, nameProperty, {});
return _.isEqual(newProperty, oldProperty);
};
const hydrateProperty = (entity, compMod, nameProperty) => {
return isEqualProperty(compMod, nameProperty) ? null : entity?.role?.[nameProperty];
};
const getDefaultConstraintName = ({ collection, column = {}, postfix }) => {
const entityData = collection?.role || {};
const entityName = prepareName(getName(entityData));
const columnName = prepareName(getName(column));
return [entityName, columnName, postfix].filter(Boolean).join('_');
};
module.exports = {
getEntityData,
getFullEntityName,
generateFullEntityName,
getEntityProperties,
getContainerName,
getEntityName,
prepareScript,
isEqualProperty,
hydrateProperty,
getDefaultConstraintName,
};