@autofleet/sadot 1.1.6 → 1.1.7-beta
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.
- package/.nvmrc +1 -0
- package/dist/api/index.d.ts +3 -0
- package/dist/api/index.js +12 -2
- package/dist/api/v1/definition/index.d.ts +3 -0
- package/dist/api/v1/definition/index.js +116 -2
- package/dist/api/v1/definition/validations.d.ts +2 -0
- package/dist/api/v1/definition/validations.js +77 -2
- package/dist/api/v1/errors.d.ts +4 -0
- package/dist/api/v1/errors.js +12 -2
- package/dist/api/v1/index.d.ts +3 -0
- package/dist/api/v1/index.js +13 -2
- package/dist/api/v1/validator/index.d.ts +3 -0
- package/dist/api/v1/validator/index.js +143 -2
- package/dist/api/v1/validator/validations.d.ts +6 -23
- package/dist/api/v1/validator/validations.js +38 -2
- package/dist/errors/index.d.ts +24 -0
- package/dist/errors/index.js +66 -3
- package/dist/events/index.d.ts +5 -0
- package/dist/events/index.js +54 -2
- package/dist/hooks/create.d.ts +10 -0
- package/dist/hooks/create.js +95 -0
- package/dist/hooks/enrich.d.ts +25 -0
- package/dist/hooks/enrich.js +198 -2
- package/dist/hooks/find.d.ts +1 -0
- package/dist/hooks/find.js +29 -2
- package/dist/hooks/hooks.d.ts +17 -0
- package/dist/hooks/hooks.js +388 -2
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/index.js +17 -1
- package/dist/hooks/update.d.ts +10 -0
- package/dist/hooks/update.js +49 -0
- package/dist/hooks/utils/updateInstanceValues.d.ts +15 -0
- package/dist/hooks/utils/updateInstanceValues.js +50 -2
- package/dist/hooks/workaround.d.ts +10 -0
- package/dist/hooks/workaround.js +37 -0
- package/dist/index.d.ts +12 -22
- package/dist/index.js +67 -2
- package/dist/models/CustomFieldDefinition.d.ts +23 -29
- package/dist/models/CustomFieldDefinition.js +192 -2
- package/dist/models/CustomFieldEntries.d.ts +13 -14
- package/dist/models/CustomFieldEntries.js +123 -2
- package/dist/models/CustomFieldValue.d.ts +14 -20
- package/dist/models/CustomFieldValue.js +151 -2
- package/dist/models/CustomValidator.d.ts +15 -17
- package/dist/models/CustomValidator.js +98 -2
- package/dist/models/index.d.ts +18 -6
- package/dist/models/index.js +131 -2
- package/dist/models/tests/AssociatedTestModel.d.ts +12 -0
- package/dist/models/tests/AssociatedTestModel.js +71 -2
- package/dist/models/tests/TestModel.d.ts +12 -0
- package/dist/models/tests/TestModel.js +69 -2
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.d.ts +10 -0
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js +53 -2
- package/dist/models/tests/contextAwareModels/ContextTestModel.d.ts +13 -0
- package/dist/models/tests/contextAwareModels/ContextTestModel.js +47 -2
- package/dist/repository/definition.d.ts +36 -0
- package/dist/repository/definition.js +121 -2
- package/dist/repository/entries.d.ts +13 -0
- package/dist/repository/entries.js +92 -2
- package/dist/repository/utils/formatValues.d.ts +3 -0
- package/dist/repository/utils/formatValues.js +16 -2
- package/dist/repository/validator.d.ts +28 -0
- package/dist/repository/validator.js +69 -2
- package/dist/repository/value.d.ts +28 -0
- package/dist/repository/value.js +124 -2
- package/dist/scopes/filter.d.ts +29 -22
- package/dist/scopes/filter.js +75 -2
- package/dist/scopes/helpers/filter.helpers.d.ts +40 -15
- package/dist/scopes/helpers/filter.helpers.js +183 -25
- package/dist/scopes/index.d.ts +2 -0
- package/dist/scopes/index.js +6 -1
- package/dist/tests/api/test-api.d.ts +2 -0
- package/dist/tests/api/test-api.js +38 -0
- package/dist/tests/functional/searching/index.d.ts +8 -0
- package/dist/tests/functional/searching/index.js +44 -0
- package/dist/tests/helpers/commonHooks.d.ts +6 -0
- package/dist/tests/helpers/commonHooks.js +62 -0
- package/dist/tests/helpers/database-config.d.ts +16 -0
- package/dist/tests/helpers/database-config.js +17 -0
- package/dist/tests/helpers/index.d.ts +7 -0
- package/dist/tests/helpers/index.js +33 -0
- package/dist/tests/mocks/definition.mock.d.ts +48 -0
- package/dist/tests/mocks/definition.mock.js +78 -0
- package/dist/tests/mocks/events.mock.d.ts +4 -0
- package/dist/tests/mocks/events.mock.js +21 -0
- package/dist/tests/mocks/testModel.d.ts +12 -0
- package/dist/tests/mocks/testModel.js +35 -0
- package/dist/types/definition/index.d.ts +25 -0
- package/dist/types/definition/index.js +2 -0
- package/dist/types/entries/index.d.ts +25 -0
- package/dist/types/entries/index.js +2 -0
- package/dist/types/index.d.ts +46 -45
- package/dist/types/index.js +2 -0
- package/dist/types/value/index.d.ts +15 -0
- package/dist/types/value/index.js +2 -0
- package/dist/utils/constants/index.d.ts +17 -20
- package/dist/utils/constants/index.js +22 -2
- package/dist/utils/db/index.d.ts +4 -0
- package/dist/utils/db/index.js +24 -2
- package/dist/utils/helpers/index.d.ts +23 -28
- package/dist/utils/helpers/index.js +40 -2
- package/dist/utils/init.d.ts +7 -0
- package/dist/utils/init.js +112 -2
- package/dist/utils/logger/index.d.ts +3 -0
- package/dist/utils/logger/index.js +42 -2
- package/dist/utils/scopeAttributes.d.ts +2 -0
- package/dist/utils/scopeAttributes.js +11 -2
- package/dist/utils/validations/index.d.ts +8 -0
- package/dist/utils/validations/index.js +41 -2
- package/dist/utils/validations/schema/custom-fields.d.ts +2 -6
- package/dist/utils/validations/schema/custom-fields.js +9 -2
- package/dist/utils/validations/schema/validator-schema.d.ts +9 -0
- package/dist/utils/validations/schema/validator-schema.js +95 -2
- package/dist/utils/validations/type.d.ts +15 -0
- package/dist/utils/validations/type.js +2 -0
- package/dist/utils/validations/validators/index.d.ts +14 -0
- package/dist/utils/validations/validators/index.js +40 -2
- package/dist/utils/validations/validators/select.validator.d.ts +5 -0
- package/dist/utils/validations/validators/select.validator.js +12 -2
- package/dist/utils/validations/validators/status.validator.d.ts +12 -0
- package/dist/utils/validations/validators/status.validator.js +15 -2
- package/package.json +39 -40
- package/src/api/index.ts +10 -0
- package/src/api/v1/definition/index.ts +104 -0
- package/src/api/v1/definition/validations.ts +75 -0
- package/src/api/v1/errors.ts +13 -0
- package/src/api/v1/index.ts +11 -0
- package/src/api/v1/validator/index.ts +141 -0
- package/src/api/v1/validator/validations.ts +38 -0
- package/src/errors/index.ts +70 -0
- package/src/events/index.ts +63 -0
- package/src/hooks/create.ts +81 -0
- package/src/hooks/enrich.ts +255 -0
- package/src/hooks/find.ts +27 -0
- package/src/hooks/hooks.ts +479 -0
- package/src/hooks/index.ts +20 -0
- package/src/hooks/update.ts +55 -0
- package/src/hooks/utils/updateInstanceValues.ts +63 -0
- package/src/hooks/workaround.ts +47 -0
- package/src/index.ts +52 -0
- package/src/models/CustomFieldDefinition.ts +162 -0
- package/src/models/CustomFieldEntries.ts +81 -0
- package/src/models/CustomFieldValue.ts +118 -0
- package/src/models/CustomValidator.ts +78 -0
- package/src/models/index.ts +165 -0
- package/src/models/tests/AssociatedTestModel.ts +57 -0
- package/src/models/tests/TestModel.ts +54 -0
- package/src/models/tests/contextAwareModels/ContextAwareTestModel.ts +43 -0
- package/src/models/tests/contextAwareModels/ContextTestModel.ts +38 -0
- package/src/repository/definition.ts +175 -0
- package/src/repository/entries.ts +88 -0
- package/src/repository/utils/formatValues.ts +14 -0
- package/src/repository/validator.ts +119 -0
- package/src/repository/value.ts +116 -0
- package/src/scopes/filter.ts +100 -0
- package/src/scopes/helpers/filter.helpers.ts +227 -0
- package/src/scopes/index.ts +6 -0
- package/src/tests/api/test-api.ts +40 -0
- package/src/tests/functional/searching/index.ts +39 -0
- package/src/tests/helpers/commonHooks.ts +43 -0
- package/src/tests/helpers/database-config.ts +15 -0
- package/src/tests/helpers/index.ts +35 -0
- package/src/tests/mocks/definition.mock.ts +84 -0
- package/src/tests/mocks/events.mock.ts +21 -0
- package/src/tests/mocks/testModel.ts +37 -0
- package/src/types/definition/index.ts +24 -0
- package/src/types/entries/index.ts +27 -0
- package/src/types/index.ts +52 -0
- package/src/types/value/index.ts +14 -0
- package/src/utils/constants/index.ts +25 -0
- package/src/utils/db/index.ts +21 -0
- package/src/utils/helpers/index.ts +66 -0
- package/src/utils/init.ts +122 -0
- package/src/utils/logger/index.ts +14 -0
- package/src/utils/scopeAttributes.ts +12 -0
- package/src/utils/validations/index.ts +46 -0
- package/src/utils/validations/schema/README.md +93 -0
- package/src/utils/validations/schema/custom-fields.ts +8 -0
- package/src/utils/validations/schema/validator-schema.ts +106 -0
- package/src/utils/validations/type.ts +20 -0
- package/src/utils/validations/validators/index.ts +38 -0
- package/src/utils/validations/validators/select.validator.ts +12 -0
- package/src/utils/validations/validators/status.validator.ts +22 -0
- package/tsconfig.build.json +7 -0
- package/tsconfig.json +16 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.cjs +0 -1
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js +0 -1
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.cjs +0 -1
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.js +0 -1
- package/dist/_virtual/rolldown_runtime.cjs +0 -1
- package/dist/api/index.cjs +0 -2
- package/dist/api/index.cjs.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/v1/definition/index.cjs +0 -2
- package/dist/api/v1/definition/index.cjs.map +0 -1
- package/dist/api/v1/definition/index.js.map +0 -1
- package/dist/api/v1/definition/validations.cjs +0 -2
- package/dist/api/v1/definition/validations.cjs.map +0 -1
- package/dist/api/v1/definition/validations.js.map +0 -1
- package/dist/api/v1/errors.cjs +0 -2
- package/dist/api/v1/errors.cjs.map +0 -1
- package/dist/api/v1/errors.js.map +0 -1
- package/dist/api/v1/index.cjs +0 -2
- package/dist/api/v1/index.cjs.map +0 -1
- package/dist/api/v1/index.js.map +0 -1
- package/dist/api/v1/validator/index.cjs +0 -2
- package/dist/api/v1/validator/index.cjs.map +0 -1
- package/dist/api/v1/validator/index.js.map +0 -1
- package/dist/api/v1/validator/validations.cjs +0 -2
- package/dist/api/v1/validator/validations.cjs.map +0 -1
- package/dist/api/v1/validator/validations.d.cts +0 -23
- package/dist/api/v1/validator/validations.js.map +0 -1
- package/dist/errors/index.cjs +0 -3
- package/dist/errors/index.cjs.map +0 -1
- package/dist/errors/index.js.map +0 -1
- package/dist/events/index.cjs +0 -2
- package/dist/events/index.cjs.map +0 -1
- package/dist/events/index.js.map +0 -1
- package/dist/hooks/enrich.cjs +0 -2
- package/dist/hooks/enrich.cjs.map +0 -1
- package/dist/hooks/enrich.js.map +0 -1
- package/dist/hooks/find.cjs +0 -2
- package/dist/hooks/find.cjs.map +0 -1
- package/dist/hooks/find.js.map +0 -1
- package/dist/hooks/hooks.cjs +0 -2
- package/dist/hooks/hooks.cjs.map +0 -1
- package/dist/hooks/hooks.js.map +0 -1
- package/dist/hooks/index.cjs +0 -1
- package/dist/hooks/utils/updateInstanceValues.cjs +0 -2
- package/dist/hooks/utils/updateInstanceValues.cjs.map +0 -1
- package/dist/hooks/utils/updateInstanceValues.js.map +0 -1
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -23
- package/dist/index.js.map +0 -1
- package/dist/models/CustomFieldDefinition.cjs +0 -2
- package/dist/models/CustomFieldDefinition.cjs.map +0 -1
- package/dist/models/CustomFieldDefinition.d.cts +0 -31
- package/dist/models/CustomFieldDefinition.js.map +0 -1
- package/dist/models/CustomFieldEntries.cjs +0 -2
- package/dist/models/CustomFieldEntries.cjs.map +0 -1
- package/dist/models/CustomFieldEntries.d.cts +0 -16
- package/dist/models/CustomFieldEntries.js.map +0 -1
- package/dist/models/CustomFieldValue.cjs +0 -2
- package/dist/models/CustomFieldValue.cjs.map +0 -1
- package/dist/models/CustomFieldValue.d.cts +0 -22
- package/dist/models/CustomFieldValue.js.map +0 -1
- package/dist/models/CustomValidator.cjs +0 -2
- package/dist/models/CustomValidator.cjs.map +0 -1
- package/dist/models/CustomValidator.d.cts +0 -19
- package/dist/models/CustomValidator.js.map +0 -1
- package/dist/models/index.cjs +0 -2
- package/dist/models/index.cjs.map +0 -1
- package/dist/models/index.d.cts +0 -6
- package/dist/models/index.js.map +0 -1
- package/dist/models/tests/AssociatedTestModel.cjs +0 -2
- package/dist/models/tests/AssociatedTestModel.cjs.map +0 -1
- package/dist/models/tests/AssociatedTestModel.js.map +0 -1
- package/dist/models/tests/TestModel.cjs +0 -2
- package/dist/models/tests/TestModel.cjs.map +0 -1
- package/dist/models/tests/TestModel.js.map +0 -1
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs +0 -2
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs.map +0 -1
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js.map +0 -1
- package/dist/models/tests/contextAwareModels/ContextTestModel.cjs +0 -2
- package/dist/models/tests/contextAwareModels/ContextTestModel.cjs.map +0 -1
- package/dist/models/tests/contextAwareModels/ContextTestModel.js.map +0 -1
- package/dist/repository/definition.cjs +0 -2
- package/dist/repository/definition.cjs.map +0 -1
- package/dist/repository/definition.js.map +0 -1
- package/dist/repository/entries.cjs +0 -2
- package/dist/repository/entries.cjs.map +0 -1
- package/dist/repository/entries.js.map +0 -1
- package/dist/repository/utils/formatValues.cjs +0 -2
- package/dist/repository/utils/formatValues.cjs.map +0 -1
- package/dist/repository/utils/formatValues.js.map +0 -1
- package/dist/repository/validator.cjs +0 -2
- package/dist/repository/validator.cjs.map +0 -1
- package/dist/repository/validator.js.map +0 -1
- package/dist/repository/value.cjs +0 -2
- package/dist/repository/value.cjs.map +0 -1
- package/dist/repository/value.js.map +0 -1
- package/dist/scopes/filter.cjs +0 -2
- package/dist/scopes/filter.cjs.map +0 -1
- package/dist/scopes/filter.d.cts +0 -23
- package/dist/scopes/filter.js.map +0 -1
- package/dist/scopes/helpers/filter.helpers.cjs +0 -46
- package/dist/scopes/helpers/filter.helpers.cjs.map +0 -1
- package/dist/scopes/helpers/filter.helpers.d.cts +0 -17
- package/dist/scopes/helpers/filter.helpers.js.map +0 -1
- package/dist/scopes/index.cjs +0 -1
- package/dist/types/index.d.cts +0 -45
- package/dist/utils/constants/index.cjs +0 -2
- package/dist/utils/constants/index.cjs.map +0 -1
- package/dist/utils/constants/index.d.cts +0 -22
- package/dist/utils/constants/index.js.map +0 -1
- package/dist/utils/db/index.cjs +0 -2
- package/dist/utils/db/index.cjs.map +0 -1
- package/dist/utils/db/index.js.map +0 -1
- package/dist/utils/helpers/index.cjs +0 -2
- package/dist/utils/helpers/index.cjs.map +0 -1
- package/dist/utils/helpers/index.d.cts +0 -31
- package/dist/utils/helpers/index.js.map +0 -1
- package/dist/utils/init.cjs +0 -2
- package/dist/utils/init.cjs.map +0 -1
- package/dist/utils/init.js.map +0 -1
- package/dist/utils/logger/index.cjs +0 -2
- package/dist/utils/logger/index.cjs.map +0 -1
- package/dist/utils/logger/index.js.map +0 -1
- package/dist/utils/scopeAttributes.cjs +0 -2
- package/dist/utils/scopeAttributes.cjs.map +0 -1
- package/dist/utils/scopeAttributes.js.map +0 -1
- package/dist/utils/validations/index.cjs +0 -2
- package/dist/utils/validations/index.cjs.map +0 -1
- package/dist/utils/validations/index.js.map +0 -1
- package/dist/utils/validations/schema/custom-fields.cjs +0 -2
- package/dist/utils/validations/schema/custom-fields.cjs.map +0 -1
- package/dist/utils/validations/schema/custom-fields.d.cts +0 -7
- package/dist/utils/validations/schema/custom-fields.js.map +0 -1
- package/dist/utils/validations/schema/validator-schema.cjs +0 -2
- package/dist/utils/validations/schema/validator-schema.cjs.map +0 -1
- package/dist/utils/validations/schema/validator-schema.js.map +0 -1
- package/dist/utils/validations/validators/index.cjs +0 -2
- package/dist/utils/validations/validators/index.cjs.map +0 -1
- package/dist/utils/validations/validators/index.js.map +0 -1
- package/dist/utils/validations/validators/select.validator.cjs +0 -2
- package/dist/utils/validations/validators/select.validator.cjs.map +0 -1
- package/dist/utils/validations/validators/select.validator.js.map +0 -1
- package/dist/utils/validations/validators/status.validator.cjs +0 -2
- package/dist/utils/validations/validators/status.validator.cjs.map +0 -1
- package/dist/utils/validations/validators/status.validator.js.map +0 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import {
|
|
3
|
+
Table,
|
|
4
|
+
Column,
|
|
5
|
+
Model,
|
|
6
|
+
PrimaryKey,
|
|
7
|
+
DataType,
|
|
8
|
+
ForeignKey,
|
|
9
|
+
BelongsTo,
|
|
10
|
+
} from 'sequelize-typescript';
|
|
11
|
+
import TestModel from './TestModel';
|
|
12
|
+
|
|
13
|
+
@Table({ schema: 'custom-fields', createdAt: false, updatedAt: false })
|
|
14
|
+
class AssociatedTestModel extends Model {
|
|
15
|
+
@PrimaryKey
|
|
16
|
+
@Column({
|
|
17
|
+
type: DataType.UUID,
|
|
18
|
+
defaultValue: DataType.UUIDV4,
|
|
19
|
+
allowNull: false,
|
|
20
|
+
})
|
|
21
|
+
id!: string;
|
|
22
|
+
|
|
23
|
+
@ForeignKey(() => TestModel)
|
|
24
|
+
@Column({
|
|
25
|
+
type: DataType.UUID,
|
|
26
|
+
allowNull: false,
|
|
27
|
+
})
|
|
28
|
+
testModelId!: string;
|
|
29
|
+
|
|
30
|
+
@Column({
|
|
31
|
+
type: DataType.UUID,
|
|
32
|
+
allowNull: false,
|
|
33
|
+
})
|
|
34
|
+
fleetId: string;
|
|
35
|
+
|
|
36
|
+
@Column({
|
|
37
|
+
type: DataType.UUID,
|
|
38
|
+
allowNull: true,
|
|
39
|
+
})
|
|
40
|
+
businessModelId: string;
|
|
41
|
+
|
|
42
|
+
@Column({
|
|
43
|
+
type: DataType.UUID,
|
|
44
|
+
allowNull: true,
|
|
45
|
+
})
|
|
46
|
+
demandSourceId: string;
|
|
47
|
+
|
|
48
|
+
@Column({
|
|
49
|
+
type: DataType.BOOLEAN,
|
|
50
|
+
})
|
|
51
|
+
anotherAttribute?: boolean;
|
|
52
|
+
|
|
53
|
+
@BelongsTo(() => TestModel)
|
|
54
|
+
testModel: TestModel;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export default AssociatedTestModel;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import {
|
|
3
|
+
Table,
|
|
4
|
+
Column,
|
|
5
|
+
Model,
|
|
6
|
+
PrimaryKey,
|
|
7
|
+
DataType,
|
|
8
|
+
HasMany,
|
|
9
|
+
} from 'sequelize-typescript';
|
|
10
|
+
import AssociatedTestModel from './AssociatedTestModel';
|
|
11
|
+
|
|
12
|
+
@Table({ schema: 'custom-fields', createdAt: false, updatedAt: false })
|
|
13
|
+
class TestModel extends Model {
|
|
14
|
+
@PrimaryKey
|
|
15
|
+
@Column({
|
|
16
|
+
type: DataType.UUID,
|
|
17
|
+
defaultValue: DataType.UUIDV4,
|
|
18
|
+
allowNull: false,
|
|
19
|
+
})
|
|
20
|
+
id!: string;
|
|
21
|
+
|
|
22
|
+
@Column({
|
|
23
|
+
type: DataType.UUID,
|
|
24
|
+
allowNull: false,
|
|
25
|
+
})
|
|
26
|
+
fleetId: string;
|
|
27
|
+
|
|
28
|
+
@Column({
|
|
29
|
+
type: DataType.UUID,
|
|
30
|
+
allowNull: true,
|
|
31
|
+
})
|
|
32
|
+
businessModelId: string;
|
|
33
|
+
|
|
34
|
+
@Column({
|
|
35
|
+
type: DataType.UUID,
|
|
36
|
+
allowNull: true,
|
|
37
|
+
})
|
|
38
|
+
demandSourceId: string;
|
|
39
|
+
|
|
40
|
+
@Column({
|
|
41
|
+
type: DataType.BOOLEAN,
|
|
42
|
+
})
|
|
43
|
+
coolAttribute?: boolean;
|
|
44
|
+
|
|
45
|
+
@HasMany(() => AssociatedTestModel)
|
|
46
|
+
associatedModels: AssociatedTestModel[];
|
|
47
|
+
|
|
48
|
+
@Column({
|
|
49
|
+
type: DataType.VIRTUAL,
|
|
50
|
+
})
|
|
51
|
+
customFields?: any;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default TestModel;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import {
|
|
3
|
+
Table,
|
|
4
|
+
Column,
|
|
5
|
+
Model,
|
|
6
|
+
PrimaryKey,
|
|
7
|
+
DataType,
|
|
8
|
+
HasMany,
|
|
9
|
+
BelongsTo,
|
|
10
|
+
ForeignKey,
|
|
11
|
+
} from 'sequelize-typescript';
|
|
12
|
+
import AssociatedTestModel from '../AssociatedTestModel';
|
|
13
|
+
import ContextTestModel from './ContextTestModel';
|
|
14
|
+
|
|
15
|
+
@Table({ createdAt: false, updatedAt: false })
|
|
16
|
+
class ContextAwareTestModel extends Model {
|
|
17
|
+
@PrimaryKey
|
|
18
|
+
@Column({
|
|
19
|
+
type: DataType.UUID,
|
|
20
|
+
defaultValue: DataType.UUIDV4,
|
|
21
|
+
allowNull: false,
|
|
22
|
+
})
|
|
23
|
+
id!: string;
|
|
24
|
+
|
|
25
|
+
@ForeignKey(() => ContextTestModel)
|
|
26
|
+
@Column({ type: DataType.UUID })
|
|
27
|
+
contextId: string;
|
|
28
|
+
|
|
29
|
+
@Column({
|
|
30
|
+
type: DataType.BOOLEAN,
|
|
31
|
+
})
|
|
32
|
+
coolAttribute?: boolean;
|
|
33
|
+
|
|
34
|
+
@Column({
|
|
35
|
+
type: DataType.VIRTUAL,
|
|
36
|
+
})
|
|
37
|
+
customFields?: any;
|
|
38
|
+
|
|
39
|
+
@BelongsTo(() => ContextTestModel)
|
|
40
|
+
context: ContextTestModel;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export default ContextAwareTestModel;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import {
|
|
3
|
+
Table,
|
|
4
|
+
Column,
|
|
5
|
+
Model,
|
|
6
|
+
PrimaryKey,
|
|
7
|
+
DataType,
|
|
8
|
+
} from 'sequelize-typescript';
|
|
9
|
+
|
|
10
|
+
// eslint-disable-next-line no-shadow
|
|
11
|
+
enum EEntityTypes {
|
|
12
|
+
BUSINESS_MODEL = 'businessModel',
|
|
13
|
+
CONTEXT = 'context',
|
|
14
|
+
DEMAND_SOURCE = 'demandSource',
|
|
15
|
+
FLEET = 'fleet',
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@Table({ createdAt: false, updatedAt: false })
|
|
19
|
+
class ContextTestModel extends Model {
|
|
20
|
+
@PrimaryKey
|
|
21
|
+
@Column({
|
|
22
|
+
defaultValue: DataType.UUIDV4,
|
|
23
|
+
type: DataType.UUID,
|
|
24
|
+
})
|
|
25
|
+
id: string;
|
|
26
|
+
|
|
27
|
+
@Column({
|
|
28
|
+
type: DataType.UUID,
|
|
29
|
+
})
|
|
30
|
+
entityId: string;
|
|
31
|
+
|
|
32
|
+
@Column({
|
|
33
|
+
type: DataType.ENUM(...Object.values(EEntityTypes)),
|
|
34
|
+
})
|
|
35
|
+
entityType: EEntityTypes;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default ContextTestModel;
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Op,
|
|
3
|
+
type Includeable, type Transaction, type FindOptions, type WhereOptions,
|
|
4
|
+
} from 'sequelize';
|
|
5
|
+
import { CustomFieldDefinition, type CustomFieldEntries } from '../models';
|
|
6
|
+
import type { CreateCustomFieldDefinition, UpdateCustomFieldDefinition } from '../types/definition';
|
|
7
|
+
import type { ModelOptions } from '../types';
|
|
8
|
+
import { MissingDefinitionError } from '../errors';
|
|
9
|
+
|
|
10
|
+
export const create = (data: CreateCustomFieldDefinition): Promise<CustomFieldDefinition> =>
|
|
11
|
+
CustomFieldDefinition.create(data);
|
|
12
|
+
|
|
13
|
+
interface SadotFindOptions {
|
|
14
|
+
withDisabled?: boolean;
|
|
15
|
+
transaction?: Transaction;
|
|
16
|
+
include?: Includeable | Includeable[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type SadotGetDefinitionsByEntityIdsOptions = FindOptions & { modelOptions?: ModelOptions } & Pick<SadotFindOptions, 'withDisabled'>;
|
|
20
|
+
|
|
21
|
+
export const findAll = (
|
|
22
|
+
where: WhereOptions,
|
|
23
|
+
options: SadotFindOptions = { withDisabled: false },
|
|
24
|
+
): Promise<CustomFieldDefinition[]> => {
|
|
25
|
+
const queryModel = options.withDisabled
|
|
26
|
+
? CustomFieldDefinition.unscoped()
|
|
27
|
+
: CustomFieldDefinition;
|
|
28
|
+
|
|
29
|
+
return queryModel.scope('userScope').findAll({
|
|
30
|
+
where,
|
|
31
|
+
transaction: options.transaction,
|
|
32
|
+
raw: true,
|
|
33
|
+
include: options.include,
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const findByIds = (
|
|
38
|
+
ids: string[],
|
|
39
|
+
options: SadotFindOptions = { withDisabled: false },
|
|
40
|
+
): Promise<CustomFieldDefinition[]> => findAll({ id: { [Op.in]: ids } }, options);
|
|
41
|
+
|
|
42
|
+
export const findById = (
|
|
43
|
+
id: string,
|
|
44
|
+
options: Pick<SadotFindOptions, 'withDisabled'> = { withDisabled: false },
|
|
45
|
+
): Promise<CustomFieldDefinition | null> => {
|
|
46
|
+
const { withDisabled } = options;
|
|
47
|
+
if (withDisabled) {
|
|
48
|
+
return CustomFieldDefinition.unscoped().scope('userScope').findByPk(id);
|
|
49
|
+
}
|
|
50
|
+
return CustomFieldDefinition.scope('userScope').findByPk(id);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export const findByEntityIds = async (
|
|
54
|
+
modelType: string,
|
|
55
|
+
entityIds: string[],
|
|
56
|
+
options: FindOptions & { modelOptions?: ModelOptions } = {},
|
|
57
|
+
): Promise<CustomFieldDefinition[]> => {
|
|
58
|
+
const { include, useEntityIdFromInclude } = options.modelOptions;
|
|
59
|
+
const where: WhereOptions = {
|
|
60
|
+
modelType,
|
|
61
|
+
...(!useEntityIdFromInclude && { entityId: { [Op.in]: entityIds } }),
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
return CustomFieldDefinition.findAll({
|
|
65
|
+
where,
|
|
66
|
+
transaction: options.transaction,
|
|
67
|
+
include: include?.(entityIds),
|
|
68
|
+
raw: true,
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const findByWhere = (where): Promise<CustomFieldDefinition | null> =>
|
|
73
|
+
CustomFieldDefinition.scope('userScope').findOne({
|
|
74
|
+
where,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
export const findDefinitionsByModels = async (
|
|
78
|
+
modelTypes: string[],
|
|
79
|
+
options?,
|
|
80
|
+
): Promise<CustomFieldDefinition[]> => {
|
|
81
|
+
const query: WhereOptions<CreateCustomFieldDefinition> = { modelType: { [Op.in]: modelTypes } };
|
|
82
|
+
return CustomFieldDefinition.findAll({
|
|
83
|
+
where: query,
|
|
84
|
+
transaction: options?.transaction,
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const update = async (
|
|
89
|
+
id: string,
|
|
90
|
+
data: UpdateCustomFieldDefinition,
|
|
91
|
+
): Promise<CustomFieldDefinition> => {
|
|
92
|
+
const updatedDefinition = (await CustomFieldDefinition.scope('userScope').update(data, {
|
|
93
|
+
where: { id },
|
|
94
|
+
returning: true,
|
|
95
|
+
individualHooks: true,
|
|
96
|
+
}))[1][0];
|
|
97
|
+
return updatedDefinition;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export const disable = (id: string): Promise<[affectedCount: number]> =>
|
|
101
|
+
CustomFieldDefinition.update(
|
|
102
|
+
{ disabled: true },
|
|
103
|
+
{ where: { id } },
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
export const destroy = (id: string): Promise<number> =>
|
|
107
|
+
CustomFieldDefinition.destroy({ where: { id } });
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Return the names of the required fields for a given model
|
|
111
|
+
*/
|
|
112
|
+
export const getRequiredFields = async (
|
|
113
|
+
modelType: string,
|
|
114
|
+
modelId: string | string[],
|
|
115
|
+
entityId: string | string[],
|
|
116
|
+
modelOptions: ModelOptions = {},
|
|
117
|
+
): Promise<string[]> => {
|
|
118
|
+
const entityIds = Array.isArray(entityId) ? entityId : [entityId];
|
|
119
|
+
const { include, useEntityIdFromInclude } = modelOptions;
|
|
120
|
+
|
|
121
|
+
const where: WhereOptions = {
|
|
122
|
+
modelType,
|
|
123
|
+
required: true,
|
|
124
|
+
...(!useEntityIdFromInclude && { entityId: { [Op.in]: entityIds } }),
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
const requiredFields = await CustomFieldDefinition.findAll({
|
|
128
|
+
where,
|
|
129
|
+
include: include?.(entityIds),
|
|
130
|
+
logging: true,
|
|
131
|
+
});
|
|
132
|
+
const requiredFieldsNames = requiredFields.map((definition) => definition.name);
|
|
133
|
+
return [...new Set(requiredFieldsNames)];
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @returns A promise resolving with a dictionary of custom field definitions by name.
|
|
138
|
+
* @throws A {@link MissingDefinitionError} if any of the custom fields doesn't have a definition.
|
|
139
|
+
*/
|
|
140
|
+
export const getCustomFieldDefinitionsDictionary = async (
|
|
141
|
+
instances: CustomFieldEntries[],
|
|
142
|
+
options: SadotGetDefinitionsByEntityIdsOptions = { withDisabled: false, modelOptions: {} },
|
|
143
|
+
): Promise<{ [definitionName: string]: CustomFieldDefinition }> => {
|
|
144
|
+
const { modelType } = instances[0]?.dataValues ?? {};
|
|
145
|
+
const customFields = new Set<string>();
|
|
146
|
+
const modelIds = [];
|
|
147
|
+
const entityIds = new Set<string>();
|
|
148
|
+
instances.forEach((instance) => {
|
|
149
|
+
const { dataValues: { modelId, entityId, customFields: instanceCustomFields } } = instance;
|
|
150
|
+
modelIds.push(modelId);
|
|
151
|
+
entityIds.add(entityId);
|
|
152
|
+
|
|
153
|
+
Object.keys(instanceCustomFields ?? {}).forEach((fieldName) => {
|
|
154
|
+
customFields.add(fieldName);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
const where: WhereOptions = {
|
|
159
|
+
modelType,
|
|
160
|
+
entityId: { [Op.in]: Array.from(entityIds) },
|
|
161
|
+
name: { [Op.in]: Array.from(customFields) },
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const definitions = await findAll(where, { ...options });
|
|
165
|
+
|
|
166
|
+
const matchedDefinitions = definitions.filter((def) => customFields.has(def.name));
|
|
167
|
+
const matchedDefinitionsByName = Object.fromEntries(matchedDefinitions.map((definition) => [definition.name, definition]));
|
|
168
|
+
|
|
169
|
+
if (!definitions?.length || matchedDefinitions.length !== customFields.size) {
|
|
170
|
+
const unmatchedCustomFields = Array.from(customFields).filter((customField) => !matchedDefinitionsByName[customField]);
|
|
171
|
+
throw new MissingDefinitionError(unmatchedCustomFields);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return matchedDefinitionsByName;
|
|
175
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/* eslint-disable no-param-reassign */
|
|
2
|
+
import type {
|
|
3
|
+
FindOptions,
|
|
4
|
+
Includeable,
|
|
5
|
+
Transaction,
|
|
6
|
+
WhereOptions,
|
|
7
|
+
} from 'sequelize';
|
|
8
|
+
import { CustomFieldEntries } from '../models';
|
|
9
|
+
import type { ModelOptions } from '../types';
|
|
10
|
+
import logger from '../utils/logger';
|
|
11
|
+
import { MissingDefinitionError } from '../errors';
|
|
12
|
+
import * as DefinitionRepo from './definition';
|
|
13
|
+
import { formatFunctions } from './utils/formatValues';
|
|
14
|
+
|
|
15
|
+
type CustomFieldEntriesModelOptions = ModelOptions & { include?: Includeable, transaction?: Transaction };
|
|
16
|
+
|
|
17
|
+
export const findEntriesByModelId = async (modelId: string, options: CustomFieldEntriesModelOptions = {}) => {
|
|
18
|
+
const { transaction } = options;
|
|
19
|
+
return CustomFieldEntries.findOne({
|
|
20
|
+
where: { modelId },
|
|
21
|
+
transaction,
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const findEntriesByModelIds = async (modelIds: string[], options: CustomFieldEntriesModelOptions = {}) => {
|
|
26
|
+
const { transaction } = options;
|
|
27
|
+
return CustomFieldEntries.findAll({
|
|
28
|
+
where: { modelId: modelIds },
|
|
29
|
+
transaction,
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const updateEntries = async (
|
|
34
|
+
modelId: string,
|
|
35
|
+
modelType: string,
|
|
36
|
+
customFields: Record<string, any>,
|
|
37
|
+
identifiers: string[],
|
|
38
|
+
options: FindOptions & { modelOptions?: ModelOptions } = {},
|
|
39
|
+
) => {
|
|
40
|
+
const customFieldsNames = Object.keys(customFields);
|
|
41
|
+
logger.debug(`custom-fields: updating entries for ${modelType} ${modelId}`, {
|
|
42
|
+
customFieldsNames,
|
|
43
|
+
optionsKeys: options ? Object.keys(options) : null,
|
|
44
|
+
customFields,
|
|
45
|
+
identifiers,
|
|
46
|
+
});
|
|
47
|
+
const { modelOptions, transaction } = options;
|
|
48
|
+
|
|
49
|
+
const where: WhereOptions = {
|
|
50
|
+
modelType,
|
|
51
|
+
name: customFieldsNames,
|
|
52
|
+
...(!options.modelOptions?.useEntityIdFromInclude && { entityId: identifiers }),
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const fieldDefinitions = await DefinitionRepo.findAll(where, { withDisabled: true, transaction, include: modelOptions.include?.(identifiers) }) ?? [];
|
|
56
|
+
|
|
57
|
+
const disabledDefinitions = fieldDefinitions.filter((def) => def.disabled);
|
|
58
|
+
if (fieldDefinitions.length !== customFieldsNames.length) {
|
|
59
|
+
logger.warn(`custom-fields: missing definitions for ${modelType} ${modelId}`, { names: customFieldsNames, fieldDefinitions });
|
|
60
|
+
const missingDefinitions = customFieldsNames.filter((name) => !fieldDefinitions.some((def) => def.name === name));
|
|
61
|
+
throw new MissingDefinitionError(missingDefinitions);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const disabledNames = disabledDefinitions?.map((def) => def.name) || [];
|
|
65
|
+
const valuesWithDisabledDefinitions = customFieldsNames.filter((name) => disabledNames.includes(name));
|
|
66
|
+
if (valuesWithDisabledDefinitions?.length > 0) {
|
|
67
|
+
logger.warn(`custom-fields: trying to update disabled values: ${valuesWithDisabledDefinitions.join(', ')}`);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const definitionsByName = Object.fromEntries(fieldDefinitions.map((definition) => [definition.name, definition]));
|
|
71
|
+
// If we need to format the value before we save it
|
|
72
|
+
Object.entries(customFields)
|
|
73
|
+
.filter(([definitionName]) => formatFunctions[definitionsByName[definitionName].fieldType])
|
|
74
|
+
.forEach(([definitionName, value]) => {
|
|
75
|
+
const { fieldType } = definitionsByName[definitionName];
|
|
76
|
+
customFields[definitionName] = formatFunctions[fieldType](value);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return CustomFieldEntries.upsert(
|
|
80
|
+
{
|
|
81
|
+
modelId,
|
|
82
|
+
entityId: fieldDefinitions[0].entityId,
|
|
83
|
+
modelType,
|
|
84
|
+
customFields,
|
|
85
|
+
},
|
|
86
|
+
options,
|
|
87
|
+
);
|
|
88
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CustomFieldDefinitionType } from '../../utils/constants';
|
|
2
|
+
|
|
3
|
+
export const formatFunctions = {
|
|
4
|
+
[CustomFieldDefinitionType.DATE]: (value) => {
|
|
5
|
+
if (value) {
|
|
6
|
+
const date = new Date(value);
|
|
7
|
+
if (date.toString() === 'Invalid Date') {
|
|
8
|
+
throw new Error(`Invalid date value: ${value}`);
|
|
9
|
+
}
|
|
10
|
+
return date.toISOString();
|
|
11
|
+
}
|
|
12
|
+
return null;
|
|
13
|
+
},
|
|
14
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { FindOptions, IncludeOptions, Transactionable } from 'sequelize';
|
|
2
|
+
import logger from '../utils/logger';
|
|
3
|
+
import { CustomValidator } from '../models';
|
|
4
|
+
import type { ModelOptions } from '../types';
|
|
5
|
+
|
|
6
|
+
export interface FindValidatorOptions extends Transactionable {
|
|
7
|
+
withDisabled?: boolean;
|
|
8
|
+
attributes?: string[];
|
|
9
|
+
raw?: boolean;
|
|
10
|
+
include?: IncludeOptions[];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Make sure this interface is compatible with the Sequelize model
|
|
14
|
+
export interface ValidatorAttributes {
|
|
15
|
+
entityId: string;
|
|
16
|
+
entityType: string;
|
|
17
|
+
modelType: string;
|
|
18
|
+
schema: CustomValidator['schema'];
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
[key: string]: unknown; // Add index signature for Sequelize compatibility
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const create = async (
|
|
24
|
+
validatorAttributes: ValidatorAttributes,
|
|
25
|
+
options: Transactionable = {},
|
|
26
|
+
): Promise<CustomValidator> => {
|
|
27
|
+
logger.debug('custom-validator - create validator');
|
|
28
|
+
|
|
29
|
+
// Use unknown type to bypass TypeScript errors while maintaining compatibility
|
|
30
|
+
const validator = await CustomValidator.create(validatorAttributes as Record<string, unknown>, options);
|
|
31
|
+
|
|
32
|
+
return validator;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const findAll = async (
|
|
36
|
+
where = {},
|
|
37
|
+
options: FindOptions & {
|
|
38
|
+
modelOptions?: ModelOptions,
|
|
39
|
+
withDisabled?: boolean
|
|
40
|
+
} = {},
|
|
41
|
+
): Promise<CustomValidator[]> => {
|
|
42
|
+
logger.debug('custom-validator - find all validators');
|
|
43
|
+
|
|
44
|
+
const {
|
|
45
|
+
transaction, withDisabled, include, attributes, raw,
|
|
46
|
+
} = options;
|
|
47
|
+
|
|
48
|
+
let validators;
|
|
49
|
+
if (withDisabled) {
|
|
50
|
+
// If withDisabled is true, use unscoped to ignore the default scope that filters disabled items
|
|
51
|
+
// Apply the userScope separately to maintain permission filtering
|
|
52
|
+
validators = await CustomValidator.unscoped().scope('userScope').findAll({
|
|
53
|
+
where,
|
|
54
|
+
transaction,
|
|
55
|
+
include,
|
|
56
|
+
attributes,
|
|
57
|
+
raw,
|
|
58
|
+
});
|
|
59
|
+
} else {
|
|
60
|
+
// Use defaultScope and userScope to filter both disabled and by permissions
|
|
61
|
+
// The defaultScope keeps only non-disabled validators
|
|
62
|
+
validators = await CustomValidator.scope(['defaultScope', 'userScope']).findAll({
|
|
63
|
+
where,
|
|
64
|
+
transaction,
|
|
65
|
+
include,
|
|
66
|
+
attributes,
|
|
67
|
+
raw,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return validators;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export const findAllByModelType = async (
|
|
75
|
+
modelType: string,
|
|
76
|
+
entityId: string,
|
|
77
|
+
options: FindOptions & {
|
|
78
|
+
modelOptions?: ModelOptions,
|
|
79
|
+
withDisabled?: boolean
|
|
80
|
+
} = {},
|
|
81
|
+
): Promise<CustomValidator[]> => {
|
|
82
|
+
logger.debug('custom-validator - find all validators by model type');
|
|
83
|
+
return findAll(
|
|
84
|
+
{
|
|
85
|
+
modelType,
|
|
86
|
+
...(!options?.modelOptions?.useEntityIdFromInclude && { entityId }),
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
...options,
|
|
90
|
+
include: options?.modelOptions?.include?.(entityId),
|
|
91
|
+
},
|
|
92
|
+
);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const update = async (
|
|
96
|
+
id: string,
|
|
97
|
+
updates: Partial<ValidatorAttributes>,
|
|
98
|
+
options?: Transactionable,
|
|
99
|
+
): Promise<[number, CustomValidator[]]> => {
|
|
100
|
+
logger.debug('custom-validator - update validator');
|
|
101
|
+
|
|
102
|
+
return CustomValidator.update(
|
|
103
|
+
updates,
|
|
104
|
+
{
|
|
105
|
+
where: { id },
|
|
106
|
+
returning: true,
|
|
107
|
+
...options,
|
|
108
|
+
},
|
|
109
|
+
);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export const disable = async (
|
|
113
|
+
id: string,
|
|
114
|
+
options?: Transactionable,
|
|
115
|
+
): Promise<[number, CustomValidator[]]> => {
|
|
116
|
+
logger.debug('custom-validator - disable validator');
|
|
117
|
+
|
|
118
|
+
return update(id, { disabled: true }, options);
|
|
119
|
+
};
|