@autofleet/sadot 0.0.1-beta → 0.0.1-beta.0

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 (152) hide show
  1. package/dist/{src/api → api}/index.js +1 -0
  2. package/dist/api/index.js.map +1 -0
  3. package/dist/{src/api → api}/v1/definition/index.js +28 -25
  4. package/dist/api/v1/definition/index.js.map +1 -0
  5. package/dist/api/v1/definition/validations.js +36 -0
  6. package/dist/api/v1/definition/validations.js.map +1 -0
  7. package/dist/{src/api → api}/v1/errors.js +1 -0
  8. package/dist/api/v1/errors.js.map +1 -0
  9. package/dist/{src/api → api}/v1/index.js +2 -1
  10. package/dist/api/v1/index.js.map +1 -0
  11. package/dist/{src/events → events}/index.js +2 -21
  12. package/dist/events/index.js.map +1 -0
  13. package/dist/{src/hooks → hooks}/create.js +18 -15
  14. package/dist/hooks/create.js.map +1 -0
  15. package/dist/{src/hooks/enrich.js → hooks/find.js} +29 -52
  16. package/dist/hooks/find.js.map +1 -0
  17. package/dist/{src/hooks → hooks}/index.js +4 -5
  18. package/dist/hooks/index.js.map +1 -0
  19. package/dist/{src/hooks → hooks}/update.js +23 -8
  20. package/dist/hooks/update.js.map +1 -0
  21. package/dist/{src/hooks → hooks}/workaround.js +15 -5
  22. package/dist/hooks/workaround.js.map +1 -0
  23. package/dist/index.js +80 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/{src/models → models}/CustomFieldDefinition.js +17 -22
  26. package/dist/models/CustomFieldDefinition.js.map +1 -0
  27. package/dist/{src/models → models}/CustomFieldValue.js +39 -24
  28. package/dist/models/CustomFieldValue.js.map +1 -0
  29. package/dist/models/index.js +50 -0
  30. package/dist/models/index.js.map +1 -0
  31. package/dist/{src/models → models}/tests/AssociatedTestModel.js +1 -0
  32. package/dist/models/tests/AssociatedTestModel.js.map +1 -0
  33. package/dist/{src/models → models}/tests/TestModel.js +1 -0
  34. package/dist/models/tests/TestModel.js.map +1 -0
  35. package/dist/repository/definition.js +107 -0
  36. package/dist/repository/definition.js.map +1 -0
  37. package/dist/{src/repository → repository}/value.js +36 -27
  38. package/dist/repository/value.js.map +1 -0
  39. package/dist/{src/tests → tests}/api/test-api.js +22 -12
  40. package/dist/tests/api/test-api.js.map +1 -0
  41. package/dist/tests/helpers/index.js +28 -0
  42. package/dist/tests/helpers/index.js.map +1 -0
  43. package/dist/tests/mocks/index.js +60 -0
  44. package/dist/tests/mocks/index.js.map +1 -0
  45. package/dist/{src/tests → tests}/mocks/testModel.js +18 -10
  46. package/dist/tests/mocks/testModel.js.map +1 -0
  47. package/dist/tsconfig.tsbuildinfo +1 -0
  48. package/dist/{src/types → types}/definition/index.js +1 -0
  49. package/dist/types/definition/index.js.map +1 -0
  50. package/dist/{src/types → types}/index.js +1 -0
  51. package/dist/types/index.js.map +1 -0
  52. package/dist/{src/types → types}/value/index.js +1 -0
  53. package/dist/types/value/index.js.map +1 -0
  54. package/dist/{src/utils → utils}/db/index.js +1 -8
  55. package/dist/utils/db/index.js.map +1 -0
  56. package/dist/{src/utils → utils}/logger/index.js +2 -2
  57. package/dist/utils/logger/index.js.map +1 -0
  58. package/dist/{src/utils → utils}/validations/custom-fields.js +1 -0
  59. package/dist/utils/validations/custom-fields.js.map +1 -0
  60. package/dist/utils/validations/custom.js +58 -0
  61. package/dist/utils/validations/custom.js.map +1 -0
  62. package/dist/{src/utils → utils}/validations/index.js +1 -0
  63. package/dist/utils/validations/index.js.map +1 -0
  64. package/dist/utils/validations/type.js +32 -0
  65. package/dist/utils/validations/type.js.map +1 -0
  66. package/package.json +5 -12
  67. package/src/api/v1/definition/index.ts +13 -20
  68. package/src/api/v1/definition/validations.ts +27 -13
  69. package/src/api/v1/index.ts +1 -1
  70. package/src/events/index.ts +1 -23
  71. package/src/hooks/create.ts +6 -12
  72. package/src/hooks/find.ts +82 -23
  73. package/src/hooks/index.ts +2 -4
  74. package/src/hooks/update.ts +11 -5
  75. package/src/hooks/workaround.ts +2 -2
  76. package/src/index.ts +17 -60
  77. package/src/models/CustomFieldDefinition.ts +15 -23
  78. package/src/models/CustomFieldValue.ts +10 -10
  79. package/src/models/index.ts +17 -79
  80. package/src/models/tests/AssociatedTestModel.ts +1 -0
  81. package/src/models/tests/TestModel.ts +1 -0
  82. package/src/repository/definition.ts +41 -27
  83. package/src/repository/value.ts +11 -12
  84. package/src/tests/mocks/events.mock.ts +1 -1
  85. package/src/tests/mocks/{definition.mock.ts → index.ts} +6 -5
  86. package/src/tests/mocks/testModel.ts +7 -12
  87. package/src/types/definition/index.ts +1 -0
  88. package/src/types/index.ts +6 -4
  89. package/src/types/value/index.ts +2 -1
  90. package/src/utils/db/index.ts +0 -7
  91. package/src/utils/logger/index.ts +1 -3
  92. package/src/utils/validations/custom.ts +45 -28
  93. package/src/utils/validations/type.ts +6 -23
  94. package/tsconfig.json +26 -9
  95. package/dist/jest.config.d.ts +0 -12
  96. package/dist/src/api/index.d.ts +0 -2
  97. package/dist/src/api/v1/definition/index.d.ts +0 -2
  98. package/dist/src/api/v1/definition/validations.d.ts +0 -2
  99. package/dist/src/api/v1/definition/validations.js +0 -36
  100. package/dist/src/api/v1/errors.d.ts +0 -2
  101. package/dist/src/api/v1/index.d.ts +0 -2
  102. package/dist/src/errors/index.d.ts +0 -16
  103. package/dist/src/errors/index.js +0 -45
  104. package/dist/src/events/index.d.ts +0 -4
  105. package/dist/src/hooks/create.d.ts +0 -9
  106. package/dist/src/hooks/enrich.d.ts +0 -5
  107. package/dist/src/hooks/find.d.ts +0 -1
  108. package/dist/src/hooks/find.js +0 -29
  109. package/dist/src/hooks/index.d.ts +0 -6
  110. package/dist/src/hooks/update.d.ts +0 -9
  111. package/dist/src/hooks/workaround.d.ts +0 -10
  112. package/dist/src/index.d.ts +0 -11
  113. package/dist/src/index.js +0 -105
  114. package/dist/src/models/CustomFieldDefinition.d.ts +0 -23
  115. package/dist/src/models/CustomFieldValue.d.ts +0 -15
  116. package/dist/src/models/index.d.ts +0 -8
  117. package/dist/src/models/index.js +0 -87
  118. package/dist/src/models/tests/AssociatedTestModel.d.ts +0 -12
  119. package/dist/src/models/tests/TestModel.d.ts +0 -11
  120. package/dist/src/repository/definition.d.ts +0 -17
  121. package/dist/src/repository/definition.js +0 -80
  122. package/dist/src/repository/value.d.ts +0 -24
  123. package/dist/src/tests/api/test-api.d.ts +0 -2
  124. package/dist/src/tests/helpers/database-config.d.ts +0 -15
  125. package/dist/src/tests/helpers/database-config.js +0 -16
  126. package/dist/src/tests/helpers/index.d.ts +0 -2
  127. package/dist/src/tests/helpers/index.js +0 -18
  128. package/dist/src/tests/mocks/definition.mock.d.ts +0 -37
  129. package/dist/src/tests/mocks/definition.mock.js +0 -64
  130. package/dist/src/tests/mocks/events.mock.d.ts +0 -3
  131. package/dist/src/tests/mocks/events.mock.js +0 -19
  132. package/dist/src/tests/mocks/testModel.d.ts +0 -12
  133. package/dist/src/types/definition/index.d.ts +0 -23
  134. package/dist/src/types/index.d.ts +0 -13
  135. package/dist/src/types/value/index.d.ts +0 -15
  136. package/dist/src/utils/constants/index.d.ts +0 -1
  137. package/dist/src/utils/constants/index.js +0 -5
  138. package/dist/src/utils/db/index.d.ts +0 -4
  139. package/dist/src/utils/logger/index.d.ts +0 -2
  140. package/dist/src/utils/validations/custom-fields.d.ts +0 -2
  141. package/dist/src/utils/validations/custom.d.ts +0 -15
  142. package/dist/src/utils/validations/custom.js +0 -42
  143. package/dist/src/utils/validations/index.d.ts +0 -2
  144. package/dist/src/utils/validations/type.d.ts +0 -18
  145. package/dist/src/utils/validations/type.js +0 -50
  146. package/dist/src/utils/validations/validators.d.ts +0 -12
  147. package/dist/src/utils/validations/validators.js +0 -33
  148. package/src/errors/index.ts +0 -42
  149. package/src/hooks/enrich.ts +0 -125
  150. package/src/tests/helpers/database-config.ts +0 -14
  151. package/src/utils/constants/index.ts +0 -2
  152. package/src/utils/validations/validators.ts +0 -34
