@autofleet/sadot 0.0.1-beta → 0.0.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{src/api → api}/index.js +1 -0
- package/dist/api/index.js.map +1 -0
- package/dist/{src/api → api}/v1/definition/index.js +28 -25
- package/dist/api/v1/definition/index.js.map +1 -0
- package/dist/api/v1/definition/validations.js +36 -0
- package/dist/api/v1/definition/validations.js.map +1 -0
- package/dist/{src/api → api}/v1/errors.js +1 -0
- package/dist/api/v1/errors.js.map +1 -0
- package/dist/{src/api → api}/v1/index.js +2 -1
- package/dist/api/v1/index.js.map +1 -0
- package/dist/{src/events → events}/index.js +2 -21
- package/dist/events/index.js.map +1 -0
- package/dist/{src/hooks → hooks}/create.js +18 -15
- package/dist/hooks/create.js.map +1 -0
- package/dist/{src/hooks/enrich.js → hooks/find.js} +29 -52
- package/dist/hooks/find.js.map +1 -0
- package/dist/{src/hooks → hooks}/index.js +4 -5
- package/dist/hooks/index.js.map +1 -0
- package/dist/{src/hooks → hooks}/update.js +23 -8
- package/dist/hooks/update.js.map +1 -0
- package/dist/{src/hooks → hooks}/workaround.js +15 -5
- package/dist/hooks/workaround.js.map +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/{src/models → models}/CustomFieldDefinition.js +17 -22
- package/dist/models/CustomFieldDefinition.js.map +1 -0
- package/dist/{src/models → models}/CustomFieldValue.js +39 -24
- package/dist/models/CustomFieldValue.js.map +1 -0
- package/dist/models/index.js +50 -0
- package/dist/models/index.js.map +1 -0
- package/dist/{src/models → models}/tests/AssociatedTestModel.js +1 -0
- package/dist/models/tests/AssociatedTestModel.js.map +1 -0
- package/dist/{src/models → models}/tests/TestModel.js +1 -0
- package/dist/models/tests/TestModel.js.map +1 -0
- package/dist/repository/definition.js +107 -0
- package/dist/repository/definition.js.map +1 -0
- package/dist/{src/repository → repository}/value.js +36 -27
- package/dist/repository/value.js.map +1 -0
- package/dist/{src/tests → tests}/api/test-api.js +22 -12
- package/dist/tests/api/test-api.js.map +1 -0
- package/dist/tests/helpers/index.js +28 -0
- package/dist/tests/helpers/index.js.map +1 -0
- package/dist/tests/mocks/index.js +60 -0
- package/dist/tests/mocks/index.js.map +1 -0
- package/dist/{src/tests → tests}/mocks/testModel.js +18 -10
- package/dist/tests/mocks/testModel.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/{src/types → types}/definition/index.js +1 -0
- package/dist/types/definition/index.js.map +1 -0
- package/dist/{src/types → types}/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/{src/types → types}/value/index.js +1 -0
- package/dist/types/value/index.js.map +1 -0
- package/dist/{src/utils → utils}/db/index.js +1 -8
- package/dist/utils/db/index.js.map +1 -0
- package/dist/{src/utils → utils}/logger/index.js +2 -2
- package/dist/utils/logger/index.js.map +1 -0
- package/dist/{src/utils → utils}/validations/custom-fields.js +1 -0
- package/dist/utils/validations/custom-fields.js.map +1 -0
- package/dist/utils/validations/custom.js +58 -0
- package/dist/utils/validations/custom.js.map +1 -0
- package/dist/{src/utils → utils}/validations/index.js +1 -0
- package/dist/utils/validations/index.js.map +1 -0
- package/dist/utils/validations/type.js +32 -0
- package/dist/utils/validations/type.js.map +1 -0
- package/package.json +5 -12
- package/src/api/v1/definition/index.ts +13 -20
- package/src/api/v1/definition/validations.ts +27 -13
- package/src/api/v1/index.ts +1 -1
- package/src/events/index.ts +1 -23
- package/src/hooks/create.ts +6 -12
- package/src/hooks/find.ts +82 -23
- package/src/hooks/index.ts +2 -4
- package/src/hooks/update.ts +11 -5
- package/src/hooks/workaround.ts +2 -2
- package/src/index.ts +17 -60
- package/src/models/CustomFieldDefinition.ts +15 -23
- package/src/models/CustomFieldValue.ts +10 -10
- package/src/models/index.ts +17 -79
- package/src/models/tests/AssociatedTestModel.ts +1 -0
- package/src/models/tests/TestModel.ts +1 -0
- package/src/repository/definition.ts +41 -27
- package/src/repository/value.ts +11 -12
- package/src/tests/mocks/events.mock.ts +1 -1
- package/src/tests/mocks/{definition.mock.ts → index.ts} +6 -5
- package/src/tests/mocks/testModel.ts +7 -12
- package/src/types/definition/index.ts +1 -0
- package/src/types/index.ts +6 -4
- package/src/types/value/index.ts +2 -1
- package/src/utils/db/index.ts +0 -7
- package/src/utils/logger/index.ts +1 -3
- package/src/utils/validations/custom.ts +45 -28
- package/src/utils/validations/type.ts +6 -23
- package/tsconfig.json +26 -9
- package/dist/jest.config.d.ts +0 -12
- package/dist/src/api/index.d.ts +0 -2
- package/dist/src/api/v1/definition/index.d.ts +0 -2
- package/dist/src/api/v1/definition/validations.d.ts +0 -2
- package/dist/src/api/v1/definition/validations.js +0 -36
- package/dist/src/api/v1/errors.d.ts +0 -2
- package/dist/src/api/v1/index.d.ts +0 -2
- package/dist/src/errors/index.d.ts +0 -16
- package/dist/src/errors/index.js +0 -45
- package/dist/src/events/index.d.ts +0 -4
- package/dist/src/hooks/create.d.ts +0 -9
- package/dist/src/hooks/enrich.d.ts +0 -5
- package/dist/src/hooks/find.d.ts +0 -1
- package/dist/src/hooks/find.js +0 -29
- package/dist/src/hooks/index.d.ts +0 -6
- package/dist/src/hooks/update.d.ts +0 -9
- package/dist/src/hooks/workaround.d.ts +0 -10
- package/dist/src/index.d.ts +0 -11
- package/dist/src/index.js +0 -105
- package/dist/src/models/CustomFieldDefinition.d.ts +0 -23
- package/dist/src/models/CustomFieldValue.d.ts +0 -15
- package/dist/src/models/index.d.ts +0 -8
- package/dist/src/models/index.js +0 -87
- package/dist/src/models/tests/AssociatedTestModel.d.ts +0 -12
- package/dist/src/models/tests/TestModel.d.ts +0 -11
- package/dist/src/repository/definition.d.ts +0 -17
- package/dist/src/repository/definition.js +0 -80
- package/dist/src/repository/value.d.ts +0 -24
- package/dist/src/tests/api/test-api.d.ts +0 -2
- package/dist/src/tests/helpers/database-config.d.ts +0 -15
- package/dist/src/tests/helpers/database-config.js +0 -16
- package/dist/src/tests/helpers/index.d.ts +0 -2
- package/dist/src/tests/helpers/index.js +0 -18
- package/dist/src/tests/mocks/definition.mock.d.ts +0 -37
- package/dist/src/tests/mocks/definition.mock.js +0 -64
- package/dist/src/tests/mocks/events.mock.d.ts +0 -3
- package/dist/src/tests/mocks/events.mock.js +0 -19
- package/dist/src/tests/mocks/testModel.d.ts +0 -12
- package/dist/src/types/definition/index.d.ts +0 -23
- package/dist/src/types/index.d.ts +0 -13
- package/dist/src/types/value/index.d.ts +0 -15
- package/dist/src/utils/constants/index.d.ts +0 -1
- package/dist/src/utils/constants/index.js +0 -5
- package/dist/src/utils/db/index.d.ts +0 -4
- package/dist/src/utils/logger/index.d.ts +0 -2
- package/dist/src/utils/validations/custom-fields.d.ts +0 -2
- package/dist/src/utils/validations/custom.d.ts +0 -15
- package/dist/src/utils/validations/custom.js +0 -42
- package/dist/src/utils/validations/index.d.ts +0 -2
- package/dist/src/utils/validations/type.d.ts +0 -18
- package/dist/src/utils/validations/type.js +0 -50
- package/dist/src/utils/validations/validators.d.ts +0 -12
- package/dist/src/utils/validations/validators.js +0 -33
- package/src/errors/index.ts +0 -42
- package/src/hooks/enrich.ts +0 -125
- package/src/tests/helpers/database-config.ts +0 -14
- package/src/utils/constants/index.ts +0 -2
- package/src/utils/validations/validators.ts +0 -34
package/dist/index.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
17
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
18
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
19
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
20
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
21
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
22
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const sequelize_1 = require("sequelize");
|
|
30
|
+
const models_1 = require("./models");
|
|
31
|
+
const api_1 = __importDefault(require("./api"));
|
|
32
|
+
const hooks_1 = require("./hooks");
|
|
33
|
+
const db_1 = __importDefault(require("./utils/db"));
|
|
34
|
+
const logger_1 = __importDefault(require("./utils/logger"));
|
|
35
|
+
__exportStar(require("./utils/validations/custom-fields"), exports);
|
|
36
|
+
const addHooks = (models, getModel) => {
|
|
37
|
+
models.forEach(({ name, scopeAttributes }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
+
try {
|
|
39
|
+
const model = getModel(name);
|
|
40
|
+
if (!model)
|
|
41
|
+
return;
|
|
42
|
+
model.rawAttributes.customFields = {
|
|
43
|
+
type: sequelize_1.DataTypes.VIRTUAL,
|
|
44
|
+
};
|
|
45
|
+
model.refreshAttributes();
|
|
46
|
+
// TODO: Uncomment after tests are passed
|
|
47
|
+
// model.addHook('afterFind', workaround);
|
|
48
|
+
model.addHook('afterFind', hooks_1.afterFind);
|
|
49
|
+
model.addHook('beforeBulkCreate', hooks_1.beforeBulkCreate);
|
|
50
|
+
model.addHook('afterFind', (0, hooks_1.afterFind)(scopeAttributes));
|
|
51
|
+
model.addHook('beforeBulkUpdate', hooks_1.beforeBulkUpdate);
|
|
52
|
+
model.addHook('beforeCreate', (0, hooks_1.beforeCreate)(scopeAttributes));
|
|
53
|
+
model.addHook('beforeUpdate', (0, hooks_1.beforeUpdate)(scopeAttributes));
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
logger_1.default.error(`Could not add custom fields hook to model ${name}. `, e);
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Adding custom fields enrichment to the models inside the MODELS_FILE_NAME json file
|
|
62
|
+
* @see {@link 'custom-fields/config'} for configurations
|
|
63
|
+
*/
|
|
64
|
+
const useCustomFields = (app, getModel, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
+
const { innerSequelize, models } = options;
|
|
66
|
+
// deepAfterFindWorkAround(sequelize);
|
|
67
|
+
if (app) {
|
|
68
|
+
app.use('/api', api_1.default);
|
|
69
|
+
}
|
|
70
|
+
if (!innerSequelize) {
|
|
71
|
+
const moreInnerSequelize = (0, db_1.default)(options.databaseConfig);
|
|
72
|
+
yield (0, models_1.initTables)(moreInnerSequelize);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
yield (0, models_1.initTables)(innerSequelize);
|
|
76
|
+
}
|
|
77
|
+
addHooks(models, getModel);
|
|
78
|
+
});
|
|
79
|
+
exports.default = useCustomFields;
|
|
80
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yCAAsC;AACtC,qCAAsC;AACtC,gDAAwB;AACxB,mCAAoG;AACpG,oDAAgC;AAChC,4DAAoC;AAGpC,oEAAkD;AAElD,MAAM,QAAQ,GAAG,CAAC,MAAsB,EAAE,QAAsB,EAAE,EAAE;IAClE,MAAM,CAAC,OAAO,CAAC,CAAO,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE;QACjD,IAAI;YACF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,KAAK,CAAC,aAAa,CAAC,YAAY,GAAG;gBACjC,IAAI,EAAE,qBAAS,CAAC,OAAO;aACxB,CAAC;YACF,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC1B,yCAAyC;YACzC,0CAA0C;YAC1C,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAS,CAAC,CAAC;YACtC,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,wBAAgB,CAAC,CAAC;YACpD,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAA,iBAAS,EAAC,eAAe,CAAC,CAAC,CAAC;YACvD,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,wBAAgB,CAAC,CAAC;YACpD,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,IAAA,oBAAY,EAAC,eAAe,CAAC,CAAC,CAAC;YAC7D,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,IAAA,oBAAY,EAAC,eAAe,CAAC,CAAC,CAAC;SAC9D;QAAC,OAAO,CAAC,EAAE;YACV,gBAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;SACxE;IACH,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,eAAe,GAAG,CACtB,GAAuB,EACvB,QAAsB,EACtB,OAA2B,EACZ,EAAE;IACjB,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3C,sCAAsC;IACtC,IAAI,GAAG,EAAE;QACP,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,aAAG,CAAC,CAAC;KACtB;IACD,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,kBAAkB,GAAG,IAAA,YAAM,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,IAAA,mBAAU,EAAC,kBAAkB,CAAC,CAAC;KACtC;SAAM;QACL,MAAM,IAAA,mBAAU,EAAC,cAAc,CAAC,CAAC;KAClC;IACD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC,CAAA,CAAC;AAEF,kBAAe,eAAe,CAAC"}
|
|
@@ -9,17 +9,27 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CustomFieldDefinitionType = void 0;
|
|
12
13
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
13
|
-
/* eslint-disable indent */
|
|
14
14
|
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
15
|
-
const custom_1 = require("../utils/validations/custom");
|
|
16
|
-
const type_1 = require("../utils/validations/type");
|
|
17
15
|
const _1 = require(".");
|
|
18
16
|
const events_1 = require("../events");
|
|
19
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Supported custom field types
|
|
19
|
+
*/
|
|
20
|
+
var CustomFieldDefinitionType;
|
|
21
|
+
(function (CustomFieldDefinitionType) {
|
|
22
|
+
CustomFieldDefinitionType["NUMBER"] = "number";
|
|
23
|
+
CustomFieldDefinitionType["BOOLEAN"] = "boolean";
|
|
24
|
+
CustomFieldDefinitionType["DATE"] = "date";
|
|
25
|
+
CustomFieldDefinitionType["DATETIME"] = "datetime";
|
|
26
|
+
CustomFieldDefinitionType["TEXT"] = "text";
|
|
27
|
+
CustomFieldDefinitionType["IMAGE"] = "image";
|
|
28
|
+
CustomFieldDefinitionType["ENUM"] = "enum";
|
|
29
|
+
})(CustomFieldDefinitionType = exports.CustomFieldDefinitionType || (exports.CustomFieldDefinitionType = {}));
|
|
20
30
|
let CustomFieldDefinition = class CustomFieldDefinition extends sequelize_typescript_1.Model {
|
|
21
31
|
static displayNameDefaultValue(instance) {
|
|
22
|
-
if (!instance
|
|
32
|
+
if (!(instance === null || instance === void 0 ? void 0 : instance.displayName)) {
|
|
23
33
|
// eslint-disable-next-line no-param-reassign
|
|
24
34
|
instance.displayName = instance.name;
|
|
25
35
|
}
|
|
@@ -56,11 +66,6 @@ __decorate([
|
|
|
56
66
|
__metadata("design:type", String)
|
|
57
67
|
], CustomFieldDefinition.prototype, "displayName", void 0);
|
|
58
68
|
__decorate([
|
|
59
|
-
(0, sequelize_typescript_1.Is)('SupportedType', (value) => {
|
|
60
|
-
if (!Object.values(type_1.CustomFieldDefinitionType).includes(value)) {
|
|
61
|
-
throw new errors_1.UnsupportedCustomFieldTypeError(`"${value}" is not a supported type.`);
|
|
62
|
-
}
|
|
63
|
-
}),
|
|
64
69
|
(0, sequelize_typescript_1.Column)({
|
|
65
70
|
type: sequelize_typescript_1.DataType.STRING,
|
|
66
71
|
allowNull: false,
|
|
@@ -146,20 +151,10 @@ CustomFieldDefinition = __decorate([
|
|
|
146
151
|
(0, sequelize_typescript_1.DefaultScope)(() => ({ where: { disabled: false } })),
|
|
147
152
|
(0, sequelize_typescript_1.Table)({
|
|
148
153
|
indexes: [
|
|
149
|
-
{
|
|
150
|
-
name: 'unique_name_model_type',
|
|
151
|
-
fields: ['model_type', 'entity_id', 'name'],
|
|
152
|
-
unique: true,
|
|
153
|
-
},
|
|
154
|
+
{ name: "unique_name_model_type", fields: ["name", "model_type", "entity_id"], unique: true },
|
|
154
155
|
],
|
|
155
156
|
timestamps: true,
|
|
156
|
-
validate: {
|
|
157
|
-
validationByType() {
|
|
158
|
-
if (!(0, custom_1.validateValidation)(this.fieldType, this.validation)) {
|
|
159
|
-
throw new errors_1.UnsupportedCustomValidationError(`Validation provided for "${this.fieldType}" is not supported`);
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
},
|
|
163
157
|
})
|
|
164
158
|
], CustomFieldDefinition);
|
|
165
159
|
exports.default = CustomFieldDefinition;
|
|
160
|
+
//# sourceMappingURL=CustomFieldDefinition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomFieldDefinition.js","sourceRoot":"","sources":["../../src/models/CustomFieldDefinition.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,46 +31,60 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
31
31
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
32
32
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
33
|
};
|
|
34
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
35
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
36
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
37
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
38
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
39
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
40
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
41
|
+
});
|
|
42
|
+
};
|
|
34
43
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
44
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
45
|
};
|
|
37
46
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
47
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
39
|
-
/* eslint-disable indent */
|
|
40
48
|
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
41
49
|
const events_1 = require("../events");
|
|
42
50
|
const _1 = require(".");
|
|
43
51
|
const validations_1 = __importDefault(require("../utils/validations"));
|
|
44
52
|
const CustomFieldDefinitionRepo = __importStar(require("../repository/definition"));
|
|
45
|
-
const
|
|
53
|
+
const logger_1 = __importDefault(require("../utils/logger"));
|
|
46
54
|
let CustomFieldValue = class CustomFieldValue extends sequelize_typescript_1.Model {
|
|
47
|
-
static
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
static validateValues(instances) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
logger_1.default.info('CustomFieldValue BeforeBulkCreate/BeforeBulkUpdate', { instances });
|
|
58
|
+
const ids = instances.map(instance => instance.customFieldDefinitionId);
|
|
59
|
+
const uniqueIds = [...new Set(ids)];
|
|
60
|
+
const definitions = yield CustomFieldDefinitionRepo.findByIds(uniqueIds, { withDisabled: true });
|
|
61
|
+
if (!definitions || definitions.length !== uniqueIds.length) {
|
|
62
|
+
throw new Error('Definitions not found');
|
|
63
|
+
}
|
|
64
|
+
instances.forEach((instance) => {
|
|
65
|
+
const { validation, fieldType, } = definitions
|
|
66
|
+
.find(definition => definition.id === instance.customFieldDefinitionId);
|
|
67
|
+
const isValid = (0, validations_1.default)(instance.value, fieldType, validation);
|
|
68
|
+
if (!isValid) {
|
|
69
|
+
throw new Error('Invalid value');
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
static validateValue(instance) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
logger_1.default.info('CustomFieldValue BeforeCreate/BeforeUpdate', { instance });
|
|
77
|
+
const { customFieldDefinitionId } = instance;
|
|
78
|
+
const cfd = yield CustomFieldDefinitionRepo.findById(customFieldDefinitionId, { withDisabled: true });
|
|
79
|
+
const { validation, fieldType } = cfd;
|
|
57
80
|
const isValid = (0, validations_1.default)(instance.value, fieldType, validation);
|
|
58
81
|
if (!isValid) {
|
|
59
|
-
throw new
|
|
82
|
+
throw new Error('Invalid value');
|
|
60
83
|
}
|
|
61
84
|
});
|
|
62
85
|
}
|
|
63
|
-
static async validateValue(instance) {
|
|
64
|
-
const { customFieldDefinitionId } = instance;
|
|
65
|
-
// eslint-disable-next-line max-len
|
|
66
|
-
const cfd = await CustomFieldDefinitionRepo.findById(customFieldDefinitionId, { withDisabled: true });
|
|
67
|
-
const { validation, fieldType } = cfd;
|
|
68
|
-
const isValid = (0, validations_1.default)(instance.value, fieldType, validation);
|
|
69
|
-
if (!isValid) {
|
|
70
|
-
throw new errors_1.InvalidValueError(instance.value, fieldType);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
86
|
static afterSaveHandler(instance, options) {
|
|
87
|
+
logger_1.default.info('CustomFieldValue afterSave', { instance });
|
|
74
88
|
if (options.transaction) {
|
|
75
89
|
options.transaction.afterCommit(() => (0, events_1.sendDimEvent)(instance[0]));
|
|
76
90
|
}
|
|
@@ -99,7 +113,7 @@ __decorate([
|
|
|
99
113
|
__decorate([
|
|
100
114
|
(0, sequelize_typescript_1.Column)({
|
|
101
115
|
type: sequelize_typescript_1.DataType.JSONB,
|
|
102
|
-
allowNull:
|
|
116
|
+
allowNull: false,
|
|
103
117
|
}),
|
|
104
118
|
__metadata("design:type", Object)
|
|
105
119
|
], CustomFieldValue.prototype, "value", void 0);
|
|
@@ -146,3 +160,4 @@ CustomFieldValue = __decorate([
|
|
|
146
160
|
})
|
|
147
161
|
], CustomFieldValue);
|
|
148
162
|
exports.default = CustomFieldValue;
|
|
163
|
+
//# sourceMappingURL=CustomFieldValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomFieldValue.js","sourceRoot":"","sources":["../../src/models/CustomFieldValue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.initTables = exports.AssociatedTestModel = exports.TestModel = exports.CustomFieldDefinition = exports.CustomFieldValue = void 0;
|
|
16
|
+
const logger_1 = __importDefault(require("../utils/logger"));
|
|
17
|
+
// import addPermanentHooks from '../hooks/permanent-hooks';
|
|
18
|
+
const CustomFieldDefinition_1 = __importDefault(require("./CustomFieldDefinition"));
|
|
19
|
+
exports.CustomFieldDefinition = CustomFieldDefinition_1.default;
|
|
20
|
+
const CustomFieldValue_1 = __importDefault(require("./CustomFieldValue"));
|
|
21
|
+
exports.CustomFieldValue = CustomFieldValue_1.default;
|
|
22
|
+
const TestModel_1 = __importDefault(require("./tests/TestModel"));
|
|
23
|
+
exports.TestModel = TestModel_1.default;
|
|
24
|
+
const AssociatedTestModel_1 = __importDefault(require("./tests/AssociatedTestModel"));
|
|
25
|
+
exports.AssociatedTestModel = AssociatedTestModel_1.default;
|
|
26
|
+
// export const CustomFieldDefinition = CustomFieldDefinitionModel;
|
|
27
|
+
// export { default as CustomFieldDefinition } from './custom-field-definition.model';
|
|
28
|
+
const productionModels = [CustomFieldDefinition_1.default, CustomFieldValue_1.default];
|
|
29
|
+
const testModels = [...productionModels, TestModel_1.default, AssociatedTestModel_1.default];
|
|
30
|
+
const initTables = (sequelize) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
logger_1.default.info('custom-fields: initialize custom-fields tables');
|
|
32
|
+
// Detect models and import them to the orm
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
34
|
+
if (!sequelize.addModels) {
|
|
35
|
+
throw new Error('sequelize instance must have addModels function');
|
|
36
|
+
}
|
|
37
|
+
sequelize.addModels(process.env.NODE_ENV === 'test' ? testModels : productionModels);
|
|
38
|
+
yield sequelize.dropSchema('custom-fields', { logging: false });
|
|
39
|
+
yield sequelize.createSchema('custom-fields', { logging: false });
|
|
40
|
+
logger_1.default.info('custom-fields: models added');
|
|
41
|
+
yield CustomFieldDefinition_1.default.sync({ alter: true });
|
|
42
|
+
yield CustomFieldValue_1.default.sync({ alter: true });
|
|
43
|
+
if (process.env.NODE_ENV === 'test') {
|
|
44
|
+
yield TestModel_1.default.sync({ alter: true });
|
|
45
|
+
yield AssociatedTestModel_1.default.sync({ alter: true });
|
|
46
|
+
}
|
|
47
|
+
logger_1.default.info('custom-fields: models synced');
|
|
48
|
+
});
|
|
49
|
+
exports.initTables = initTables;
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,6DAAqC;AACrC,4DAA4D;AAE5D,oFAA4D;AAiCjC,gCAjCpB,+BAAqB,CAiCoB;AAhChD,0EAAkD;AAgCzC,2BAhCF,0BAAgB,CAgCE;AA/BzB,kEAA0C;AA+BQ,oBA/B3C,mBAAS,CA+B2C;AA9B3D,sFAA8D;AA8BD,8BA9BtD,6BAAmB,CA8BsD;AA5BhF,mEAAmE;AACnE,sFAAsF;AAEtF,MAAM,gBAAgB,GAAG,CAAC,+BAAqB,EAAE,0BAAgB,CAAC,CAAC;AACnE,MAAM,UAAU,GAAG,CAAC,GAAG,gBAAgB,EAAE,mBAAS,EAAE,6BAAmB,CAAC,CAAC;AAEzE,MAAM,UAAU,GAAG,CAAO,SAAoB,EAAiB,EAAE;IAC/D,gBAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC9D,2CAA2C;IAC3C,4EAA4E;IAC5E,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;KACpE;IACD,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACrF,MAAM,SAAS,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,MAAM,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAElE,gBAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,+BAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,0BAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;QACnC,MAAM,mBAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,6BAAmB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;KACjD;IACD,gBAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAC9C,CAAC,CAAA,CAAC;AAEgF,gCAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssociatedTestModel.js","sourceRoot":"","sources":["../../../src/models/tests/AssociatedTestModel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAAsD;AACtD,+DAQ8B;AAC9B,4DAAoC;AAGpC,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,4BAAK;CAyCtC,CAAA;AAxCC;IAAC,iCAAU;IACV,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,YAAY,EAAE,+BAAQ,CAAC,MAAM;QAC7B,SAAS,EAAE,KAAK;KACjB,CAAC;;+CACU;AAEZ;IAAC,IAAA,iCAAU,EAAC,GAAG,EAAE,CAAC,mBAAS,CAAC;IAC3B,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;wDACmB;AAErB;IAAC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;oDACc;AAEhB;IAAC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC;;4DACsB;AAExB;IAAC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC;;2DACqB;AAEvB;IAAC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;KACvB,CAAC;;6DACyB;AAE3B;IAAC,IAAA,gCAAS,EAAC,GAAG,EAAE,CAAC,mBAAS,CAAC;8BAChB,mBAAS;sDAAC;AAxCjB,mBAAmB;IADxB,IAAA,4BAAK,EAAC,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;GACjE,mBAAmB,CAyCxB;AAED,kBAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestModel.js","sourceRoot":"","sources":["../../../src/models/tests/TestModel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAAsD;AACtD,+DAO8B;AAC9B,gFAAwD;AAGxD,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,4BAAK;CAkC5B,CAAA;AAjCC;IAAC,iCAAU;IACV,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,YAAY,EAAE,+BAAQ,CAAC,MAAM;QAC7B,SAAS,EAAE,KAAK;KACjB,CAAC;;qCACU;AAEZ;IAAC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;0CACc;AAEhB;IAAC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC;;kDACsB;AAExB;IAAC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC;;iDACqB;AAEvB;IAAC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;KACvB,CAAC;;gDACsB;AAExB;IAAC,IAAA,8BAAO,EAAC,GAAG,EAAE,CAAC,6BAAmB,CAAC;;mDACK;AAjCpC,SAAS;IADd,IAAA,4BAAK,EAAC,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;GACjE,SAAS,CAkCd;AAED,kBAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getRequiredFields = exports.destroy = exports.disable = exports.update = exports.findDefinitionsByModels = exports.findByWhere = exports.findByEntityId = exports.findById = exports.findByIds = exports.findAll = exports.create = void 0;
|
|
13
|
+
const sequelize_1 = require("sequelize");
|
|
14
|
+
const models_1 = require("../models");
|
|
15
|
+
const create = (data) => models_1.CustomFieldDefinition.create(data);
|
|
16
|
+
exports.create = create;
|
|
17
|
+
const findAll = (query, options = { withDisabled: false }) => {
|
|
18
|
+
if (options.withDisabled) {
|
|
19
|
+
return models_1.CustomFieldDefinition.unscoped().findAll({
|
|
20
|
+
where: query,
|
|
21
|
+
include: [models_1.CustomFieldValue],
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return models_1.CustomFieldDefinition.findAll({
|
|
25
|
+
where: query,
|
|
26
|
+
include: [models_1.CustomFieldValue],
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
exports.findAll = findAll;
|
|
30
|
+
const findByIds = (ids, options = { withDisabled: false }) => (0, exports.findAll)({ id: { [sequelize_1.Op.in]: ids } }, options);
|
|
31
|
+
exports.findByIds = findByIds;
|
|
32
|
+
const findById = (id, options = { withDisabled: false }) => {
|
|
33
|
+
const { withDisabled } = options;
|
|
34
|
+
if (withDisabled) {
|
|
35
|
+
return models_1.CustomFieldDefinition.unscoped().findByPk(id, {
|
|
36
|
+
include: [models_1.CustomFieldValue],
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return models_1.CustomFieldDefinition.findByPk(id, {
|
|
40
|
+
include: [models_1.CustomFieldValue],
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.findById = findById;
|
|
44
|
+
const findByEntityId = (entityId, options = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
+
return models_1.CustomFieldDefinition.findAll({
|
|
46
|
+
where: { entityId },
|
|
47
|
+
transaction: options.transaction,
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
exports.findByEntityId = findByEntityId;
|
|
51
|
+
const findByWhere = (where) => models_1.CustomFieldDefinition.findOne({
|
|
52
|
+
where,
|
|
53
|
+
include: [models_1.CustomFieldValue],
|
|
54
|
+
});
|
|
55
|
+
exports.findByWhere = findByWhere;
|
|
56
|
+
const findDefinitionsByModels = (modelTypes, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
57
|
+
const query = { modelType: { [sequelize_1.Op.in]: modelTypes } };
|
|
58
|
+
return models_1.CustomFieldDefinition.findAll({
|
|
59
|
+
where: query,
|
|
60
|
+
include: [models_1.CustomFieldValue],
|
|
61
|
+
transaction: options === null || options === void 0 ? void 0 : options.transaction,
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
exports.findDefinitionsByModels = findDefinitionsByModels;
|
|
65
|
+
const update = (id, data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
const updatedDefinition = (yield models_1.CustomFieldDefinition.update(data, {
|
|
67
|
+
where: { id },
|
|
68
|
+
returning: true,
|
|
69
|
+
individualHooks: true,
|
|
70
|
+
}))[1][0];
|
|
71
|
+
return updatedDefinition;
|
|
72
|
+
});
|
|
73
|
+
exports.update = update;
|
|
74
|
+
const disable = (id) => models_1.CustomFieldDefinition.update({ disabled: true }, { where: { id } });
|
|
75
|
+
exports.disable = disable;
|
|
76
|
+
const destroy = (id) => models_1.CustomFieldDefinition.destroy({ where: { id } });
|
|
77
|
+
exports.destroy = destroy;
|
|
78
|
+
/**
|
|
79
|
+
* Return the names of the required fields for a given model
|
|
80
|
+
*/
|
|
81
|
+
const getRequiredFields = (modelType, modelId, entityId, onlyNull = false) => __awaiter(void 0, void 0, void 0, function* () {
|
|
82
|
+
const entityIds = Array.isArray(entityId) ? entityId : [entityId];
|
|
83
|
+
const modelIds = Array.isArray(modelId) ? modelId : [modelId];
|
|
84
|
+
// const valueQuery = Object.assign(
|
|
85
|
+
// {
|
|
86
|
+
// modelId: { [Op.in]: modelIds },
|
|
87
|
+
// },
|
|
88
|
+
// onlyNull ? { value: { [Op.eq]: null } } : null,
|
|
89
|
+
// );
|
|
90
|
+
const valueQuery = onlyNull ? {
|
|
91
|
+
modelId: { [sequelize_1.Op.in]: modelIds },
|
|
92
|
+
value: { [sequelize_1.Op.eq]: null },
|
|
93
|
+
} : {};
|
|
94
|
+
const requiredFields = yield models_1.CustomFieldDefinition.findAll({
|
|
95
|
+
where: { required: true, modelType, entityId: { [sequelize_1.Op.in]: entityIds } },
|
|
96
|
+
include: {
|
|
97
|
+
model: models_1.CustomFieldValue,
|
|
98
|
+
where: Object.assign({}, valueQuery),
|
|
99
|
+
required: false,
|
|
100
|
+
},
|
|
101
|
+
logging: true,
|
|
102
|
+
});
|
|
103
|
+
const requiredFieldsNames = requiredFields.map(definition => definition.name);
|
|
104
|
+
return [...new Set(requiredFieldsNames)];
|
|
105
|
+
});
|
|
106
|
+
exports.getRequiredFields = getRequiredFields;
|
|
107
|
+
//# sourceMappingURL=definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/repository/definition.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,86 +22,95 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
25
34
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
36
|
};
|
|
28
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
38
|
exports.deleteValue = exports.updateValues = exports.findValuesByModelIds = exports.findValuesByModelId = exports.findAllValues = exports.create = exports.findByModelIdAndDefinition = void 0;
|
|
30
39
|
/* eslint-disable max-len */
|
|
40
|
+
const sequelize_1 = require("sequelize");
|
|
31
41
|
const models_1 = require("../models");
|
|
32
42
|
const DefinitionRepo = __importStar(require("./definition"));
|
|
33
43
|
const logger_1 = __importDefault(require("../utils/logger"));
|
|
34
|
-
const
|
|
35
|
-
const findByModelIdAndDefinition = async (modelId, customFieldDefinitionId) => models_1.CustomFieldValue.findAll({ where: { modelId, customFieldDefinitionId }, include: [models_1.CustomFieldDefinition] });
|
|
44
|
+
const findByModelIdAndDefinition = (modelId, customFieldDefinitionId) => __awaiter(void 0, void 0, void 0, function* () { return models_1.CustomFieldValue.findAll({ where: { modelId, customFieldDefinitionId }, include: [models_1.CustomFieldDefinition] }); });
|
|
36
45
|
exports.findByModelIdAndDefinition = findByModelIdAndDefinition;
|
|
37
|
-
const create =
|
|
38
|
-
const created =
|
|
46
|
+
const create = (data, withAssociations = false) => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
|
+
const created = yield models_1.CustomFieldValue.create(data);
|
|
39
48
|
if (withAssociations) {
|
|
40
|
-
const createdWithAssociations =
|
|
41
|
-
return createdWithAssociations
|
|
49
|
+
const createdWithAssociations = yield (0, exports.findByModelIdAndDefinition)(created.modelId, created.customFieldDefinitionId);
|
|
50
|
+
return createdWithAssociations === null || createdWithAssociations === void 0 ? void 0 : createdWithAssociations[0];
|
|
42
51
|
}
|
|
43
52
|
return created;
|
|
44
|
-
};
|
|
53
|
+
});
|
|
45
54
|
exports.create = create;
|
|
46
|
-
const findAllValues =
|
|
55
|
+
const findAllValues = () => __awaiter(void 0, void 0, void 0, function* () { return models_1.CustomFieldValue.findAll({ include: [models_1.CustomFieldDefinition] }); });
|
|
47
56
|
exports.findAllValues = findAllValues;
|
|
48
57
|
/**
|
|
49
58
|
* Get all values for model instance id (with their definitions)
|
|
50
59
|
* @param modelId
|
|
51
60
|
* @returns CustomFieldValue[]
|
|
52
61
|
*/
|
|
53
|
-
const findValuesByModelId =
|
|
62
|
+
const findValuesByModelId = (modelId) => __awaiter(void 0, void 0, void 0, function* () { return models_1.CustomFieldValue.findAll({ where: { modelId }, include: [models_1.CustomFieldDefinition] }); });
|
|
54
63
|
exports.findValuesByModelId = findValuesByModelId;
|
|
55
64
|
/**
|
|
56
65
|
* Retrieves custom field values for given model IDs
|
|
57
66
|
* @param modelIds - An array of model IDs to query custom field values for.
|
|
58
67
|
* @param options - Optional configuration object.
|
|
59
68
|
*/
|
|
60
|
-
const findValuesByModelIds =
|
|
69
|
+
const findValuesByModelIds = (modelIds, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
70
|
const { transaction } = options;
|
|
62
71
|
return models_1.CustomFieldValue.findAll({
|
|
63
72
|
where: { modelId: modelIds },
|
|
73
|
+
include: [models_1.CustomFieldDefinition],
|
|
64
74
|
transaction,
|
|
65
|
-
raw: true,
|
|
66
|
-
nest: true,
|
|
67
75
|
});
|
|
68
|
-
};
|
|
76
|
+
});
|
|
69
77
|
exports.findValuesByModelIds = findValuesByModelIds;
|
|
70
78
|
/**
|
|
71
79
|
* Try to update custom field values for a model instance.
|
|
72
80
|
* Create new value record if not exists, but fails if value's definition not exist.
|
|
73
81
|
* Return the updated values
|
|
74
82
|
*/
|
|
75
|
-
const updateValues =
|
|
83
|
+
const updateValues = (modelType, modelId, valuesToUpdate, options = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
76
84
|
logger_1.default.info(`custom-fields: updating values for ${modelType} ${modelId}`, { valuesToUpdate });
|
|
77
85
|
const names = Object.keys(valuesToUpdate);
|
|
78
|
-
const fieldDefinitions =
|
|
79
|
-
const disabledDefinitions = fieldDefinitions.filter(
|
|
86
|
+
const fieldDefinitions = (yield DefinitionRepo.findAll({ modelType, name: { [sequelize_1.Op.in]: names } }, { withDisabled: true, transaction: options.transaction })) || [];
|
|
87
|
+
const disabledDefinitions = fieldDefinitions.filter(def => def.disabled);
|
|
80
88
|
if (fieldDefinitions.length !== names.length) {
|
|
81
|
-
const missingDefinitions = names.filter(
|
|
82
|
-
throw new
|
|
89
|
+
const missingDefinitions = names.filter(name => !fieldDefinitions.some(def => def.name === name));
|
|
90
|
+
throw new Error(`custom-fields: missing definitions for ${missingDefinitions.join(', ')}`);
|
|
83
91
|
}
|
|
84
|
-
const disabledNames = disabledDefinitions
|
|
85
|
-
const valuesWithDisabledDefinitions = names.filter(
|
|
86
|
-
if (valuesWithDisabledDefinitions
|
|
92
|
+
const disabledNames = (disabledDefinitions === null || disabledDefinitions === void 0 ? void 0 : disabledDefinitions.map(def => def.name)) || [];
|
|
93
|
+
const valuesWithDisabledDefinitions = names.filter(name => disabledNames.includes(name));
|
|
94
|
+
if ((valuesWithDisabledDefinitions === null || valuesWithDisabledDefinitions === void 0 ? void 0 : valuesWithDisabledDefinitions.length) > 0) {
|
|
87
95
|
logger_1.default.warn(`custom-fields: trying to update disabled values: ${valuesWithDisabledDefinitions.join(', ')}`);
|
|
88
96
|
}
|
|
89
|
-
const values = names.map(
|
|
97
|
+
const values = names.map(name => ({
|
|
90
98
|
modelId,
|
|
91
99
|
value: valuesToUpdate[name],
|
|
92
100
|
updatedAt: new Date(),
|
|
93
|
-
customFieldDefinitionId: fieldDefinitions.find(
|
|
101
|
+
customFieldDefinitionId: fieldDefinitions.find(def => def.name === name).id,
|
|
94
102
|
}));
|
|
95
|
-
return Promise.all(values.map(
|
|
96
|
-
const [cfv] =
|
|
103
|
+
return Promise.all(values.map((value) => __awaiter(void 0, void 0, void 0, function* () {
|
|
104
|
+
const [cfv] = yield models_1.CustomFieldValue.upsert(value, {
|
|
97
105
|
transaction: options.transaction,
|
|
98
106
|
});
|
|
99
107
|
return cfv;
|
|
100
|
-
}));
|
|
101
|
-
};
|
|
108
|
+
})));
|
|
109
|
+
});
|
|
102
110
|
exports.updateValues = updateValues;
|
|
103
111
|
const deleteValue = (id, options = {}) => models_1.CustomFieldValue.update({ deletedAt: new Date() }, {
|
|
104
112
|
where: { id },
|
|
105
113
|
transaction: options.transaction,
|
|
106
114
|
});
|
|
107
115
|
exports.deleteValue = deleteValue;
|
|
116
|
+
//# sourceMappingURL=value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/repository/value.ts"],"names":[],"mappings":"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"}
|