@autofleet/sadot 1.6.18-beta.2 → 1.6.18-beta.20
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/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.cjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js +10 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.cjs +8 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.js +7 -0
- package/dist/_virtual/rolldown_runtime.cjs +43 -0
- package/dist/{chunk-DJulfCLt.js → _virtual/rolldown_runtime.js} +1 -2
- package/dist/api/index.cjs +12 -0
- package/dist/api/index.js +11 -0
- package/dist/api/v1/definition/index.cjs +113 -0
- package/dist/api/v1/definition/index.js +112 -0
- package/dist/api/v1/definition/validations.cjs +128 -0
- package/dist/api/v1/definition/validations.js +125 -0
- package/dist/api/v1/errors.cjs +14 -0
- package/dist/api/v1/errors.js +13 -0
- package/dist/api/v1/field-policies/index.cjs +104 -0
- package/dist/api/v1/field-policies/index.js +103 -0
- package/dist/api/v1/index.cjs +16 -0
- package/dist/api/v1/index.js +15 -0
- package/dist/api/v1/validator/index.cjs +119 -0
- package/dist/api/v1/validator/index.js +118 -0
- package/dist/api/v1/validator/validations.cjs +40 -0
- package/dist/api/v1/validator/validations.d.cts +22 -0
- package/dist/api/v1/validator/validations.d.ts +22 -0
- package/dist/api/v1/validator/validations.js +38 -0
- package/dist/errors/index.cjs +62 -0
- package/dist/errors/index.js +55 -0
- package/dist/events/index.cjs +52 -0
- package/dist/events/index.js +50 -0
- package/dist/hooks/enrich.cjs +175 -0
- package/dist/hooks/enrich.js +175 -0
- package/dist/hooks/find.cjs +22 -0
- package/dist/hooks/find.js +22 -0
- package/dist/hooks/hooks.cjs +310 -0
- package/dist/hooks/hooks.js +302 -0
- package/dist/hooks/index.cjs +3 -0
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/utils/updateInstanceValues.cjs +27 -0
- package/dist/hooks/utils/updateInstanceValues.js +27 -0
- package/dist/index.cjs +48 -33508
- package/dist/index.d.cts +13 -396
- package/dist/index.d.ts +14 -394
- package/dist/index.js +21 -33435
- package/dist/init-state.cjs +56 -0
- package/dist/init-state.d.cts +35 -0
- package/dist/init-state.d.ts +35 -0
- package/dist/init-state.js +55 -0
- package/dist/mat-path-state.cjs +10 -0
- package/dist/mat-path-state.js +9 -0
- package/dist/migrations/001-create-core-tables.cjs +70 -0
- package/dist/migrations/001-create-core-tables.js +68 -0
- package/dist/migrations/002-create-custom-field-entries.cjs +27 -0
- package/dist/migrations/002-create-custom-field-entries.js +25 -0
- package/dist/migrations/003-create-custom-field-model-type-map.cjs +35 -0
- package/dist/migrations/003-create-custom-field-model-type-map.js +33 -0
- package/dist/migrations/004-create-field-policy-tables.cjs +29 -0
- package/dist/migrations/004-create-field-policy-tables.js +27 -0
- package/dist/migrations/005-add-entity-type-to-field-policies.cjs +20 -0
- package/dist/migrations/005-add-entity-type-to-field-policies.js +18 -0
- package/dist/migrations/index.cjs +94 -0
- package/dist/migrations/index.js +95 -0
- package/dist/models/CustomFieldDefinition.cjs +147 -0
- package/dist/models/CustomFieldDefinition.d.cts +40 -0
- package/dist/models/CustomFieldDefinition.d.ts +40 -0
- package/dist/models/CustomFieldDefinition.js +146 -0
- package/dist/models/CustomFieldEntries.cjs +71 -0
- package/dist/models/CustomFieldEntries.d.cts +15 -0
- package/dist/models/CustomFieldEntries.d.ts +15 -0
- package/dist/models/CustomFieldEntries.js +70 -0
- package/dist/models/CustomFieldModelTypeMap.cjs +62 -0
- package/dist/models/CustomFieldModelTypeMap.d.cts +14 -0
- package/dist/models/CustomFieldModelTypeMap.d.ts +14 -0
- package/dist/models/CustomFieldModelTypeMap.js +61 -0
- package/dist/models/CustomFieldValue.cjs +109 -0
- package/dist/models/CustomFieldValue.d.cts +20 -0
- package/dist/models/CustomFieldValue.d.ts +20 -0
- package/dist/models/CustomFieldValue.js +108 -0
- package/dist/models/CustomValidator.cjs +68 -0
- package/dist/models/CustomValidator.d.cts +18 -0
- package/dist/models/CustomValidator.d.ts +18 -0
- package/dist/models/CustomValidator.js +67 -0
- package/dist/models/FieldPolicy.cjs +54 -0
- package/dist/models/FieldPolicy.d.cts +25 -0
- package/dist/models/FieldPolicy.d.ts +25 -0
- package/dist/models/FieldPolicy.js +53 -0
- package/dist/models/index.cjs +163 -0
- package/dist/models/index.d.ts +7 -0
- package/dist/models/index.js +161 -0
- package/dist/models/tests/AssociatedTestModel.cjs +51 -0
- package/dist/models/tests/AssociatedTestModel.js +50 -0
- package/dist/models/tests/TestModel.cjs +43 -0
- package/dist/models/tests/TestModel.js +42 -0
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs +35 -0
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js +34 -0
- package/dist/models/tests/contextAwareModels/ContextTestModel.cjs +33 -0
- package/dist/models/tests/contextAwareModels/ContextTestModel.js +32 -0
- package/dist/repository/definition.cjs +221 -0
- package/dist/repository/definition.js +212 -0
- package/dist/repository/entries.cjs +69 -0
- package/dist/repository/entries.js +67 -0
- package/dist/repository/field-policy.cjs +69 -0
- package/dist/repository/field-policy.d.cts +35 -0
- package/dist/repository/field-policy.d.ts +35 -0
- package/dist/repository/field-policy.js +59 -0
- package/dist/repository/utils/formatValues.cjs +14 -0
- package/dist/repository/utils/formatValues.js +14 -0
- package/dist/repository/validator.cjs +58 -0
- package/dist/repository/validator.js +54 -0
- package/dist/repository/value.cjs +77 -0
- package/dist/repository/value.js +76 -0
- package/dist/scopes/filter.cjs +56 -0
- package/dist/scopes/filter.d.cts +22 -0
- package/dist/scopes/filter.d.ts +22 -0
- package/dist/scopes/filter.js +54 -0
- package/dist/scopes/helpers/filter.helpers.cjs +152 -0
- package/dist/scopes/helpers/filter.helpers.d.cts +16 -0
- package/dist/scopes/helpers/filter.helpers.d.ts +16 -0
- package/dist/scopes/helpers/filter.helpers.js +147 -0
- package/dist/scopes/index.cjs +1 -0
- package/dist/scopes/index.js +3 -0
- package/dist/types/index.d.cts +75 -0
- package/dist/types/index.d.ts +76 -0
- package/dist/utils/constants/index.cjs +32 -0
- package/dist/utils/constants/index.d.cts +23 -0
- package/dist/utils/constants/index.d.ts +23 -0
- package/dist/utils/constants/index.js +29 -0
- package/dist/utils/db/index.cjs +15 -0
- package/dist/utils/db/index.js +14 -0
- package/dist/utils/helpers/index.cjs +23 -0
- package/dist/utils/helpers/index.d.cts +30 -0
- package/dist/utils/helpers/index.d.ts +30 -0
- package/dist/utils/helpers/index.js +21 -0
- package/dist/utils/init.cjs +115 -0
- package/dist/utils/init.js +111 -0
- package/dist/utils/logger/index.cjs +15 -0
- package/dist/utils/logger/index.js +12 -0
- package/dist/utils/scopeAttributes.cjs +12 -0
- package/dist/utils/scopeAttributes.js +11 -0
- package/dist/utils/validations/index.cjs +34 -0
- package/dist/utils/validations/index.js +32 -0
- package/dist/utils/validations/schema/custom-fields.cjs +9 -0
- package/dist/utils/validations/schema/custom-fields.d.cts +6 -0
- package/dist/utils/validations/schema/custom-fields.d.ts +6 -0
- package/dist/utils/validations/schema/custom-fields.js +7 -0
- package/dist/utils/validations/schema/validator-schema.cjs +102 -0
- package/dist/utils/validations/schema/validator-schema.js +99 -0
- package/dist/utils/validations/validators/index.cjs +45 -0
- package/dist/utils/validations/validators/index.js +42 -0
- package/dist/utils/validations/validators/multi-select-dropdown.validator.cjs +7 -0
- package/dist/utils/validations/validators/multi-select-dropdown.validator.js +7 -0
- package/dist/utils/validations/validators/multi-select-status.validator.cjs +10 -0
- package/dist/utils/validations/validators/multi-select-status.validator.js +10 -0
- package/dist/utils/validations/validators/multi-select.helpers.cjs +12 -0
- package/dist/utils/validations/validators/multi-select.helpers.js +10 -0
- package/dist/utils/validations/validators/select.validator.cjs +12 -0
- package/dist/utils/validations/validators/select.validator.js +10 -0
- package/dist/utils/validations/validators/status.validator.cjs +12 -0
- package/dist/utils/validations/validators/status.validator.js +10 -0
- package/package.json +3 -3
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
|
|
2
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/decorate.js
|
|
3
|
+
function __decorate(decorators, target, key, desc) {
|
|
4
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
5
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
6
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
7
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
exports.__decorate = __decorate;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/decorate.js
|
|
2
|
+
function __decorate(decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
export { __decorate };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/decorateMetadata.js
|
|
3
|
+
function __decorateMetadata(k, v) {
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
//#endregion
|
|
8
|
+
exports.__decorateMetadata = __decorateMetadata;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/decorateMetadata.js
|
|
2
|
+
function __decorateMetadata(k, v) {
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
export { __decorateMetadata };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region rolldown:runtime
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (all, symbols) => {
|
|
9
|
+
let target = {};
|
|
10
|
+
for (var name in all) {
|
|
11
|
+
__defProp(target, name, {
|
|
12
|
+
get: all[name],
|
|
13
|
+
enumerable: true
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
if (symbols) {
|
|
17
|
+
__defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
18
|
+
}
|
|
19
|
+
return target;
|
|
20
|
+
};
|
|
21
|
+
var __copyProps = (to, from, except, desc) => {
|
|
22
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
23
|
+
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
24
|
+
key = keys[i];
|
|
25
|
+
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
26
|
+
__defProp(to, key, {
|
|
27
|
+
get: ((k) => from[k]).bind(null, key),
|
|
28
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return to;
|
|
34
|
+
};
|
|
35
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
36
|
+
value: mod,
|
|
37
|
+
enumerable: true
|
|
38
|
+
}) : target, mod));
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
|
|
42
|
+
exports.__export = __export;
|
|
43
|
+
exports.__toESM = __toESM;
|
|
@@ -2,7 +2,6 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
|
|
3
3
|
//#region rolldown:runtime
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
5
|
-
var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
6
5
|
var __export = (all, symbols) => {
|
|
7
6
|
let target = {};
|
|
8
7
|
for (var name in all) {
|
|
@@ -19,4 +18,4 @@ var __export = (all, symbols) => {
|
|
|
19
18
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
20
19
|
|
|
21
20
|
//#endregion
|
|
22
|
-
export { __export
|
|
21
|
+
export { __export, __require };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_index = require('../utils/logger/index.cjs');
|
|
3
|
+
const require_index$1 = require('./v1/index.cjs');
|
|
4
|
+
let _autofleet_node_common = require("@autofleet/node-common");
|
|
5
|
+
|
|
6
|
+
//#region src/api/index.ts
|
|
7
|
+
const router = (0, _autofleet_node_common.Router)({ logger: require_index.default });
|
|
8
|
+
router.use("/v1", require_index$1.default);
|
|
9
|
+
var api_default = router;
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
exports.default = api_default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import logger_default from "../utils/logger/index.js";
|
|
2
|
+
import v1_default from "./v1/index.js";
|
|
3
|
+
import { Router } from "@autofleet/node-common";
|
|
4
|
+
|
|
5
|
+
//#region src/api/index.ts
|
|
6
|
+
const router = Router({ logger: logger_default });
|
|
7
|
+
router.use("/v1", v1_default);
|
|
8
|
+
var api_default = router;
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { api_default as default };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_index = require('../../../utils/logger/index.cjs');
|
|
3
|
+
const require_definition = require('../../../repository/definition.cjs');
|
|
4
|
+
const require_errors = require('../errors.cjs');
|
|
5
|
+
const require_validations = require('./validations.cjs');
|
|
6
|
+
const require_mat_path_state = require('../../../mat-path-state.cjs');
|
|
7
|
+
let _autofleet_errors = require("@autofleet/errors");
|
|
8
|
+
let _autofleet_node_common = require("@autofleet/node-common");
|
|
9
|
+
|
|
10
|
+
//#region src/api/v1/definition/index.ts
|
|
11
|
+
const router = (0, _autofleet_node_common.Router)({ logger: require_index.default });
|
|
12
|
+
const ENTITY = "CustomFieldDefinition";
|
|
13
|
+
const toPascalCase = (str) => str.replace(/(^\w|-\w)/g, (subStr) => subStr.replace(/-/, "").toUpperCase());
|
|
14
|
+
/**
|
|
15
|
+
* Create
|
|
16
|
+
*/
|
|
17
|
+
router.post("/", async (req, res) => {
|
|
18
|
+
const { modelName } = req.params;
|
|
19
|
+
const modelType = toPascalCase(modelName);
|
|
20
|
+
try {
|
|
21
|
+
const validatedPayload = await require_validations.validateCustomFieldDefinitionCreation(req.body);
|
|
22
|
+
const customFieldDefinition = await require_definition.create({
|
|
23
|
+
...validatedPayload,
|
|
24
|
+
modelType
|
|
25
|
+
});
|
|
26
|
+
return res.status(201).json(customFieldDefinition);
|
|
27
|
+
} catch (err) {
|
|
28
|
+
require_index.default.error("Failed to create custom field definition", err);
|
|
29
|
+
return require_errors.default(err, res, {
|
|
30
|
+
logger: require_index.default,
|
|
31
|
+
message: `Error in create ${ENTITY} request`
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Get by id
|
|
37
|
+
*/
|
|
38
|
+
router.get("/:customFieldDefinitionId", async (req, res) => {
|
|
39
|
+
const { customFieldDefinitionId } = req.params;
|
|
40
|
+
try {
|
|
41
|
+
const customFieldDefinition = await require_definition.findById(customFieldDefinitionId);
|
|
42
|
+
if (!customFieldDefinition) throw new _autofleet_errors.ResourceNotFoundError();
|
|
43
|
+
return res.json(customFieldDefinition);
|
|
44
|
+
} catch (err) {
|
|
45
|
+
require_index.default.error("Failed to fetch custom field definition", err);
|
|
46
|
+
return require_errors.default(err, res, {
|
|
47
|
+
logger: require_index.default,
|
|
48
|
+
message: `Error in get ${ENTITY} request`
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
/**
|
|
53
|
+
* Get all
|
|
54
|
+
*/
|
|
55
|
+
router.get("/", async (req, res) => {
|
|
56
|
+
const { params: { modelName }, query: { entityIds, modelTypeId } } = req;
|
|
57
|
+
const modelType = toPascalCase(modelName);
|
|
58
|
+
try {
|
|
59
|
+
const applyEntityIdsFilter = !require_mat_path_state.matPathState.isMatPathEnabled?.() && entityIds && entityIds.length > 0;
|
|
60
|
+
if (modelTypeId) {
|
|
61
|
+
const customFieldDefinitions$1 = await require_definition.findByModelTypeId(modelTypeId, {
|
|
62
|
+
withDisabled: true,
|
|
63
|
+
modelType,
|
|
64
|
+
entityIds: applyEntityIdsFilter ? entityIds : void 0
|
|
65
|
+
});
|
|
66
|
+
return res.json(customFieldDefinitions$1);
|
|
67
|
+
}
|
|
68
|
+
const where = {
|
|
69
|
+
modelType,
|
|
70
|
+
...applyEntityIdsFilter && { entityId: entityIds }
|
|
71
|
+
};
|
|
72
|
+
const customFieldDefinitions = await require_definition.findAll(where, {
|
|
73
|
+
withDisabled: true,
|
|
74
|
+
enrichWithModelTypeIds: true
|
|
75
|
+
});
|
|
76
|
+
return res.json(customFieldDefinitions);
|
|
77
|
+
} catch (err) {
|
|
78
|
+
require_index.default.error("Failed to fetch custom field definitions", err);
|
|
79
|
+
return require_errors.default(err, res, {
|
|
80
|
+
logger: require_index.default,
|
|
81
|
+
message: `Error in get all ${ENTITY} request`
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* Update
|
|
87
|
+
*/
|
|
88
|
+
router.patch("/:customFieldDefinitionId", async (req, res) => {
|
|
89
|
+
const { customFieldDefinitionId, modelName } = req.params;
|
|
90
|
+
const modelType = toPascalCase(modelName);
|
|
91
|
+
try {
|
|
92
|
+
const validatedPayload = await require_validations.validateCustomFieldDefinitionUpdate(req.body);
|
|
93
|
+
if (!await require_definition.findByWhere({
|
|
94
|
+
id: customFieldDefinitionId,
|
|
95
|
+
modelType
|
|
96
|
+
})) throw new _autofleet_errors.ResourceNotFoundError();
|
|
97
|
+
const updatedCustomFieldDefinition = await require_definition.update(customFieldDefinitionId, {
|
|
98
|
+
...validatedPayload,
|
|
99
|
+
modelType
|
|
100
|
+
});
|
|
101
|
+
return res.status(200).json(updatedCustomFieldDefinition);
|
|
102
|
+
} catch (err) {
|
|
103
|
+
require_index.default.error("Failed to patch custom field definition", err);
|
|
104
|
+
return require_errors.default(err, res, {
|
|
105
|
+
logger: require_index.default,
|
|
106
|
+
message: `Error in update ${ENTITY} request`
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
var definition_default = router;
|
|
111
|
+
|
|
112
|
+
//#endregion
|
|
113
|
+
exports.default = definition_default;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import logger_default from "../../../utils/logger/index.js";
|
|
2
|
+
import { create, findAll, findById, findByModelTypeId, findByWhere, update } from "../../../repository/definition.js";
|
|
3
|
+
import errors_default from "../errors.js";
|
|
4
|
+
import { validateCustomFieldDefinitionCreation, validateCustomFieldDefinitionUpdate } from "./validations.js";
|
|
5
|
+
import { matPathState } from "../../../mat-path-state.js";
|
|
6
|
+
import { ResourceNotFoundError } from "@autofleet/errors";
|
|
7
|
+
import { Router } from "@autofleet/node-common";
|
|
8
|
+
|
|
9
|
+
//#region src/api/v1/definition/index.ts
|
|
10
|
+
const router = Router({ logger: logger_default });
|
|
11
|
+
const ENTITY = "CustomFieldDefinition";
|
|
12
|
+
const toPascalCase = (str) => str.replace(/(^\w|-\w)/g, (subStr) => subStr.replace(/-/, "").toUpperCase());
|
|
13
|
+
/**
|
|
14
|
+
* Create
|
|
15
|
+
*/
|
|
16
|
+
router.post("/", async (req, res) => {
|
|
17
|
+
const { modelName } = req.params;
|
|
18
|
+
const modelType = toPascalCase(modelName);
|
|
19
|
+
try {
|
|
20
|
+
const validatedPayload = await validateCustomFieldDefinitionCreation(req.body);
|
|
21
|
+
const customFieldDefinition = await create({
|
|
22
|
+
...validatedPayload,
|
|
23
|
+
modelType
|
|
24
|
+
});
|
|
25
|
+
return res.status(201).json(customFieldDefinition);
|
|
26
|
+
} catch (err) {
|
|
27
|
+
logger_default.error("Failed to create custom field definition", err);
|
|
28
|
+
return errors_default(err, res, {
|
|
29
|
+
logger: logger_default,
|
|
30
|
+
message: `Error in create ${ENTITY} request`
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Get by id
|
|
36
|
+
*/
|
|
37
|
+
router.get("/:customFieldDefinitionId", async (req, res) => {
|
|
38
|
+
const { customFieldDefinitionId } = req.params;
|
|
39
|
+
try {
|
|
40
|
+
const customFieldDefinition = await findById(customFieldDefinitionId);
|
|
41
|
+
if (!customFieldDefinition) throw new ResourceNotFoundError();
|
|
42
|
+
return res.json(customFieldDefinition);
|
|
43
|
+
} catch (err) {
|
|
44
|
+
logger_default.error("Failed to fetch custom field definition", err);
|
|
45
|
+
return errors_default(err, res, {
|
|
46
|
+
logger: logger_default,
|
|
47
|
+
message: `Error in get ${ENTITY} request`
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Get all
|
|
53
|
+
*/
|
|
54
|
+
router.get("/", async (req, res) => {
|
|
55
|
+
const { params: { modelName }, query: { entityIds, modelTypeId } } = req;
|
|
56
|
+
const modelType = toPascalCase(modelName);
|
|
57
|
+
try {
|
|
58
|
+
const applyEntityIdsFilter = !matPathState.isMatPathEnabled?.() && entityIds && entityIds.length > 0;
|
|
59
|
+
if (modelTypeId) {
|
|
60
|
+
const customFieldDefinitions$1 = await findByModelTypeId(modelTypeId, {
|
|
61
|
+
withDisabled: true,
|
|
62
|
+
modelType,
|
|
63
|
+
entityIds: applyEntityIdsFilter ? entityIds : void 0
|
|
64
|
+
});
|
|
65
|
+
return res.json(customFieldDefinitions$1);
|
|
66
|
+
}
|
|
67
|
+
const where = {
|
|
68
|
+
modelType,
|
|
69
|
+
...applyEntityIdsFilter && { entityId: entityIds }
|
|
70
|
+
};
|
|
71
|
+
const customFieldDefinitions = await findAll(where, {
|
|
72
|
+
withDisabled: true,
|
|
73
|
+
enrichWithModelTypeIds: true
|
|
74
|
+
});
|
|
75
|
+
return res.json(customFieldDefinitions);
|
|
76
|
+
} catch (err) {
|
|
77
|
+
logger_default.error("Failed to fetch custom field definitions", err);
|
|
78
|
+
return errors_default(err, res, {
|
|
79
|
+
logger: logger_default,
|
|
80
|
+
message: `Error in get all ${ENTITY} request`
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
/**
|
|
85
|
+
* Update
|
|
86
|
+
*/
|
|
87
|
+
router.patch("/:customFieldDefinitionId", async (req, res) => {
|
|
88
|
+
const { customFieldDefinitionId, modelName } = req.params;
|
|
89
|
+
const modelType = toPascalCase(modelName);
|
|
90
|
+
try {
|
|
91
|
+
const validatedPayload = await validateCustomFieldDefinitionUpdate(req.body);
|
|
92
|
+
if (!await findByWhere({
|
|
93
|
+
id: customFieldDefinitionId,
|
|
94
|
+
modelType
|
|
95
|
+
})) throw new ResourceNotFoundError();
|
|
96
|
+
const updatedCustomFieldDefinition = await update(customFieldDefinitionId, {
|
|
97
|
+
...validatedPayload,
|
|
98
|
+
modelType
|
|
99
|
+
});
|
|
100
|
+
return res.status(200).json(updatedCustomFieldDefinition);
|
|
101
|
+
} catch (err) {
|
|
102
|
+
logger_default.error("Failed to patch custom field definition", err);
|
|
103
|
+
return errors_default(err, res, {
|
|
104
|
+
logger: logger_default,
|
|
105
|
+
message: `Error in update ${ENTITY} request`
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
var definition_default = router;
|
|
110
|
+
|
|
111
|
+
//#endregion
|
|
112
|
+
export { definition_default as default };
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_index = require('../../../utils/constants/index.cjs');
|
|
3
|
+
let joi = require("joi");
|
|
4
|
+
joi = require_rolldown_runtime.__toESM(joi);
|
|
5
|
+
|
|
6
|
+
//#region src/api/v1/definition/validations.ts
|
|
7
|
+
const FileValidationSchema = joi.default.object({
|
|
8
|
+
name: joi.default.string().required(),
|
|
9
|
+
type: joi.default.string(),
|
|
10
|
+
size: joi.default.string(),
|
|
11
|
+
addedBy: joi.default.string().uuid()
|
|
12
|
+
});
|
|
13
|
+
const statusValidationObject = joi.default.object({
|
|
14
|
+
value: joi.default.string().required(),
|
|
15
|
+
color: joi.default.string().required()
|
|
16
|
+
});
|
|
17
|
+
const stringOptionsSchema = joi.default.array().required().items(joi.default.string()).min(1).unique();
|
|
18
|
+
const statusOptionsSchema = joi.default.array().required().items(statusValidationObject).min(1).unique("value");
|
|
19
|
+
/**
|
|
20
|
+
* Schema for the validation of custom field definition
|
|
21
|
+
* The only custom validation is for
|
|
22
|
+
* {@link CustomFieldDefinitionType.SELECT SELECT},
|
|
23
|
+
* {@link CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN MULTI_SELECT_DROPDOWN},
|
|
24
|
+
* {@link CustomFieldDefinitionType.STATUS STATUS},
|
|
25
|
+
* and
|
|
26
|
+
* {@link CustomFieldDefinitionType.MULTI_SELECT_STATUS MULTI_SELECT_STATUS}
|
|
27
|
+
* field types.
|
|
28
|
+
* The rest of the field types are validated by Joi
|
|
29
|
+
*/
|
|
30
|
+
const ValidationSchema = joi.default.when("fieldType", {
|
|
31
|
+
switch: [
|
|
32
|
+
{
|
|
33
|
+
is: require_index.CustomFieldDefinitionType.SELECT,
|
|
34
|
+
then: stringOptionsSchema
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
is: require_index.CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN,
|
|
38
|
+
then: stringOptionsSchema
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
is: require_index.CustomFieldDefinitionType.STATUS,
|
|
42
|
+
then: statusOptionsSchema
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
is: require_index.CustomFieldDefinitionType.MULTI_SELECT_STATUS,
|
|
46
|
+
then: statusOptionsSchema
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
otherwise: joi.default.forbidden()
|
|
50
|
+
});
|
|
51
|
+
const multiSelectDefaultValueSchema = joi.default.array().items(joi.default.string()).unique().allow(null);
|
|
52
|
+
const DefaultValueSchema = joi.default.when("fieldType", { switch: [
|
|
53
|
+
{
|
|
54
|
+
is: require_index.CustomFieldDefinitionType.BOOLEAN,
|
|
55
|
+
then: joi.default.boolean().allow(null)
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
is: require_index.CustomFieldDefinitionType.DATE,
|
|
59
|
+
then: joi.default.date().allow(null)
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
is: require_index.CustomFieldDefinitionType.DATETIME,
|
|
63
|
+
then: joi.default.date().allow(null)
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
is: require_index.CustomFieldDefinitionType.FILE,
|
|
67
|
+
then: joi.default.array().items(FileValidationSchema).allow(null)
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
is: require_index.CustomFieldDefinitionType.IMAGE,
|
|
71
|
+
then: joi.default.array().items(joi.default.string().uri()).allow(null)
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
is: require_index.CustomFieldDefinitionType.NUMBER,
|
|
75
|
+
then: joi.default.number().allow(null)
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
is: require_index.CustomFieldDefinitionType.SELECT,
|
|
79
|
+
then: joi.default.string().allow(null)
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
is: require_index.CustomFieldDefinitionType.STATUS,
|
|
83
|
+
then: joi.default.string().allow(null)
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
is: require_index.CustomFieldDefinitionType.TEXT,
|
|
87
|
+
then: joi.default.string().allow(null)
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
is: require_index.CustomFieldDefinitionType.MULTI_SELECT_STATUS,
|
|
91
|
+
then: multiSelectDefaultValueSchema
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
is: require_index.CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN,
|
|
95
|
+
then: multiSelectDefaultValueSchema
|
|
96
|
+
}
|
|
97
|
+
] });
|
|
98
|
+
const CustomFieldDefinitionCreationSchema = joi.default.object({
|
|
99
|
+
name: joi.default.string().required(),
|
|
100
|
+
displayName: joi.default.string().required(),
|
|
101
|
+
validation: ValidationSchema,
|
|
102
|
+
defaultValue: DefaultValueSchema,
|
|
103
|
+
fieldType: joi.default.string().valid(...Object.values(require_index.CustomFieldDefinitionType)).required(),
|
|
104
|
+
entityId: joi.default.string().guid().required(),
|
|
105
|
+
entityType: joi.default.string().required(),
|
|
106
|
+
description: joi.default.string(),
|
|
107
|
+
required: joi.default.boolean(),
|
|
108
|
+
disabled: joi.default.boolean(),
|
|
109
|
+
blockEditingFromUI: joi.default.boolean(),
|
|
110
|
+
modelTypeIds: joi.default.array().items(joi.default.string().guid())
|
|
111
|
+
}).oxor("required", "blockEditingFromUI", { isPresent: (value) => value === true });
|
|
112
|
+
const CustomFieldDefinitionUpdateSchema = joi.default.object({
|
|
113
|
+
displayName: joi.default.string(),
|
|
114
|
+
validation: ValidationSchema,
|
|
115
|
+
defaultValue: DefaultValueSchema,
|
|
116
|
+
fieldType: joi.default.string().valid(...Object.values(require_index.CustomFieldDefinitionType)),
|
|
117
|
+
description: joi.default.string().allow(null),
|
|
118
|
+
required: joi.default.boolean(),
|
|
119
|
+
disabled: joi.default.boolean(),
|
|
120
|
+
blockEditingFromUI: joi.default.boolean(),
|
|
121
|
+
modelTypeIds: joi.default.array().items(joi.default.string().guid())
|
|
122
|
+
}).oxor("required", "blockEditingFromUI", { isPresent: (value) => value === true });
|
|
123
|
+
const validateCustomFieldDefinitionCreation = (payload) => CustomFieldDefinitionCreationSchema.validateAsync(payload, { abortEarly: false });
|
|
124
|
+
const validateCustomFieldDefinitionUpdate = (payload) => CustomFieldDefinitionUpdateSchema.validateAsync(payload, { abortEarly: false });
|
|
125
|
+
|
|
126
|
+
//#endregion
|
|
127
|
+
exports.validateCustomFieldDefinitionCreation = validateCustomFieldDefinitionCreation;
|
|
128
|
+
exports.validateCustomFieldDefinitionUpdate = validateCustomFieldDefinitionUpdate;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { CustomFieldDefinitionType } from "../../../utils/constants/index.js";
|
|
2
|
+
import Joi from "joi";
|
|
3
|
+
|
|
4
|
+
//#region src/api/v1/definition/validations.ts
|
|
5
|
+
const FileValidationSchema = Joi.object({
|
|
6
|
+
name: Joi.string().required(),
|
|
7
|
+
type: Joi.string(),
|
|
8
|
+
size: Joi.string(),
|
|
9
|
+
addedBy: Joi.string().uuid()
|
|
10
|
+
});
|
|
11
|
+
const statusValidationObject = Joi.object({
|
|
12
|
+
value: Joi.string().required(),
|
|
13
|
+
color: Joi.string().required()
|
|
14
|
+
});
|
|
15
|
+
const stringOptionsSchema = Joi.array().required().items(Joi.string()).min(1).unique();
|
|
16
|
+
const statusOptionsSchema = Joi.array().required().items(statusValidationObject).min(1).unique("value");
|
|
17
|
+
/**
|
|
18
|
+
* Schema for the validation of custom field definition
|
|
19
|
+
* The only custom validation is for
|
|
20
|
+
* {@link CustomFieldDefinitionType.SELECT SELECT},
|
|
21
|
+
* {@link CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN MULTI_SELECT_DROPDOWN},
|
|
22
|
+
* {@link CustomFieldDefinitionType.STATUS STATUS},
|
|
23
|
+
* and
|
|
24
|
+
* {@link CustomFieldDefinitionType.MULTI_SELECT_STATUS MULTI_SELECT_STATUS}
|
|
25
|
+
* field types.
|
|
26
|
+
* The rest of the field types are validated by Joi
|
|
27
|
+
*/
|
|
28
|
+
const ValidationSchema = Joi.when("fieldType", {
|
|
29
|
+
switch: [
|
|
30
|
+
{
|
|
31
|
+
is: CustomFieldDefinitionType.SELECT,
|
|
32
|
+
then: stringOptionsSchema
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
is: CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN,
|
|
36
|
+
then: stringOptionsSchema
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
is: CustomFieldDefinitionType.STATUS,
|
|
40
|
+
then: statusOptionsSchema
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
is: CustomFieldDefinitionType.MULTI_SELECT_STATUS,
|
|
44
|
+
then: statusOptionsSchema
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
otherwise: Joi.forbidden()
|
|
48
|
+
});
|
|
49
|
+
const multiSelectDefaultValueSchema = Joi.array().items(Joi.string()).unique().allow(null);
|
|
50
|
+
const DefaultValueSchema = Joi.when("fieldType", { switch: [
|
|
51
|
+
{
|
|
52
|
+
is: CustomFieldDefinitionType.BOOLEAN,
|
|
53
|
+
then: Joi.boolean().allow(null)
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
is: CustomFieldDefinitionType.DATE,
|
|
57
|
+
then: Joi.date().allow(null)
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
is: CustomFieldDefinitionType.DATETIME,
|
|
61
|
+
then: Joi.date().allow(null)
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
is: CustomFieldDefinitionType.FILE,
|
|
65
|
+
then: Joi.array().items(FileValidationSchema).allow(null)
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
is: CustomFieldDefinitionType.IMAGE,
|
|
69
|
+
then: Joi.array().items(Joi.string().uri()).allow(null)
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
is: CustomFieldDefinitionType.NUMBER,
|
|
73
|
+
then: Joi.number().allow(null)
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
is: CustomFieldDefinitionType.SELECT,
|
|
77
|
+
then: Joi.string().allow(null)
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
is: CustomFieldDefinitionType.STATUS,
|
|
81
|
+
then: Joi.string().allow(null)
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
is: CustomFieldDefinitionType.TEXT,
|
|
85
|
+
then: Joi.string().allow(null)
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
is: CustomFieldDefinitionType.MULTI_SELECT_STATUS,
|
|
89
|
+
then: multiSelectDefaultValueSchema
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
is: CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN,
|
|
93
|
+
then: multiSelectDefaultValueSchema
|
|
94
|
+
}
|
|
95
|
+
] });
|
|
96
|
+
const CustomFieldDefinitionCreationSchema = Joi.object({
|
|
97
|
+
name: Joi.string().required(),
|
|
98
|
+
displayName: Joi.string().required(),
|
|
99
|
+
validation: ValidationSchema,
|
|
100
|
+
defaultValue: DefaultValueSchema,
|
|
101
|
+
fieldType: Joi.string().valid(...Object.values(CustomFieldDefinitionType)).required(),
|
|
102
|
+
entityId: Joi.string().guid().required(),
|
|
103
|
+
entityType: Joi.string().required(),
|
|
104
|
+
description: Joi.string(),
|
|
105
|
+
required: Joi.boolean(),
|
|
106
|
+
disabled: Joi.boolean(),
|
|
107
|
+
blockEditingFromUI: Joi.boolean(),
|
|
108
|
+
modelTypeIds: Joi.array().items(Joi.string().guid())
|
|
109
|
+
}).oxor("required", "blockEditingFromUI", { isPresent: (value) => value === true });
|
|
110
|
+
const CustomFieldDefinitionUpdateSchema = Joi.object({
|
|
111
|
+
displayName: Joi.string(),
|
|
112
|
+
validation: ValidationSchema,
|
|
113
|
+
defaultValue: DefaultValueSchema,
|
|
114
|
+
fieldType: Joi.string().valid(...Object.values(CustomFieldDefinitionType)),
|
|
115
|
+
description: Joi.string().allow(null),
|
|
116
|
+
required: Joi.boolean(),
|
|
117
|
+
disabled: Joi.boolean(),
|
|
118
|
+
blockEditingFromUI: Joi.boolean(),
|
|
119
|
+
modelTypeIds: Joi.array().items(Joi.string().guid())
|
|
120
|
+
}).oxor("required", "blockEditingFromUI", { isPresent: (value) => value === true });
|
|
121
|
+
const validateCustomFieldDefinitionCreation = (payload) => CustomFieldDefinitionCreationSchema.validateAsync(payload, { abortEarly: false });
|
|
122
|
+
const validateCustomFieldDefinitionUpdate = (payload) => CustomFieldDefinitionUpdateSchema.validateAsync(payload, { abortEarly: false });
|
|
123
|
+
|
|
124
|
+
//#endregion
|
|
125
|
+
export { validateCustomFieldDefinitionCreation, validateCustomFieldDefinitionUpdate };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
let sequelize = require("sequelize");
|
|
3
|
+
let joi = require("joi");
|
|
4
|
+
let _autofleet_errors = require("@autofleet/errors");
|
|
5
|
+
|
|
6
|
+
//#region src/api/v1/errors.ts
|
|
7
|
+
var errors_default = (err, res, additionalData) => {
|
|
8
|
+
let error = err;
|
|
9
|
+
if ([joi.ValidationError, sequelize.ValidationError].some((ErrClass) => err instanceof ErrClass)) error = new _autofleet_errors.BadRequest([err]);
|
|
10
|
+
return (0, _autofleet_errors.handleError)(error, res, additionalData);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
exports.default = errors_default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValidationError } from "sequelize";
|
|
2
|
+
import { ValidationError as ValidationError$1 } from "joi";
|
|
3
|
+
import { BadRequest, handleError } from "@autofleet/errors";
|
|
4
|
+
|
|
5
|
+
//#region src/api/v1/errors.ts
|
|
6
|
+
var errors_default = (err, res, additionalData) => {
|
|
7
|
+
let error = err;
|
|
8
|
+
if ([ValidationError$1, ValidationError].some((ErrClass) => err instanceof ErrClass)) error = new BadRequest([err]);
|
|
9
|
+
return handleError(error, res, additionalData);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { errors_default as default };
|