@@ -1,125 +0,0 @@
1
- /* eslint-disable no-param-reassign */
2
- import * as ValueRepo from '../repository/value';
3
- import * as DefinitionRepo from '../repository/definition';
4
- import CustomFieldValue from '../models/CustomFieldValue';
5
- import CustomFieldDefinition from '../models/CustomFieldDefinition';
6
- import { SerializedCustomFields } from '../types/definition';
7
- import logger from '../utils/logger';
8
-
9
- /**
10
- * Serialize custom fields value into the format of {[name] -> [fieldData]}
11
- */
12
- const serializeCustomFields = (
13
- customFieldValues: CustomFieldValue[],
14
- customFieldDefinitionsHash: Record<string, CustomFieldDefinition>,
15
- ): SerializedCustomFields => {
16
- const customFields = customFieldValues.reduce((acc, cfv) => ({
17
- ...acc,
18
- ...(
19
- customFieldDefinitionsHash[cfv.customFieldDefinitionId]
20
- && { [customFieldDefinitionsHash[cfv.customFieldDefinitionId].name]: cfv.value }
21
- ),
22
- }), {});
23
- return customFields;
24
- };
25
- /**
26
- * A hook to attach the custom fields when fetching a model instances.
27
- */
28
- const enrichResults = (modelType: string, scopeAttributes: string[]) => async (
29
- instancesOrInstance: any | any[],
30
- options,
31
- ): Promise<void> => {
32
- if (
33
- options.originalAttributes?.length > 0
34
- && !options.originalAttributes?.includes?.('customFields')
35
- ) {
36
- return;
37
- }
38
-
39
- const primaryKey = 'id';
40
- let instances = Array.isArray(instancesOrInstance)
41
- ? instancesOrInstance
42
- : [instancesOrInstance];
43
-
44
- instances = instances.filter(Boolean);
45
-
46
- const identifiers = instances.map((instance) =>
47
- scopeAttributes
48
- .map((attr) => instance[attr])).flat();
49
-
50
- const uniqueIdentifiers = [...new Set(identifiers)].filter(Boolean);
51
- const identifierCustomFieldDefinitionsMapping = uniqueIdentifiers.reduce((map, identifier) => ({
52
- ...map,
53
- [identifier]: [],
54
- }), {});
55
- const customFieldDefinitions = await DefinitionRepo.findByEntityIds(
56
- modelType,
57
- uniqueIdentifiers,
58
- { transaction: options.transaction },
59
- );
60
-
61
- const definitionsMap = customFieldDefinitions.reduce((map, definition) => ({
62
- ...map,
63
- [definition.id]: definition,
64
- }), {});
65
-
66
- customFieldDefinitions.forEach((cfd) => {
67
- identifierCustomFieldDefinitionsMapping[cfd.entityId].push(cfd);
68
- });
69
-
70
- // Get the values per instates ids:
71
- const instancesIds = instances.map((i) => i[primaryKey]);
72
-
73
- const customFieldValues = await ValueRepo.findValuesByModelIds(
74
- instancesIds,
75
- { transaction: options.transaction },
76
- );
77
-
78
- // Group fields by modelId
79
- const valuesGroupByInstance: {
80
- [modelId: string]: CustomFieldValue[];
81
- } = customFieldValues.reduce((acc, v) => {
82
- const { modelId } = v;
83
- if (!acc[modelId]) {
84
- acc[modelId] = [];
85
- }
86
- acc[modelId].push(v);
87
- return acc;
88
- }, {});
89
-
90
- // Attach custom fields to the instances
91
- instances.forEach((instance) => {
92
- const customFields = {};
93
- const { id } = instance;
94
- const instanceValues = valuesGroupByInstance[id];
95
- if (instanceValues) {
96
- const serializedCustomFields = serializeCustomFields(instanceValues, definitionsMap);
97
- Object.assign(customFields, serializedCustomFields);
98
- }
99
-
100
- scopeAttributes.forEach((attribute) => {
101
- const identifier = instance[attribute];
102
- const entityCustomFieldDefinitions = identifierCustomFieldDefinitionsMapping[identifier];
103
- if (entityCustomFieldDefinitions?.length > 0) {
104
- entityCustomFieldDefinitions.forEach((customFieldDefinition) => {
105
- if (customFields[customFieldDefinition.name] === undefined) {
106
- customFields[customFieldDefinition.name] = null;
107
- }
108
- });
109
- }
110
- });
111
- if (customFields && Object.keys(customFields).length > 0) {
112
- logger.info('sadot - enrichResults - customFields', customFields);
113
- instance.customFields = customFields;
114
- } else {
115
- logger.info('sadot - enrichResults - no customFields');
116
- }
117
- options.attributesToRemove?.forEach?.((attribute) => {
118
- delete instance.dataValues?.[attribute];
119
- // if raw:
120
- delete instance?.[attribute];
121
- });
122
- });
123
- };
124
-
125
- export default enrichResults;
@@ -1,14 +0,0 @@
1
- export default {
2
- test: {
3
- username: process.env.DB_USERNAME || '',
4
- password: process.env.DB_PASSWORD || null,
5
- database: process.env.DB_NAME || 'sadot_package_test',
6
- host: process.env.DB_HOST || '127.0.0.1',
7
- dialect: process.env.DB_TYPE || 'postgres',
8
- define: {
9
- underscored: true,
10
- underscoredAll: true,
11
- },
12
- logging: false,
13
- },
14
- };
@@ -1,2 +0,0 @@
1
- // eslint-disable-next-line import/prefer-default-export
2
- export const supportedEntities = ['businessModelId', 'fleetId', 'demandSourceId'];
@@ -1,34 +0,0 @@
1
- // eslint-disable-next-line no-shadow
2
- export enum CustomValidations {
3
- SELECT = 'select',
4
- RANGE = 'between'
5
- }
6
-
7
- type Validator = (value, validation) => boolean;
8
- /**
9
- * Validate {@link CustomValidations.ENUM Enum}
10
- */
11
- const validateEnum: Validator = (value, enumValues) => (Array.isArray(enumValues)
12
- && enumValues.length > 0
13
- && enumValues.includes(value)
14
- );
15
- /**
16
- * Validate {@link CustomValidations.RANGE Range}
17
- */
18
- const validateRange: Validator = (value, range) => {
19
- const [min, max] = range;
20
- if (min === undefined || max === undefined) {
21
- return false;
22
- }
23
- return value >= range.min && value <= range.max;
24
- };
25
-
26
- /**
27
- * Validators for custom fields
28
- */
29
- const validators: { [key: string]: Validator } = {
30
- [CustomValidations.SELECT]: validateEnum,
31
- [CustomValidations.RANGE]: validateRange,
32
- };
33
-
34
- export default validators;