@steroidsjs/nest 1.3.5 → 1.3.8
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/package.json +1 -1
- package/src/infrastructure/commands/MigrateCommand.js +8 -0
- package/src/infrastructure/commands/MigrateCommand.js.map +1 -1
- package/src/infrastructure/commands/importClassesFromDirectories.d.ts +2 -0
- package/src/infrastructure/commands/importClassesFromDirectories.js +78 -0
- package/src/infrastructure/commands/importClassesFromDirectories.js.map +1 -0
- package/src/infrastructure/decorators/fields/DecimalField.d.ts +1 -0
- package/src/infrastructure/decorators/fields/DecimalField.js +1 -1
- package/src/infrastructure/decorators/fields/DecimalField.js.map +1 -1
- package/src/infrastructure/decorators/fields/EnumField.d.ts +1 -0
- package/src/infrastructure/decorators/fields/EnumField.js +3 -1
- package/src/infrastructure/decorators/fields/EnumField.js.map +1 -1
- package/src/infrastructure/decorators/fields/FileField.d.ts +2 -0
- package/src/infrastructure/decorators/fields/FileField.js +15 -5
- package/src/infrastructure/decorators/fields/FileField.js.map +1 -1
- package/src/infrastructure/decorators/fields/ImageField.d.ts +6 -0
- package/src/infrastructure/decorators/fields/ImageField.js +10 -0
- package/src/infrastructure/decorators/fields/ImageField.js.map +1 -0
- package/src/infrastructure/decorators/fields/IntegerField.d.ts +1 -0
- package/src/infrastructure/decorators/fields/IntegerField.js +2 -2
- package/src/infrastructure/decorators/fields/IntegerField.js.map +1 -1
- package/src/infrastructure/decorators/fields/UpdateTimeField.js +3 -2
- package/src/infrastructure/decorators/fields/UpdateTimeField.js.map +1 -1
- package/src/infrastructure/decorators/fields/index.d.ts +1 -0
- package/src/infrastructure/decorators/fields/index.js +3 -1
- package/src/infrastructure/decorators/fields/index.js.map +1 -1
- package/src/usecases/helpers/ConditionHelper.d.ts +2 -2
- package/src/usecases/helpers/ConditionHelper.js +48 -25
- package/src/usecases/helpers/ConditionHelper.js.map +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/package.json
CHANGED
|
@@ -18,6 +18,14 @@ const common_1 = require("@nestjs/common");
|
|
|
18
18
|
const typeorm_1 = require("typeorm");
|
|
19
19
|
const dbml2code_1 = require("./dbml/dbml2code");
|
|
20
20
|
const generate_1 = require("./generate");
|
|
21
|
+
const ConnectionMetadataBuilder_1 = require("typeorm/connection/ConnectionMetadataBuilder");
|
|
22
|
+
const OrmUtils_1 = require("typeorm/util/OrmUtils");
|
|
23
|
+
const importClassesFromDirectories_1 = require("./importClassesFromDirectories");
|
|
24
|
+
ConnectionMetadataBuilder_1.ConnectionMetadataBuilder.prototype.buildMigrations = async function (migrations) {
|
|
25
|
+
const [migrationClasses, migrationDirectories] = OrmUtils_1.OrmUtils.splitClassesAndStrings(migrations);
|
|
26
|
+
const allMigrationClasses = [...migrationClasses, ...(await (0, importClassesFromDirectories_1.importClassesFromDirectories)(this.connection.logger, migrationDirectories))];
|
|
27
|
+
return allMigrationClasses.map(migrationClass => (0, typeorm_1.getFromContainer)(migrationClass));
|
|
28
|
+
};
|
|
21
29
|
let MigrateCommand = class MigrateCommand {
|
|
22
30
|
constructor(connection) {
|
|
23
31
|
this.connection = connection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrateCommand.js","sourceRoot":"","sources":["../../../../src/infrastructure/commands/MigrateCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAmD;AACnD,2CAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"MigrateCommand.js","sourceRoot":"","sources":["../../../../src/infrastructure/commands/MigrateCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAmD;AACnD,2CAA0C;AAC1C,qCAAyE;AACzE,gDAA2C;AAC3C,yCAAoC;AACpC,4FAAuF;AACvF,oDAA+C;AAC/C,iFAA4E;AAE5E,qDAAyB,CAAC,SAAS,CAAC,eAAe,GAAG,KAAK,WAAW,UAA+B;IACjG,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,GAAG,mBAAQ,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC7F,MAAM,mBAAmB,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,CAAC,MAAM,IAAA,2DAA4B,EAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACzI,OAAO,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,IAAA,0BAAgB,EAAqB,cAAc,CAAC,CAAC,CAAC;AAC3G,CAAC,CAAA;AAGD,IAAa,cAAc,GAA3B,MAAa,cAAc;IACvB,YACY,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAElC,CAAC;IAMD,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAChC,WAAW,EAAE,MAAM;SACtB,CAAC,CAAC;IACP,CAAC;IAMD,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACpC,WAAW,EAAE,MAAM;SACtB,CAAC,CAAC;IACP,CAAC;IAMD,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC3C,CAAC;IAMD,KAAK,CAAC,SAAS,CAOP,IAAY;QAEhB,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAMD,KAAK,CAAC,QAAQ;QACV,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;CAEJ,CAAA;AAhDG;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,gBAAgB;KAC7B,CAAC;;;;2CAKD;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,uBAAuB;KACpC,CAAC;;;;0CAKD;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,sBAAsB;KACnC,CAAC;;;;0CAGD;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,iCAAiC;KAC9C,CAAC;IAEG,WAAA,IAAA,2BAAU,EAAC;QACR,IAAI,EAAE,MAAM;QAEZ,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,QAAQ;KACjB,CAAC,CAAA;;;;+CAIL;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,0CAA0C;KACvD,CAAC;;;;8CAGD;AAxDQ,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAGe,oBAAU;GAFzB,cAAc,CA0D1B;AA1DY,wCAAc"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.importClassesFromDirectories = void 0;
|
|
4
|
+
const glob = require("glob");
|
|
5
|
+
const PlatformTools_1 = require("typeorm/platform/PlatformTools");
|
|
6
|
+
const EntitySchema_1 = require("typeorm/entity-schema/EntitySchema");
|
|
7
|
+
const ImportUtils_1 = require("typeorm/util/ImportUtils");
|
|
8
|
+
class MockMigration {
|
|
9
|
+
async up(queryRunner) {
|
|
10
|
+
await this._load();
|
|
11
|
+
await this._lazyInstance.up(queryRunner);
|
|
12
|
+
}
|
|
13
|
+
async down(queryRunner) {
|
|
14
|
+
await this._load();
|
|
15
|
+
await this._lazyInstance.down(queryRunner);
|
|
16
|
+
}
|
|
17
|
+
async _load() {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
if (!this._lazyInstance) {
|
|
20
|
+
const result = await (0, ImportUtils_1.importOrRequireFile)(PlatformTools_1.PlatformTools.pathResolve(this.file));
|
|
21
|
+
const MigrationClass = ((_a = result === null || result === void 0 ? void 0 : result[0]) === null || _a === void 0 ? void 0 : _a[this.name]) || ((_b = result === null || result === void 0 ? void 0 : result[0]) === null || _b === void 0 ? void 0 : _b.default) || (result === null || result === void 0 ? void 0 : result[0]);
|
|
22
|
+
this._lazyInstance = new MigrationClass();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const createMockMigration = file => {
|
|
27
|
+
const matches = /([0-9]+)-([a-zA-Z0-9]+)+.(ts|js)$/.exec(file);
|
|
28
|
+
const name = matches ? matches[2] + matches[1] : 'MockMigration';
|
|
29
|
+
const NewClass = new Function('return function ' + name + '(){ this.name = "' + name + '"; this.file = "' + file + '" }')();
|
|
30
|
+
NewClass.prototype = Object.create(MockMigration.prototype);
|
|
31
|
+
return NewClass;
|
|
32
|
+
};
|
|
33
|
+
async function importClassesFromDirectories(logger, directories, formats = [".js", ".mjs", ".cjs", ".ts", ".mts", ".cts"]) {
|
|
34
|
+
const logLevel = "info";
|
|
35
|
+
const classesNotFoundMessage = "No classes were found using the provided glob pattern: ";
|
|
36
|
+
const classesFoundMessage = "All classes found using provided glob pattern";
|
|
37
|
+
function loadFileClasses(exported, allLoaded) {
|
|
38
|
+
if (typeof exported === "function" || exported instanceof EntitySchema_1.EntitySchema) {
|
|
39
|
+
allLoaded.push(exported);
|
|
40
|
+
}
|
|
41
|
+
else if (Array.isArray(exported)) {
|
|
42
|
+
exported.forEach((i) => loadFileClasses(i, allLoaded));
|
|
43
|
+
}
|
|
44
|
+
else if (typeof exported === "object" && exported !== null) {
|
|
45
|
+
Object.keys(exported).forEach(key => loadFileClasses(exported[key], allLoaded));
|
|
46
|
+
}
|
|
47
|
+
return allLoaded;
|
|
48
|
+
}
|
|
49
|
+
let allFiles = [];
|
|
50
|
+
await Promise.all(directories.map(dir => {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
glob(PlatformTools_1.PlatformTools.pathNormalize(dir), (err, matches) => {
|
|
53
|
+
if (err) {
|
|
54
|
+
reject(err);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
allFiles = allFiles.concat(matches);
|
|
58
|
+
resolve(null);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}));
|
|
63
|
+
if (directories.length > 0 && allFiles.length === 0) {
|
|
64
|
+
logger.log(logLevel, `${classesNotFoundMessage} "${directories}"`);
|
|
65
|
+
}
|
|
66
|
+
else if (allFiles.length > 0) {
|
|
67
|
+
logger.log(logLevel, `${classesFoundMessage} "${directories}" : "${allFiles}"`);
|
|
68
|
+
}
|
|
69
|
+
const dirs = allFiles
|
|
70
|
+
.filter(file => {
|
|
71
|
+
const dtsExtension = file.substring(file.length - 5, file.length);
|
|
72
|
+
return formats.indexOf(PlatformTools_1.PlatformTools.pathExtname(file)) !== -1 && dtsExtension !== ".d.ts";
|
|
73
|
+
})
|
|
74
|
+
.map(file => createMockMigration(file));
|
|
75
|
+
return loadFileClasses(dirs, []);
|
|
76
|
+
}
|
|
77
|
+
exports.importClassesFromDirectories = importClassesFromDirectories;
|
|
78
|
+
//# sourceMappingURL=importClassesFromDirectories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importClassesFromDirectories.js","sourceRoot":"","sources":["../../../../src/infrastructure/commands/importClassesFromDirectories.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,6 @@ import { IBaseFieldOptions } from './BaseField';
|
|
|
2
2
|
export interface IDecimalFieldOptions extends IBaseFieldOptions {
|
|
3
3
|
precision?: number;
|
|
4
4
|
scale?: number;
|
|
5
|
+
isDecimalConstraintMessage?: string;
|
|
5
6
|
}
|
|
6
7
|
export declare function DecimalField(options?: IDecimalFieldOptions): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
@@ -21,7 +21,7 @@ function DecimalField(options = {}) {
|
|
|
21
21
|
}),
|
|
22
22
|
options.nullable && (0, class_validator_1.ValidateIf)((object, value) => value !== null),
|
|
23
23
|
(0, class_validator_1.IsString)({
|
|
24
|
-
message: 'Должно быть строкой',
|
|
24
|
+
message: options.isDecimalConstraintMessage || 'Должно быть строкой',
|
|
25
25
|
}),
|
|
26
26
|
].filter(Boolean));
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecimalField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/DecimalField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,qCAA+B;AAC/B,qDAAqD;AACrD,2CAAyD;
|
|
1
|
+
{"version":3,"file":"DecimalField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/DecimalField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,qCAA+B;AAC/B,qDAAqD;AACrD,2CAAyD;AAQzD,SAAgB,YAAY,CAAC,UAAgC,EAAE;IAC3D,OAAO,IAAA,wBAAe,EAAC,GAAG;QAClB,IAAA,qBAAS,EAAC,OAAO,EAAE;YACf,aAAa,EAAE,cAAc;YAC7B,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,QAAQ;SACnB,CAAC;QACF,IAAA,gBAAM,EAAC;YACH,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO,CAAC,YAAY;YAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;SAC5B,CAAC;QACF,OAAO,CAAC,QAAQ,IAAI,IAAA,4BAAU,EAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;QACjE,IAAA,0BAAQ,EAAC;YACL,OAAO,EAAE,OAAO,CAAC,0BAA0B,IAAI,qBAAqB;SACvE,CAAC;KACL,CAAC,MAAM,CAAC,OAAO,CAAC,CACpB,CAAC;AACN,CAAC;AApBD,oCAoBC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IBaseFieldOptions } from './BaseField';
|
|
2
2
|
export interface IEnumFieldOptions extends IBaseFieldOptions {
|
|
3
3
|
enum?: object | string[] | any;
|
|
4
|
+
isEnumConstraintMessage?: string;
|
|
4
5
|
}
|
|
5
6
|
export declare function EnumField(options?: IEnumFieldOptions): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
@@ -33,7 +33,9 @@ function EnumField(options = {}) {
|
|
|
33
33
|
nullable: options.nullable,
|
|
34
34
|
}),
|
|
35
35
|
options.nullable && (0, class_validator_1.ValidateIf)((object, value) => value !== null),
|
|
36
|
-
(0, class_validator_1.IsEnum)(options.enum
|
|
36
|
+
(0, class_validator_1.IsEnum)(options.enum, {
|
|
37
|
+
message: options.isEnumConstraintMessage || 'Выберите одно из значений'
|
|
38
|
+
}),
|
|
37
39
|
].filter(Boolean));
|
|
38
40
|
}
|
|
39
41
|
exports.EnumField = EnumField;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/EnumField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,qCAA+B;AAC/B,qDAAmD;AACnD,2CAAyD;AACzD,4DAAqD;
|
|
1
|
+
{"version":3,"file":"EnumField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/EnumField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,qCAA+B;AAC/B,qDAAmD;AACnD,2CAAyD;AACzD,4DAAqD;AAOrD,SAAgB,SAAS,CAAC,UAA6B,EAAE;IACrD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC7B,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC9C,IAAI,KAAK,CAAC,SAAS,YAAY,kBAAQ,EAAE;gBACrC,GAAG,mCACI,GAAG,GACH,KAAK,CAAC,MAAM,EAAE,CACpB,CAAC;aACL;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAClC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;aACtB;YACD,OAAO,GAAG,CAAC;QACf,CAAC,EAAE,EAAE,CAAC,CAAC;KACV;SAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,YAAY,kBAAQ,EAAE;QACzF,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;KACxC;IAED,OAAO,IAAA,wBAAe,EAAC,GAAG;QAClB,IAAA,qBAAS,EAAC,OAAO,EAAC;YACd,aAAa,EAAE,WAAW;YAC1B,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,QAAQ;SACnB,CAAC;QACF,IAAA,gBAAM,EAAC;YACH,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO,CAAC,YAAY;YAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC7B,CAAC;QACF,OAAO,CAAC,QAAQ,IAAI,IAAA,4BAAU,EAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;QACjE,IAAA,wBAAM,EAAC,OAAO,CAAC,IAAI,EAAE;YACjB,OAAO,EAAE,OAAO,CAAC,uBAAuB,IAAI,2BAA2B;SAC1E,CAAC;KACL,CAAC,MAAM,CAAC,OAAO,CAAC,CACpB,CAAC;AACN,CAAC;AAlCD,8BAkCC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { IBaseFieldOptions } from './BaseField';
|
|
2
2
|
export interface IFileField extends IBaseFieldOptions {
|
|
3
3
|
multiple?: boolean;
|
|
4
|
+
isImage?: boolean;
|
|
4
5
|
}
|
|
6
|
+
export declare function getFileFieldDecorators(options: IFileField): (<TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void)[];
|
|
5
7
|
export declare function FileField(options?: IFileField): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FileField = void 0;
|
|
3
|
+
exports.FileField = exports.getFileFieldDecorators = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
6
|
const class_validator_1 = require("class-validator");
|
|
7
7
|
const BaseField_1 = require("./BaseField");
|
|
8
|
-
function
|
|
9
|
-
return
|
|
8
|
+
function getFileFieldDecorators(options) {
|
|
9
|
+
return [
|
|
10
10
|
(0, BaseField_1.BaseField)(options, {
|
|
11
11
|
decoratorName: 'FileField',
|
|
12
12
|
appType: 'file',
|
|
@@ -18,8 +18,18 @@ function FileField(options = {}) {
|
|
|
18
18
|
nullable: options.nullable,
|
|
19
19
|
}),
|
|
20
20
|
options.nullable && (0, class_validator_1.ValidateIf)((object, value) => value),
|
|
21
|
-
options.multiple
|
|
22
|
-
|
|
21
|
+
options.multiple
|
|
22
|
+
? (0, class_validator_1.IsArray)({
|
|
23
|
+
message: options.isImage ? 'Необходимо загрузить изображения' : 'Необходимо загрузить файлы',
|
|
24
|
+
})
|
|
25
|
+
: (0, class_validator_1.IsInt)({
|
|
26
|
+
message: options.isImage ? 'Необходимо загрузить изображение' : 'Необходимо загрузить файл',
|
|
27
|
+
}),
|
|
28
|
+
].filter(Boolean);
|
|
29
|
+
}
|
|
30
|
+
exports.getFileFieldDecorators = getFileFieldDecorators;
|
|
31
|
+
function FileField(options = {}) {
|
|
32
|
+
return (0, common_1.applyDecorators)(...getFileFieldDecorators(options));
|
|
23
33
|
}
|
|
24
34
|
exports.FileField = FileField;
|
|
25
35
|
//# sourceMappingURL=FileField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/FileField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,qCAA+B;AAC/B,qDAA2D;AAC3D,2CAAyD;
|
|
1
|
+
{"version":3,"file":"FileField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/FileField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,qCAA+B;AAC/B,qDAA2D;AAC3D,2CAAyD;AAOzD,SAAgB,sBAAsB,CAAC,OAAmB;IACtD,OAAO;QACH,IAAA,qBAAS,EAAC,OAAO,EAAE;YACf,aAAa,EAAE,WAAW;YAC1B,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,QAAQ;SACnB,CAAC;QACF,IAAA,gBAAM,EAAC;YACH,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YACnD,OAAO,EAAE,OAAO,CAAC,YAAY;YAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC7B,CAAC;QACF,OAAO,CAAC,QAAQ,IAAI,IAAA,4BAAU,EAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;QACxD,OAAO,CAAC,QAAQ;YACZ,CAAC,CAAC,IAAA,yBAAO,EAAC;gBACN,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,4BAA4B;aAC/F,CAAC;YACF,CAAC,CAAC,IAAA,uBAAK,EAAC;gBACJ,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,2BAA2B;aAC9F,CAAC;KACT,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AArBD,wDAqBC;AAED,SAAgB,SAAS,CAAC,UAAsB,EAAE;IAC9C,OAAO,IAAA,wBAAe,EAClB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CACrC,CAAC;AACN,CAAC;AAJD,8BAIC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IBaseFieldOptions } from './BaseField';
|
|
2
|
+
export interface IFileField extends IBaseFieldOptions {
|
|
3
|
+
multiple?: boolean;
|
|
4
|
+
isImage?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function ImageField(options?: IFileField): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ImageField = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const FileField_1 = require("./FileField");
|
|
6
|
+
function ImageField(options = {}) {
|
|
7
|
+
return (0, common_1.applyDecorators)(...(0, FileField_1.getFileFieldDecorators)(Object.assign(Object.assign({}, options), { isImage: true })));
|
|
8
|
+
}
|
|
9
|
+
exports.ImageField = ImageField;
|
|
10
|
+
//# sourceMappingURL=ImageField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/ImageField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,2CAAmD;AAOnD,SAAgB,UAAU,CAAC,UAAsB,EAAE;IAC/C,OAAO,IAAA,wBAAe,EAClB,GAAG,IAAA,kCAAsB,kCAAK,OAAO,KAAE,OAAO,EAAE,IAAI,IAAE,CACzD,CAAC;AACN,CAAC;AAJD,gCAIC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IBaseFieldOptions } from './BaseField';
|
|
2
2
|
export interface IIntegerFieldOptions extends IBaseFieldOptions {
|
|
3
3
|
unique?: boolean;
|
|
4
|
+
isIntConstraintMessage?: string;
|
|
4
5
|
}
|
|
5
6
|
export declare function IntegerField(options?: IIntegerFieldOptions): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
@@ -25,10 +25,10 @@ function IntegerField(options = {}) {
|
|
|
25
25
|
if (Array.isArray(value)) {
|
|
26
26
|
return value.map(valueItem => (0, lodash_1.toInteger)(valueItem));
|
|
27
27
|
}
|
|
28
|
-
return value === null
|
|
28
|
+
return value === null ? value : (0, lodash_1.toInteger)(value);
|
|
29
29
|
}),
|
|
30
30
|
(0, class_validator_1.IsInt)({
|
|
31
|
-
message: 'Должно быть числом',
|
|
31
|
+
message: options.isIntConstraintMessage || 'Должно быть числом',
|
|
32
32
|
each: options.isArray,
|
|
33
33
|
}),
|
|
34
34
|
typeof options.min === 'number' && (0, class_validator_1.Min)(options.min),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegerField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/IntegerField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,mCAA+C;AAC/C,qCAA+B;AAC/B,qDAA4D;AAC5D,2CAAyD;AACzD,yDAA4C;
|
|
1
|
+
{"version":3,"file":"IntegerField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/IntegerField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,mCAA+C;AAC/C,qCAA+B;AAC/B,qDAA4D;AAC5D,2CAAyD;AACzD,yDAA4C;AAO5C,SAAgB,YAAY,CAAC,UAAgC,EAAE;IAC3D,OAAO,IAAA,wBAAe,EAAC,GAAG;QACtB,IAAA,qBAAS,EAAC,OAAO,EAAE;YACf,aAAa,EAAE,cAAc;YAC7B,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,QAAQ;SACnB,CAAC;QACF,IAAA,gBAAM,EAAC;YACH,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO,CAAC,YAAY;YAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC7B,CAAC;QACF,OAAO,CAAC,QAAQ,IAAI,IAAA,4BAAU,EAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;QACjG,IAAA,6BAAS,EAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE;YAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAA,kBAAU,EAAC,SAAS,CAAC,CAAC,CAAC;aACxD;YACD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC;QACF,IAAA,uBAAK,EAAC;YACF,OAAO,EAAE,OAAO,CAAC,sBAAsB,IAAI,oBAAoB;YAC/D,IAAI,EAAE,OAAO,CAAC,OAAO;SACxB,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAA,qBAAG,EAAC,OAAO,CAAC,GAAG,CAAC;QACnD,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAA,qBAAG,EAAC,OAAO,CAAC,GAAG,CAAC;KACtD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,CAAC;AA3BD,oCA2BC"}
|
|
@@ -7,6 +7,7 @@ const typeorm_1 = require("typeorm");
|
|
|
7
7
|
const EventListenerTypes_1 = require("typeorm/metadata/types/EventListenerTypes");
|
|
8
8
|
const BaseField_1 = require("./BaseField");
|
|
9
9
|
const DateTimeField_1 = require("./DateTimeField");
|
|
10
|
+
const class_validator_1 = require("class-validator");
|
|
10
11
|
const UpdateTimeBehaviour = (object, propertyName) => {
|
|
11
12
|
const methodName = propertyName + '__updateTimeBehaviour';
|
|
12
13
|
if (!object[methodName]) {
|
|
@@ -37,9 +38,9 @@ function UpdateTimeField(options = {}) {
|
|
|
37
38
|
nullable: (0, lodash_1.has)(options, 'nullable') ? options.nullable : false,
|
|
38
39
|
transformer: {
|
|
39
40
|
from: DateTimeField_1.normalizeDateTime,
|
|
40
|
-
to: DateTimeField_1.normalizeDateTime,
|
|
41
|
+
to: () => (0, DateTimeField_1.normalizeDateTime)(new Date()),
|
|
41
42
|
},
|
|
42
|
-
}), UpdateTimeBehaviour);
|
|
43
|
+
}), UpdateTimeBehaviour, (0, class_validator_1.IsString)());
|
|
43
44
|
}
|
|
44
45
|
exports.UpdateTimeField = UpdateTimeField;
|
|
45
46
|
//# sourceMappingURL=UpdateTimeField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateTimeField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/UpdateTimeField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,mCAAmC;AACnC,qCAAuD;AACvD,kFAA6E;AAC7E,2CAAyD;AACzD,mDAAkD;
|
|
1
|
+
{"version":3,"file":"UpdateTimeField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/UpdateTimeField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,mCAAmC;AACnC,qCAAuD;AACvD,kFAA6E;AAC7E,2CAAyD;AACzD,mDAAkD;AAClD,qDAAyC;AAMzC,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;IACjD,MAAM,UAAU,GAAG,YAAY,GAAG,uBAAuB,CAAC;IAC1D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;QAErB,MAAM,CAAC,UAAU,CAAC,GAAG;YACjB,IAAI,CAAC,YAAY,CAAC,GAAG,IAAA,iCAAiB,EAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC;KACL;IAED,CAAC,uCAAkB,CAAC,aAAa,EAAE,uCAAkB,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAChF,IAAA,gCAAsB,GAAE,CAAC,eAAe,CAAC,IAAI,CAAC;YAC1C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,UAAU;YACxB,IAAI;SACP,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,SAAgB,eAAe,CAAC,UAAmC,EAAE;IACjE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QAChB,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC;KAC9B;IAED,OAAO,IAAA,wBAAe,EAClB,IAAA,qBAAS,EAAC,OAAO,EAAE;QACf,aAAa,EAAE,iBAAiB;QAChC,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,QAAQ;KACnB,CAAC,EACF,IAAA,gBAAM,EAAC;QACH,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,IAAA,YAAI,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,EAAE,IAAA,YAAI,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QACzE,QAAQ,EAAE,IAAA,YAAI,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;QAC9D,WAAW,EAAE;YACT,IAAI,EAAE,iCAAiB;YACvB,EAAE,EAAE,GAAG,EAAE,CAAC,IAAA,iCAAiB,EAAC,IAAI,IAAI,EAAE,CAAC;SAC1C;KACJ,CAAC,EACF,mBAAmB,EACnB,IAAA,0BAAQ,GAAE,CACb,CAAC;AACN,CAAC;AAxBD,0CAwBC"}
|
|
@@ -32,4 +32,5 @@ export { UidField } from './UidField';
|
|
|
32
32
|
export { UpdateTimeField } from './UpdateTimeField';
|
|
33
33
|
export { RelationField } from './RelationField';
|
|
34
34
|
export { RelationIdField } from './RelationIdField';
|
|
35
|
+
export { ImageField } from './ImageField';
|
|
35
36
|
export declare type IAllFieldOptions = ICreateTimeFieldOptions & IDateTimeFieldColumnOptions & IDecimalFieldOptions & IEnumFieldOptions & IExtendFieldOptions & IFileField & IRelationFieldOptions & IRelationIdFieldOptions & IUpdateTimeFieldOptions & IEmailFieldOptions & IPhoneFieldOptions & IStringFieldOptions & IIntegerFieldOptions;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RelationIdField = exports.RelationField = exports.UpdateTimeField = exports.UidField = exports.TimeField = exports.TextField = exports.StringField = exports.PrimaryKeyField = exports.PhoneField = exports.PasswordField = exports.IntegerField = exports.HtmlField = exports.FileField = exports.EnumField = exports.EmailField = exports.DecimalField = exports.DateTimeField = exports.DateField = exports.CreateTimeField = exports.CoordinateField = exports.BooleanField = void 0;
|
|
3
|
+
exports.ImageField = exports.RelationIdField = exports.RelationField = exports.UpdateTimeField = exports.UidField = exports.TimeField = exports.TextField = exports.StringField = exports.PrimaryKeyField = exports.PhoneField = exports.PasswordField = exports.IntegerField = exports.HtmlField = exports.FileField = exports.EnumField = exports.EmailField = exports.DecimalField = exports.DateTimeField = exports.DateField = exports.CreateTimeField = exports.CoordinateField = exports.BooleanField = void 0;
|
|
4
4
|
var BooleanField_1 = require("./BooleanField");
|
|
5
5
|
Object.defineProperty(exports, "BooleanField", { enumerable: true, get: function () { return BooleanField_1.BooleanField; } });
|
|
6
6
|
var CoordinateField_1 = require("./CoordinateField");
|
|
@@ -43,4 +43,6 @@ var RelationField_1 = require("./RelationField");
|
|
|
43
43
|
Object.defineProperty(exports, "RelationField", { enumerable: true, get: function () { return RelationField_1.RelationField; } });
|
|
44
44
|
var RelationIdField_1 = require("./RelationIdField");
|
|
45
45
|
Object.defineProperty(exports, "RelationIdField", { enumerable: true, get: function () { return RelationIdField_1.RelationIdField; } });
|
|
46
|
+
var ImageField_1 = require("./ImageField");
|
|
47
|
+
Object.defineProperty(exports, "ImageField", { enumerable: true, get: function () { return ImageField_1.ImageField; } });
|
|
46
48
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/index.ts"],"names":[],"mappings":";;;AAcA,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AACnB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/index.ts"],"names":[],"mappings":";;;AAcA,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AACnB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Brackets } from 'typeorm';
|
|
2
1
|
import { WhereExpressionBuilder } from 'typeorm/query-builder/WhereExpressionBuilder';
|
|
3
2
|
export declare type IConditionOperatorSingle = '=' | '>' | '>=' | '=>' | '<' | '<=' | '=<' | 'like' | 'ilike' | 'between' | 'in' | 'and' | '&&' | 'or' | '||';
|
|
4
3
|
export declare type IConditionOperatorAndOr = 'and' | '&&' | 'or' | '||';
|
|
5
4
|
export declare type ICondition = Record<string, unknown> | [IConditionOperatorAndOr, ...any[]] | [IConditionOperatorSingle, string, ...any[]] | ICondition[] | ((qb: WhereExpressionBuilder) => any);
|
|
6
5
|
export declare class ConditionHelper {
|
|
7
|
-
static
|
|
6
|
+
static toTypeOrmFilter(condition: ICondition): any;
|
|
7
|
+
static toTypeOrm(condition: ICondition, filterEmpty?: boolean): any;
|
|
8
8
|
}
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ConditionHelper = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
4
5
|
const typeorm_1 = require("typeorm");
|
|
5
|
-
const
|
|
6
|
+
const emptyCondition = {};
|
|
7
|
+
const isEmpty = value => value === null || typeof value === 'undefined' || value === emptyCondition;
|
|
6
8
|
class ConditionHelper {
|
|
7
|
-
static
|
|
9
|
+
static toTypeOrmFilter(condition) {
|
|
10
|
+
return ConditionHelper.toTypeOrm(condition, true);
|
|
11
|
+
}
|
|
12
|
+
static toTypeOrm(condition, filterEmpty = false) {
|
|
8
13
|
if (typeof condition === 'function') {
|
|
9
14
|
return new typeorm_1.Brackets(condition);
|
|
10
15
|
}
|
|
11
16
|
if (typeof condition === 'object' && !Array.isArray(condition)) {
|
|
12
|
-
|
|
17
|
+
const result = Object.keys(condition).reduce((obj, key) => {
|
|
18
|
+
const value = condition[key];
|
|
19
|
+
if (!filterEmpty || !isEmpty(value)) {
|
|
20
|
+
(0, lodash_1.set)(obj, key, value);
|
|
21
|
+
}
|
|
22
|
+
return obj;
|
|
23
|
+
}, {});
|
|
24
|
+
return Object.keys(result).length === 0 ? emptyCondition : result;
|
|
13
25
|
}
|
|
14
26
|
if (Array.isArray(condition) && condition.length > 1 && typeof condition[0] === 'string') {
|
|
15
27
|
let operator = condition[0].toLowerCase();
|
|
@@ -17,50 +29,61 @@ class ConditionHelper {
|
|
|
17
29
|
if (isNot) {
|
|
18
30
|
operator = operator.replace(/^not\s+/, '');
|
|
19
31
|
}
|
|
32
|
+
const objectWhere = (isNot, isEmpty, key, value) => {
|
|
33
|
+
return !filterEmpty || !isEmpty
|
|
34
|
+
? (0, lodash_1.set)({}, key, isNot ? (0, typeorm_1.Not)(value) : value)
|
|
35
|
+
: emptyCondition;
|
|
36
|
+
};
|
|
20
37
|
const key = condition[1];
|
|
21
38
|
const value = condition[2];
|
|
22
39
|
switch (operator) {
|
|
23
40
|
case '=':
|
|
24
|
-
return
|
|
41
|
+
return objectWhere(isNot, isEmpty(value), key, value);
|
|
25
42
|
case '>':
|
|
26
|
-
return
|
|
43
|
+
return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.MoreThan)(value));
|
|
27
44
|
case '>=':
|
|
28
45
|
case '=>':
|
|
29
|
-
return
|
|
46
|
+
return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.MoreThanOrEqual)(value));
|
|
30
47
|
case '<':
|
|
31
|
-
return
|
|
48
|
+
return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.LessThan)(value));
|
|
32
49
|
case '<=':
|
|
33
50
|
case '=<':
|
|
34
|
-
return
|
|
51
|
+
return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.LessThanOrEqual)(value));
|
|
35
52
|
case 'like':
|
|
36
|
-
return { [key]: notCondition(isNot, (0, typeorm_1.Like)(value)) };
|
|
37
53
|
case 'ilike':
|
|
38
|
-
|
|
54
|
+
const likeMethod = operator === 'ilike' ? typeorm_1.ILike : typeorm_1.Like;
|
|
55
|
+
return objectWhere(isNot, isEmpty(value), key, likeMethod(value.indexOf('%') !== -1 ? value : '%' + value + '%'));
|
|
39
56
|
case 'between':
|
|
40
|
-
return
|
|
57
|
+
return objectWhere(isNot, isEmpty(condition[2] || condition[3]), key, (0, typeorm_1.Between)(condition[2], condition[3]));
|
|
41
58
|
case 'in':
|
|
42
|
-
if (!Array.isArray(value)) {
|
|
59
|
+
if (value && !Array.isArray(value)) {
|
|
43
60
|
throw Error('Wrong value for IN operator: ' + JSON.stringify(value));
|
|
44
61
|
}
|
|
45
|
-
return
|
|
62
|
+
return objectWhere(isNot, isEmpty(value) || value.length === 0, key, (0, typeorm_1.In)(value));
|
|
46
63
|
case 'and':
|
|
47
64
|
case '&&':
|
|
48
|
-
if (isNot) {
|
|
49
|
-
throw Error('Unsupport NOT for AND operator. Operator: ' + operator);
|
|
50
|
-
}
|
|
51
|
-
return new typeorm_1.Brackets(query2 => {
|
|
52
|
-
condition.slice(1).forEach(item => {
|
|
53
|
-
query2.andWhere(ConditionHelper.toTypeOrm(item));
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
65
|
case 'or':
|
|
57
66
|
case '||':
|
|
58
67
|
if (isNot) {
|
|
59
|
-
throw Error('Unsupport NOT for OR operator. Operator: ' + operator);
|
|
68
|
+
throw Error('Unsupport NOT for AND/OR operator. Operator: ' + operator);
|
|
69
|
+
}
|
|
70
|
+
const isOr = ['or', '||'].includes(operator);
|
|
71
|
+
const values = condition.slice(1)
|
|
72
|
+
.map(item => ConditionHelper.toTypeOrm(item, filterEmpty))
|
|
73
|
+
.filter(value => !isEmpty(value));
|
|
74
|
+
if (values.length === 0) {
|
|
75
|
+
return emptyCondition;
|
|
60
76
|
}
|
|
61
|
-
return new typeorm_1.Brackets(query2 => {
|
|
62
|
-
|
|
63
|
-
|
|
77
|
+
return new typeorm_1.Brackets((query2) => {
|
|
78
|
+
const parentQuery = query2.parentQueryBuilder;
|
|
79
|
+
query2.expressionMap.joinAttributes = parentQuery.expressionMap.joinAttributes;
|
|
80
|
+
values.forEach(value => {
|
|
81
|
+
if (isOr) {
|
|
82
|
+
query2.orWhere(value);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
query2.andWhere(value);
|
|
86
|
+
}
|
|
64
87
|
});
|
|
65
88
|
});
|
|
66
89
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionHelper.js","sourceRoot":"","sources":["../../../../src/usecases/helpers/ConditionHelper.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"ConditionHelper.js","sourceRoot":"","sources":["../../../../src/usecases/helpers/ConditionHelper.ts"],"names":[],"mappings":"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"}
|