@autofleet/sadot 1.6.18-beta.2 → 1.6.18-beta.21
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 +132 -0
- package/dist/api/v1/validator/index.js +131 -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 +11 -0
- package/dist/models/index.js +161 -0
- package/dist/models/tests/AssociatedTestModel.cjs +51 -0
- package/dist/models/tests/AssociatedTestModel.d.ts +2 -0
- package/dist/models/tests/AssociatedTestModel.js +50 -0
- package/dist/models/tests/TestModel.cjs +43 -0
- package/dist/models/tests/TestModel.d.ts +2 -0
- package/dist/models/tests/TestModel.js +42 -0
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs +35 -0
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.d.ts +2 -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.d.ts +1 -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 +85 -0
- package/dist/repository/validator.js +78 -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 +4 -4
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { __require } from "../_virtual/rolldown_runtime.js";
|
|
2
|
+
import logger_default from "../utils/logger/index.js";
|
|
3
|
+
import { down, up } from "./001-create-core-tables.js";
|
|
4
|
+
import { down as down$1, up as up$1 } from "./002-create-custom-field-entries.js";
|
|
5
|
+
import { down as down$2, up as up$2 } from "./003-create-custom-field-model-type-map.js";
|
|
6
|
+
import { down as down$3, up as up$3 } from "./004-create-field-policy-tables.js";
|
|
7
|
+
import { down as down$4, up as up$4 } from "./005-add-entity-type-to-field-policies.js";
|
|
8
|
+
|
|
9
|
+
//#region src/migrations/index.ts
|
|
10
|
+
const { Umzug, SequelizeStorage } = __require("umzug");
|
|
11
|
+
const buildMigrationList = (options) => {
|
|
12
|
+
const { useCustomFieldsEntries = false, useModelTypeMapping = false } = options;
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
name: "001-create-core-tables",
|
|
16
|
+
up,
|
|
17
|
+
down
|
|
18
|
+
},
|
|
19
|
+
...useCustomFieldsEntries ? [{
|
|
20
|
+
name: "002-create-custom-field-entries",
|
|
21
|
+
up: up$1,
|
|
22
|
+
down: down$1
|
|
23
|
+
}] : [],
|
|
24
|
+
...useModelTypeMapping ? [{
|
|
25
|
+
name: "003-create-custom-field-model-type-map",
|
|
26
|
+
up: up$2,
|
|
27
|
+
down: down$2
|
|
28
|
+
}] : [],
|
|
29
|
+
{
|
|
30
|
+
name: "004-create-field-policy-tables",
|
|
31
|
+
up: up$3,
|
|
32
|
+
down: down$3
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "005-add-entity-type-to-field-policies",
|
|
36
|
+
up: up$4,
|
|
37
|
+
down: down$4
|
|
38
|
+
}
|
|
39
|
+
];
|
|
40
|
+
};
|
|
41
|
+
const SADOT_MIGRATION_LOCK_ID = 839274628;
|
|
42
|
+
/**
|
|
43
|
+
* Runs sadot migrations via umzug. All migrations use IF NOT EXISTS / IF EXISTS,
|
|
44
|
+
* so they are fully idempotent — safe to run against both fresh and existing
|
|
45
|
+
* databases (including DBs previously managed by the legacy sync() path).
|
|
46
|
+
*
|
|
47
|
+
* A PostgreSQL advisory lock is acquired before running migrations so that when
|
|
48
|
+
* multiple pods start concurrently only one of them executes the migrations.
|
|
49
|
+
* The remaining pods block until the lock is released, then proceed — Umzug will
|
|
50
|
+
* see the migrations have already been applied and skip them.
|
|
51
|
+
*/
|
|
52
|
+
const runSadotMigrations = async (sequelize, options = {}) => {
|
|
53
|
+
const queryInterface = sequelize.getQueryInterface();
|
|
54
|
+
const storage = new SequelizeStorage({
|
|
55
|
+
sequelize,
|
|
56
|
+
tableName: "sadot_migrations"
|
|
57
|
+
});
|
|
58
|
+
const migrator = new Umzug({
|
|
59
|
+
migrations: buildMigrationList(options),
|
|
60
|
+
context: queryInterface,
|
|
61
|
+
storage,
|
|
62
|
+
logger: {
|
|
63
|
+
info: (msg) => logger_default.info(`[sadot] ${JSON.stringify(msg)}`),
|
|
64
|
+
warn: (msg) => logger_default.warn(`[sadot] ${JSON.stringify(msg)}`),
|
|
65
|
+
error: (msg) => logger_default.error(`[sadot] ${JSON.stringify(msg)}`),
|
|
66
|
+
debug: (msg) => logger_default.debug(`[sadot] ${JSON.stringify(msg)}`)
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
const pending = await migrator.pending();
|
|
70
|
+
if (pending.length === 0) {
|
|
71
|
+
logger_default.info("[sadot] no pending migrations, skipping");
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
logger_default.info("[sadot] pending migrations detected", { pending: pending.map((m) => m.name) });
|
|
75
|
+
if ((sequelize.options?.pool?.max ?? 5) < 2) {
|
|
76
|
+
logger_default.info("[sadot] connection pool too small for advisory lock, running migrations directly");
|
|
77
|
+
await migrator.up();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
logger_default.info("[sadot] acquiring advisory lock");
|
|
81
|
+
const transaction = await sequelize.transaction();
|
|
82
|
+
try {
|
|
83
|
+
await sequelize.query(`SELECT pg_advisory_lock(${SADOT_MIGRATION_LOCK_ID})`, { transaction });
|
|
84
|
+
logger_default.info("[sadot] advisory lock acquired");
|
|
85
|
+
if ((await migrator.pending()).length > 0) await migrator.up();
|
|
86
|
+
else logger_default.info("[sadot] migrations already applied by another instance, skipping");
|
|
87
|
+
} finally {
|
|
88
|
+
await sequelize.query(`SELECT pg_advisory_unlock(${SADOT_MIGRATION_LOCK_ID})`, { transaction });
|
|
89
|
+
await transaction.commit();
|
|
90
|
+
logger_default.info("[sadot] advisory lock released");
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
//#endregion
|
|
95
|
+
export { runSadotMigrations };
|
|
@@ -0,0 +1,147 @@
|
|
|
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('../utils/constants/index.cjs');
|
|
4
|
+
const require_index$2 = require('../utils/validations/validators/index.cjs');
|
|
5
|
+
const require_index$3 = require('../events/index.cjs');
|
|
6
|
+
const require_index$4 = require('../errors/index.cjs');
|
|
7
|
+
const require_index$5 = require('../utils/validations/index.cjs');
|
|
8
|
+
const require_decorateMetadata = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.cjs');
|
|
9
|
+
const require_decorate = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.cjs');
|
|
10
|
+
const require_CustomFieldValue = require('./CustomFieldValue.cjs');
|
|
11
|
+
let sequelize_typescript = require("sequelize-typescript");
|
|
12
|
+
|
|
13
|
+
//#region src/models/CustomFieldDefinition.ts
|
|
14
|
+
var _ref, _ref2, _ref3, _ref4, _ref5, _ref6;
|
|
15
|
+
let CustomFieldDefinition = class CustomFieldDefinition$1 extends sequelize_typescript.Model {
|
|
16
|
+
get modelTypeIds() {
|
|
17
|
+
return this._modelTypeIds;
|
|
18
|
+
}
|
|
19
|
+
set modelTypeIds(value) {
|
|
20
|
+
this._modelTypeIds = value;
|
|
21
|
+
this.setDataValue("modelTypeIds", value);
|
|
22
|
+
}
|
|
23
|
+
static displayNameDefaultValue(instance) {
|
|
24
|
+
if (!instance?.displayName) instance.displayName = instance.name;
|
|
25
|
+
if (![null, void 0].includes(instance.defaultValue)) {
|
|
26
|
+
const isValid = require_index$5.validateValue(instance.defaultValue, instance.fieldType, instance.validation);
|
|
27
|
+
if (isValid.error) throw new require_index$4.InvalidValueError(instance.defaultValue, instance.name, isValid.error);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
static afterSaveHandler(instance, options) {
|
|
31
|
+
if (options.transaction) options.transaction.afterCommit(() => require_index$3.sendDimEvent(instance));
|
|
32
|
+
else require_index$3.sendDimEvent(instance);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Override toJSON to exclude internal associations from API responses
|
|
36
|
+
* The modelTypeMappings association is used internally to optimize queries
|
|
37
|
+
* but should not be exposed in the API response (use modelTypeIds instead)
|
|
38
|
+
*/
|
|
39
|
+
toJSON() {
|
|
40
|
+
const { modelTypeMappings: _modelTypeMappings, ...values } = this.get();
|
|
41
|
+
return values;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
require_decorate.__decorate([
|
|
45
|
+
sequelize_typescript.PrimaryKey,
|
|
46
|
+
(0, sequelize_typescript.Column)({
|
|
47
|
+
type: sequelize_typescript.DataType.UUID,
|
|
48
|
+
defaultValue: sequelize_typescript.DataType.UUIDV4,
|
|
49
|
+
allowNull: false
|
|
50
|
+
}),
|
|
51
|
+
require_decorateMetadata.__decorateMetadata("design:type", String)
|
|
52
|
+
], CustomFieldDefinition.prototype, "id", void 0);
|
|
53
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
54
|
+
type: sequelize_typescript.DataType.STRING,
|
|
55
|
+
allowNull: false
|
|
56
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "name", void 0);
|
|
57
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({ type: sequelize_typescript.DataType.STRING }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "displayName", void 0);
|
|
58
|
+
require_decorate.__decorate([
|
|
59
|
+
(0, sequelize_typescript.Is)("SupportedType", (value) => {
|
|
60
|
+
if (!Object.values(require_index$1.CustomFieldDefinitionType).includes(value)) throw new require_index$4.UnsupportedCustomFieldTypeError(`"${value}" is not a supported type.`);
|
|
61
|
+
}),
|
|
62
|
+
(0, sequelize_typescript.Column)({
|
|
63
|
+
type: sequelize_typescript.DataType.STRING,
|
|
64
|
+
allowNull: false
|
|
65
|
+
}),
|
|
66
|
+
require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref = typeof require_index$1.CustomFieldDefinitionType !== "undefined" && require_index$1.CustomFieldDefinitionType) === "function" ? _ref : Object)
|
|
67
|
+
], CustomFieldDefinition.prototype, "fieldType", void 0);
|
|
68
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({ type: sequelize_typescript.DataType.JSONB }), require_decorateMetadata.__decorateMetadata("design:type", Object)], CustomFieldDefinition.prototype, "validation", void 0);
|
|
69
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
70
|
+
type: sequelize_typescript.DataType.UUID,
|
|
71
|
+
allowNull: false
|
|
72
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "entityId", void 0);
|
|
73
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
74
|
+
type: sequelize_typescript.DataType.STRING,
|
|
75
|
+
allowNull: false
|
|
76
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "entityType", void 0);
|
|
77
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
78
|
+
type: sequelize_typescript.DataType.STRING,
|
|
79
|
+
allowNull: false
|
|
80
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "modelType", void 0);
|
|
81
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({ type: sequelize_typescript.DataType.TEXT }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "description", void 0);
|
|
82
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
83
|
+
type: sequelize_typescript.DataType.BOOLEAN,
|
|
84
|
+
defaultValue: false
|
|
85
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "required", void 0);
|
|
86
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
87
|
+
type: sequelize_typescript.DataType.BOOLEAN,
|
|
88
|
+
defaultValue: false
|
|
89
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "disabled", void 0);
|
|
90
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
91
|
+
type: sequelize_typescript.DataType.JSONB,
|
|
92
|
+
allowNull: true
|
|
93
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", Object)], CustomFieldDefinition.prototype, "defaultValue", void 0);
|
|
94
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
95
|
+
type: sequelize_typescript.DataType.DATE,
|
|
96
|
+
allowNull: false
|
|
97
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref2 = typeof Date !== "undefined" && Date) === "function" ? _ref2 : Object)], CustomFieldDefinition.prototype, "createdAt", void 0);
|
|
98
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
99
|
+
type: sequelize_typescript.DataType.DATE,
|
|
100
|
+
allowNull: true
|
|
101
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref3 = typeof Date !== "undefined" && Date) === "function" ? _ref3 : Object)], CustomFieldDefinition.prototype, "updatedAt", void 0);
|
|
102
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
103
|
+
type: sequelize_typescript.DataType.DATE,
|
|
104
|
+
allowNull: true
|
|
105
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref4 = typeof Date !== "undefined" && Date) === "function" ? _ref4 : Object)], CustomFieldDefinition.prototype, "deletedAt", void 0);
|
|
106
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
107
|
+
type: sequelize_typescript.DataType.BOOLEAN,
|
|
108
|
+
defaultValue: false,
|
|
109
|
+
allowNull: false
|
|
110
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "blockEditingFromUI", void 0);
|
|
111
|
+
require_decorate.__decorate([(0, sequelize_typescript.HasMany)(() => require_CustomFieldValue.default), require_decorateMetadata.__decorateMetadata("design:type", Array)], CustomFieldDefinition.prototype, "values", void 0);
|
|
112
|
+
require_decorate.__decorate([
|
|
113
|
+
sequelize_typescript.BeforeCreate,
|
|
114
|
+
require_decorateMetadata.__decorateMetadata("design:type", Function),
|
|
115
|
+
require_decorateMetadata.__decorateMetadata("design:paramtypes", [typeof (_ref5 = typeof CustomFieldDefinition !== "undefined" && CustomFieldDefinition) === "function" ? _ref5 : Object]),
|
|
116
|
+
require_decorateMetadata.__decorateMetadata("design:returntype", void 0)
|
|
117
|
+
], CustomFieldDefinition, "displayNameDefaultValue", null);
|
|
118
|
+
require_decorate.__decorate([
|
|
119
|
+
sequelize_typescript.AfterSave,
|
|
120
|
+
require_decorateMetadata.__decorateMetadata("design:type", Function),
|
|
121
|
+
require_decorateMetadata.__decorateMetadata("design:paramtypes", [typeof (_ref6 = typeof CustomFieldDefinition !== "undefined" && CustomFieldDefinition) === "function" ? _ref6 : Object, Object]),
|
|
122
|
+
require_decorateMetadata.__decorateMetadata("design:returntype", void 0)
|
|
123
|
+
], CustomFieldDefinition, "afterSaveHandler", null);
|
|
124
|
+
CustomFieldDefinition = require_decorate.__decorate([(0, sequelize_typescript.DefaultScope)(() => ({ where: { disabled: false } })), (0, sequelize_typescript.Table)({
|
|
125
|
+
tableName: "custom_field_definitions",
|
|
126
|
+
modelName: "CustomFieldDefinition",
|
|
127
|
+
indexes: [{
|
|
128
|
+
name: "unique_name_model_type",
|
|
129
|
+
fields: [
|
|
130
|
+
"model_type",
|
|
131
|
+
"entity_id",
|
|
132
|
+
"name"
|
|
133
|
+
],
|
|
134
|
+
unique: true
|
|
135
|
+
}],
|
|
136
|
+
timestamps: true,
|
|
137
|
+
validate: { validationByType() {
|
|
138
|
+
if (!this.validation && require_index$2.CustomValidationTypes[this.fieldType]) {
|
|
139
|
+
require_index.default.error(`No custom validation for custom field type ${this.fieldType} found`);
|
|
140
|
+
throw new require_index$4.UnsupportedCustomValidationError(`Validation provided for "${this.fieldType}" is not supported`);
|
|
141
|
+
}
|
|
142
|
+
} }
|
|
143
|
+
})], CustomFieldDefinition);
|
|
144
|
+
var CustomFieldDefinition_default = CustomFieldDefinition;
|
|
145
|
+
|
|
146
|
+
//#endregion
|
|
147
|
+
exports.default = CustomFieldDefinition_default;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { CustomFieldDefinitionType } from "../utils/constants/index.cjs";
|
|
2
|
+
import { CustomFieldValue } from "./CustomFieldValue.cjs";
|
|
3
|
+
import { CustomFieldModelTypeMap } from "./CustomFieldModelTypeMap.cjs";
|
|
4
|
+
import { Model } from "sequelize-typescript";
|
|
5
|
+
import { CreateOptions } from "sequelize";
|
|
6
|
+
|
|
7
|
+
//#region src/models/CustomFieldDefinition.d.ts
|
|
8
|
+
declare class CustomFieldDefinition extends Model {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
displayName?: string;
|
|
12
|
+
fieldType: CustomFieldDefinitionType;
|
|
13
|
+
validation?: any;
|
|
14
|
+
entityId: string;
|
|
15
|
+
entityType: string;
|
|
16
|
+
modelType: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
required?: boolean;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
defaultValue?: any;
|
|
21
|
+
createdAt?: Date;
|
|
22
|
+
updatedAt?: Date;
|
|
23
|
+
deletedAt?: Date;
|
|
24
|
+
blockEditingFromUI: boolean;
|
|
25
|
+
values: CustomFieldValue[];
|
|
26
|
+
modelTypeMappings?: CustomFieldModelTypeMap[];
|
|
27
|
+
private _modelTypeIds?;
|
|
28
|
+
get modelTypeIds(): string[] | undefined;
|
|
29
|
+
set modelTypeIds(value: string[] | undefined);
|
|
30
|
+
static displayNameDefaultValue(instance: CustomFieldDefinition): void;
|
|
31
|
+
static afterSaveHandler(instance: CustomFieldDefinition, options: CreateOptions): void;
|
|
32
|
+
/**
|
|
33
|
+
* Override toJSON to exclude internal associations from API responses
|
|
34
|
+
* The modelTypeMappings association is used internally to optimize queries
|
|
35
|
+
* but should not be exposed in the API response (use modelTypeIds instead)
|
|
36
|
+
*/
|
|
37
|
+
toJSON(): object;
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { CustomFieldDefinition };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { CustomFieldDefinitionType } from "../utils/constants/index.js";
|
|
2
|
+
import { CustomFieldValue } from "./CustomFieldValue.js";
|
|
3
|
+
import { CustomFieldModelTypeMap } from "./CustomFieldModelTypeMap.js";
|
|
4
|
+
import { CreateOptions } from "sequelize";
|
|
5
|
+
import { Model } from "sequelize-typescript";
|
|
6
|
+
|
|
7
|
+
//#region src/models/CustomFieldDefinition.d.ts
|
|
8
|
+
declare class CustomFieldDefinition extends Model {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
displayName?: string;
|
|
12
|
+
fieldType: CustomFieldDefinitionType;
|
|
13
|
+
validation?: any;
|
|
14
|
+
entityId: string;
|
|
15
|
+
entityType: string;
|
|
16
|
+
modelType: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
required?: boolean;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
defaultValue?: any;
|
|
21
|
+
createdAt?: Date;
|
|
22
|
+
updatedAt?: Date;
|
|
23
|
+
deletedAt?: Date;
|
|
24
|
+
blockEditingFromUI: boolean;
|
|
25
|
+
values: CustomFieldValue[];
|
|
26
|
+
modelTypeMappings?: CustomFieldModelTypeMap[];
|
|
27
|
+
private _modelTypeIds?;
|
|
28
|
+
get modelTypeIds(): string[] | undefined;
|
|
29
|
+
set modelTypeIds(value: string[] | undefined);
|
|
30
|
+
static displayNameDefaultValue(instance: CustomFieldDefinition): void;
|
|
31
|
+
static afterSaveHandler(instance: CustomFieldDefinition, options: CreateOptions): void;
|
|
32
|
+
/**
|
|
33
|
+
* Override toJSON to exclude internal associations from API responses
|
|
34
|
+
* The modelTypeMappings association is used internally to optimize queries
|
|
35
|
+
* but should not be exposed in the API response (use modelTypeIds instead)
|
|
36
|
+
*/
|
|
37
|
+
toJSON(): object;
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { CustomFieldDefinition };
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import logger_default from "../utils/logger/index.js";
|
|
2
|
+
import { CustomFieldDefinitionType } from "../utils/constants/index.js";
|
|
3
|
+
import { CustomValidationTypes } from "../utils/validations/validators/index.js";
|
|
4
|
+
import { sendDimEvent } from "../events/index.js";
|
|
5
|
+
import { InvalidValueError, UnsupportedCustomFieldTypeError, UnsupportedCustomValidationError } from "../errors/index.js";
|
|
6
|
+
import { validateValue } from "../utils/validations/index.js";
|
|
7
|
+
import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.js";
|
|
8
|
+
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js";
|
|
9
|
+
import CustomFieldValue_default from "./CustomFieldValue.js";
|
|
10
|
+
import { AfterSave, BeforeCreate, Column, DataType, DefaultScope, HasMany, Is, Model, PrimaryKey, Table } from "sequelize-typescript";
|
|
11
|
+
|
|
12
|
+
//#region src/models/CustomFieldDefinition.ts
|
|
13
|
+
var _ref, _ref2, _ref3, _ref4, _ref5, _ref6;
|
|
14
|
+
let CustomFieldDefinition = class CustomFieldDefinition$1 extends Model {
|
|
15
|
+
get modelTypeIds() {
|
|
16
|
+
return this._modelTypeIds;
|
|
17
|
+
}
|
|
18
|
+
set modelTypeIds(value) {
|
|
19
|
+
this._modelTypeIds = value;
|
|
20
|
+
this.setDataValue("modelTypeIds", value);
|
|
21
|
+
}
|
|
22
|
+
static displayNameDefaultValue(instance) {
|
|
23
|
+
if (!instance?.displayName) instance.displayName = instance.name;
|
|
24
|
+
if (![null, void 0].includes(instance.defaultValue)) {
|
|
25
|
+
const isValid = validateValue(instance.defaultValue, instance.fieldType, instance.validation);
|
|
26
|
+
if (isValid.error) throw new InvalidValueError(instance.defaultValue, instance.name, isValid.error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
static afterSaveHandler(instance, options) {
|
|
30
|
+
if (options.transaction) options.transaction.afterCommit(() => sendDimEvent(instance));
|
|
31
|
+
else sendDimEvent(instance);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Override toJSON to exclude internal associations from API responses
|
|
35
|
+
* The modelTypeMappings association is used internally to optimize queries
|
|
36
|
+
* but should not be exposed in the API response (use modelTypeIds instead)
|
|
37
|
+
*/
|
|
38
|
+
toJSON() {
|
|
39
|
+
const { modelTypeMappings: _modelTypeMappings, ...values } = this.get();
|
|
40
|
+
return values;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
__decorate([
|
|
44
|
+
PrimaryKey,
|
|
45
|
+
Column({
|
|
46
|
+
type: DataType.UUID,
|
|
47
|
+
defaultValue: DataType.UUIDV4,
|
|
48
|
+
allowNull: false
|
|
49
|
+
}),
|
|
50
|
+
__decorateMetadata("design:type", String)
|
|
51
|
+
], CustomFieldDefinition.prototype, "id", void 0);
|
|
52
|
+
__decorate([Column({
|
|
53
|
+
type: DataType.STRING,
|
|
54
|
+
allowNull: false
|
|
55
|
+
}), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "name", void 0);
|
|
56
|
+
__decorate([Column({ type: DataType.STRING }), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "displayName", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
Is("SupportedType", (value) => {
|
|
59
|
+
if (!Object.values(CustomFieldDefinitionType).includes(value)) throw new UnsupportedCustomFieldTypeError(`"${value}" is not a supported type.`);
|
|
60
|
+
}),
|
|
61
|
+
Column({
|
|
62
|
+
type: DataType.STRING,
|
|
63
|
+
allowNull: false
|
|
64
|
+
}),
|
|
65
|
+
__decorateMetadata("design:type", typeof (_ref = typeof CustomFieldDefinitionType !== "undefined" && CustomFieldDefinitionType) === "function" ? _ref : Object)
|
|
66
|
+
], CustomFieldDefinition.prototype, "fieldType", void 0);
|
|
67
|
+
__decorate([Column({ type: DataType.JSONB }), __decorateMetadata("design:type", Object)], CustomFieldDefinition.prototype, "validation", void 0);
|
|
68
|
+
__decorate([Column({
|
|
69
|
+
type: DataType.UUID,
|
|
70
|
+
allowNull: false
|
|
71
|
+
}), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "entityId", void 0);
|
|
72
|
+
__decorate([Column({
|
|
73
|
+
type: DataType.STRING,
|
|
74
|
+
allowNull: false
|
|
75
|
+
}), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "entityType", void 0);
|
|
76
|
+
__decorate([Column({
|
|
77
|
+
type: DataType.STRING,
|
|
78
|
+
allowNull: false
|
|
79
|
+
}), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "modelType", void 0);
|
|
80
|
+
__decorate([Column({ type: DataType.TEXT }), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "description", void 0);
|
|
81
|
+
__decorate([Column({
|
|
82
|
+
type: DataType.BOOLEAN,
|
|
83
|
+
defaultValue: false
|
|
84
|
+
}), __decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "required", void 0);
|
|
85
|
+
__decorate([Column({
|
|
86
|
+
type: DataType.BOOLEAN,
|
|
87
|
+
defaultValue: false
|
|
88
|
+
}), __decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "disabled", void 0);
|
|
89
|
+
__decorate([Column({
|
|
90
|
+
type: DataType.JSONB,
|
|
91
|
+
allowNull: true
|
|
92
|
+
}), __decorateMetadata("design:type", Object)], CustomFieldDefinition.prototype, "defaultValue", void 0);
|
|
93
|
+
__decorate([Column({
|
|
94
|
+
type: DataType.DATE,
|
|
95
|
+
allowNull: false
|
|
96
|
+
}), __decorateMetadata("design:type", typeof (_ref2 = typeof Date !== "undefined" && Date) === "function" ? _ref2 : Object)], CustomFieldDefinition.prototype, "createdAt", void 0);
|
|
97
|
+
__decorate([Column({
|
|
98
|
+
type: DataType.DATE,
|
|
99
|
+
allowNull: true
|
|
100
|
+
}), __decorateMetadata("design:type", typeof (_ref3 = typeof Date !== "undefined" && Date) === "function" ? _ref3 : Object)], CustomFieldDefinition.prototype, "updatedAt", void 0);
|
|
101
|
+
__decorate([Column({
|
|
102
|
+
type: DataType.DATE,
|
|
103
|
+
allowNull: true
|
|
104
|
+
}), __decorateMetadata("design:type", typeof (_ref4 = typeof Date !== "undefined" && Date) === "function" ? _ref4 : Object)], CustomFieldDefinition.prototype, "deletedAt", void 0);
|
|
105
|
+
__decorate([Column({
|
|
106
|
+
type: DataType.BOOLEAN,
|
|
107
|
+
defaultValue: false,
|
|
108
|
+
allowNull: false
|
|
109
|
+
}), __decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "blockEditingFromUI", void 0);
|
|
110
|
+
__decorate([HasMany(() => CustomFieldValue_default), __decorateMetadata("design:type", Array)], CustomFieldDefinition.prototype, "values", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
BeforeCreate,
|
|
113
|
+
__decorateMetadata("design:type", Function),
|
|
114
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref5 = typeof CustomFieldDefinition !== "undefined" && CustomFieldDefinition) === "function" ? _ref5 : Object]),
|
|
115
|
+
__decorateMetadata("design:returntype", void 0)
|
|
116
|
+
], CustomFieldDefinition, "displayNameDefaultValue", null);
|
|
117
|
+
__decorate([
|
|
118
|
+
AfterSave,
|
|
119
|
+
__decorateMetadata("design:type", Function),
|
|
120
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref6 = typeof CustomFieldDefinition !== "undefined" && CustomFieldDefinition) === "function" ? _ref6 : Object, Object]),
|
|
121
|
+
__decorateMetadata("design:returntype", void 0)
|
|
122
|
+
], CustomFieldDefinition, "afterSaveHandler", null);
|
|
123
|
+
CustomFieldDefinition = __decorate([DefaultScope(() => ({ where: { disabled: false } })), Table({
|
|
124
|
+
tableName: "custom_field_definitions",
|
|
125
|
+
modelName: "CustomFieldDefinition",
|
|
126
|
+
indexes: [{
|
|
127
|
+
name: "unique_name_model_type",
|
|
128
|
+
fields: [
|
|
129
|
+
"model_type",
|
|
130
|
+
"entity_id",
|
|
131
|
+
"name"
|
|
132
|
+
],
|
|
133
|
+
unique: true
|
|
134
|
+
}],
|
|
135
|
+
timestamps: true,
|
|
136
|
+
validate: { validationByType() {
|
|
137
|
+
if (!this.validation && CustomValidationTypes[this.fieldType]) {
|
|
138
|
+
logger_default.error(`No custom validation for custom field type ${this.fieldType} found`);
|
|
139
|
+
throw new UnsupportedCustomValidationError(`Validation provided for "${this.fieldType}" is not supported`);
|
|
140
|
+
}
|
|
141
|
+
} }
|
|
142
|
+
})], CustomFieldDefinition);
|
|
143
|
+
var CustomFieldDefinition_default = CustomFieldDefinition;
|
|
144
|
+
|
|
145
|
+
//#endregion
|
|
146
|
+
export { CustomFieldDefinition_default as default };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_index = require('../events/index.cjs');
|
|
3
|
+
const require_index$1 = require('../utils/validations/index.cjs');
|
|
4
|
+
const require_definition = require('../repository/definition.cjs');
|
|
5
|
+
const require_decorateMetadata = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.cjs');
|
|
6
|
+
const require_decorate = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.cjs');
|
|
7
|
+
let sequelize_typescript = require("sequelize-typescript");
|
|
8
|
+
|
|
9
|
+
//#region src/models/CustomFieldEntries.ts
|
|
10
|
+
var _ref, _ref2, _ref3;
|
|
11
|
+
let CustomFieldEntries = class CustomFieldEntries$1 extends sequelize_typescript.Model {
|
|
12
|
+
static afterSaveHandler(instance, options) {
|
|
13
|
+
if (options.transaction) options.transaction.afterCommit(() => require_index.sendDimEvent(instance[0]));
|
|
14
|
+
else require_index.sendDimEvent(instance[0]);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
require_decorate.__decorate([
|
|
18
|
+
sequelize_typescript.PrimaryKey,
|
|
19
|
+
(0, sequelize_typescript.Column)({
|
|
20
|
+
type: sequelize_typescript.DataType.UUID,
|
|
21
|
+
allowNull: false
|
|
22
|
+
}),
|
|
23
|
+
require_decorateMetadata.__decorateMetadata("design:type", String)
|
|
24
|
+
], CustomFieldEntries.prototype, "modelId", void 0);
|
|
25
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
26
|
+
type: sequelize_typescript.DataType.UUID,
|
|
27
|
+
allowNull: false
|
|
28
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldEntries.prototype, "entityId", void 0);
|
|
29
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
30
|
+
type: sequelize_typescript.DataType.JSONB,
|
|
31
|
+
allowNull: false,
|
|
32
|
+
defaultValue: {}
|
|
33
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref = typeof Record !== "undefined" && Record) === "function" ? _ref : Object)], CustomFieldEntries.prototype, "customFields", void 0);
|
|
34
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
35
|
+
type: sequelize_typescript.DataType.STRING,
|
|
36
|
+
allowNull: false
|
|
37
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldEntries.prototype, "modelType", void 0);
|
|
38
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
39
|
+
type: sequelize_typescript.DataType.DATE,
|
|
40
|
+
allowNull: false
|
|
41
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref2 = typeof Date !== "undefined" && Date) === "function" ? _ref2 : Object)], CustomFieldEntries.prototype, "createdAt", void 0);
|
|
42
|
+
require_decorate.__decorate([(0, sequelize_typescript.Column)({
|
|
43
|
+
type: sequelize_typescript.DataType.DATE,
|
|
44
|
+
allowNull: true
|
|
45
|
+
}), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref3 = typeof Date !== "undefined" && Date) === "function" ? _ref3 : Object)], CustomFieldEntries.prototype, "updatedAt", void 0);
|
|
46
|
+
require_decorate.__decorate([
|
|
47
|
+
sequelize_typescript.AfterUpsert,
|
|
48
|
+
require_decorateMetadata.__decorateMetadata("design:type", Function),
|
|
49
|
+
require_decorateMetadata.__decorateMetadata("design:paramtypes", [Array, Object]),
|
|
50
|
+
require_decorateMetadata.__decorateMetadata("design:returntype", void 0)
|
|
51
|
+
], CustomFieldEntries, "afterSaveHandler", null);
|
|
52
|
+
CustomFieldEntries = require_decorate.__decorate([(0, sequelize_typescript.Table)({
|
|
53
|
+
tableName: "custom_field_entries",
|
|
54
|
+
modelName: "CustomFieldEntries",
|
|
55
|
+
timestamps: true,
|
|
56
|
+
indexes: [{
|
|
57
|
+
name: "idx_cfe_custom_fields",
|
|
58
|
+
using: "gin",
|
|
59
|
+
operator: "jsonb_path_ops",
|
|
60
|
+
fields: ["custom_fields"]
|
|
61
|
+
}],
|
|
62
|
+
validate: { async validationByType() {
|
|
63
|
+
if (!Object.keys(this.customFields ?? {}).length) return;
|
|
64
|
+
const definitionsByName = await require_definition.getCustomFieldDefinitionsDictionary([this]);
|
|
65
|
+
require_index$1.validateInstanceCustomFieldEntries(this, definitionsByName);
|
|
66
|
+
} }
|
|
67
|
+
})], CustomFieldEntries);
|
|
68
|
+
var CustomFieldEntries_default = CustomFieldEntries;
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
exports.default = CustomFieldEntries_default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Model } from "sequelize-typescript";
|
|
2
|
+
import { CreateOptions } from "sequelize";
|
|
3
|
+
|
|
4
|
+
//#region src/models/CustomFieldEntries.d.ts
|
|
5
|
+
declare class CustomFieldEntries extends Model {
|
|
6
|
+
modelId: string;
|
|
7
|
+
entityId: string;
|
|
8
|
+
customFields: Record<string, any>;
|
|
9
|
+
modelType: string;
|
|
10
|
+
createdAt?: Date;
|
|
11
|
+
updatedAt?: Date;
|
|
12
|
+
static afterSaveHandler(instance: CustomFieldEntries[], options: CreateOptions): void;
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { CustomFieldEntries };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CreateOptions } from "sequelize";
|
|
2
|
+
import { Model } from "sequelize-typescript";
|
|
3
|
+
|
|
4
|
+
//#region src/models/CustomFieldEntries.d.ts
|
|
5
|
+
declare class CustomFieldEntries extends Model {
|
|
6
|
+
modelId: string;
|
|
7
|
+
entityId: string;
|
|
8
|
+
customFields: Record<string, any>;
|
|
9
|
+
modelType: string;
|
|
10
|
+
createdAt?: Date;
|
|
11
|
+
updatedAt?: Date;
|
|
12
|
+
static afterSaveHandler(instance: CustomFieldEntries[], options: CreateOptions): void;
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { CustomFieldEntries };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { sendDimEvent } from "../events/index.js";
|
|
2
|
+
import { validateInstanceCustomFieldEntries } from "../utils/validations/index.js";
|
|
3
|
+
import { getCustomFieldDefinitionsDictionary } from "../repository/definition.js";
|
|
4
|
+
import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.js";
|
|
5
|
+
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js";
|
|
6
|
+
import { AfterUpsert, Column, DataType, Model, PrimaryKey, Table } from "sequelize-typescript";
|
|
7
|
+
|
|
8
|
+
//#region src/models/CustomFieldEntries.ts
|
|
9
|
+
var _ref, _ref2, _ref3;
|
|
10
|
+
let CustomFieldEntries = class CustomFieldEntries$1 extends Model {
|
|
11
|
+
static afterSaveHandler(instance, options) {
|
|
12
|
+
if (options.transaction) options.transaction.afterCommit(() => sendDimEvent(instance[0]));
|
|
13
|
+
else sendDimEvent(instance[0]);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
__decorate([
|
|
17
|
+
PrimaryKey,
|
|
18
|
+
Column({
|
|
19
|
+
type: DataType.UUID,
|
|
20
|
+
allowNull: false
|
|
21
|
+
}),
|
|
22
|
+
__decorateMetadata("design:type", String)
|
|
23
|
+
], CustomFieldEntries.prototype, "modelId", void 0);
|
|
24
|
+
__decorate([Column({
|
|
25
|
+
type: DataType.UUID,
|
|
26
|
+
allowNull: false
|
|
27
|
+
}), __decorateMetadata("design:type", String)], CustomFieldEntries.prototype, "entityId", void 0);
|
|
28
|
+
__decorate([Column({
|
|
29
|
+
type: DataType.JSONB,
|
|
30
|
+
allowNull: false,
|
|
31
|
+
defaultValue: {}
|
|
32
|
+
}), __decorateMetadata("design:type", typeof (_ref = typeof Record !== "undefined" && Record) === "function" ? _ref : Object)], CustomFieldEntries.prototype, "customFields", void 0);
|
|
33
|
+
__decorate([Column({
|
|
34
|
+
type: DataType.STRING,
|
|
35
|
+
allowNull: false
|
|
36
|
+
}), __decorateMetadata("design:type", String)], CustomFieldEntries.prototype, "modelType", void 0);
|
|
37
|
+
__decorate([Column({
|
|
38
|
+
type: DataType.DATE,
|
|
39
|
+
allowNull: false
|
|
40
|
+
}), __decorateMetadata("design:type", typeof (_ref2 = typeof Date !== "undefined" && Date) === "function" ? _ref2 : Object)], CustomFieldEntries.prototype, "createdAt", void 0);
|
|
41
|
+
__decorate([Column({
|
|
42
|
+
type: DataType.DATE,
|
|
43
|
+
allowNull: true
|
|
44
|
+
}), __decorateMetadata("design:type", typeof (_ref3 = typeof Date !== "undefined" && Date) === "function" ? _ref3 : Object)], CustomFieldEntries.prototype, "updatedAt", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
AfterUpsert,
|
|
47
|
+
__decorateMetadata("design:type", Function),
|
|
48
|
+
__decorateMetadata("design:paramtypes", [Array, Object]),
|
|
49
|
+
__decorateMetadata("design:returntype", void 0)
|
|
50
|
+
], CustomFieldEntries, "afterSaveHandler", null);
|
|
51
|
+
CustomFieldEntries = __decorate([Table({
|
|
52
|
+
tableName: "custom_field_entries",
|
|
53
|
+
modelName: "CustomFieldEntries",
|
|
54
|
+
timestamps: true,
|
|
55
|
+
indexes: [{
|
|
56
|
+
name: "idx_cfe_custom_fields",
|
|
57
|
+
using: "gin",
|
|
58
|
+
operator: "jsonb_path_ops",
|
|
59
|
+
fields: ["custom_fields"]
|
|
60
|
+
}],
|
|
61
|
+
validate: { async validationByType() {
|
|
62
|
+
if (!Object.keys(this.customFields ?? {}).length) return;
|
|
63
|
+
const definitionsByName = await getCustomFieldDefinitionsDictionary([this]);
|
|
64
|
+
validateInstanceCustomFieldEntries(this, definitionsByName);
|
|
65
|
+
} }
|
|
66
|
+
})], CustomFieldEntries);
|
|
67
|
+
var CustomFieldEntries_default = CustomFieldEntries;
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
export { CustomFieldEntries_default as default };
|