@steroidsjs/nest 1.5.0-beta.1 → 1.5.0-beta.11
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/adapters/QueryAdapterTypeORM.d.ts +7 -0
- package/src/infrastructure/adapters/QueryAdapterTypeORM.js +89 -0
- package/src/infrastructure/adapters/QueryAdapterTypeORM.js.map +1 -0
- package/src/infrastructure/commands/MigrateCommand.js +8 -0
- package/src/infrastructure/commands/MigrateCommand.js.map +1 -1
- package/src/infrastructure/commands/entity-generator/templates/TableTemplate.txt +2 -2
- package/src/infrastructure/decorators/fields/BaseField.d.ts +4 -0
- package/src/infrastructure/decorators/fields/BaseField.js +35 -10
- package/src/infrastructure/decorators/fields/BaseField.js.map +1 -1
- package/src/infrastructure/decorators/fields/ComputableField.d.ts +8 -0
- package/src/infrastructure/decorators/fields/ComputableField.js +18 -0
- package/src/infrastructure/decorators/fields/ComputableField.js.map +1 -0
- package/src/infrastructure/decorators/fields/ExtendField.d.ts +1 -0
- package/src/infrastructure/decorators/fields/ExtendField.js +8 -4
- package/src/infrastructure/decorators/fields/ExtendField.js.map +1 -1
- package/src/infrastructure/decorators/fields/index.d.ts +3 -1
- package/src/infrastructure/decorators/fields/index.js +3 -1
- package/src/infrastructure/decorators/fields/index.js.map +1 -1
- package/src/infrastructure/helpers/typeORM/ConditionHelperTypeORM.d.ts +11 -0
- package/src/infrastructure/helpers/typeORM/ConditionHelperTypeORM.js +157 -0
- package/src/infrastructure/helpers/typeORM/ConditionHelperTypeORM.js.map +1 -0
- package/src/infrastructure/helpers/typeORM/SearchHelperTypeORM.d.ts +9 -0
- package/src/{usecases/helpers/SearchHelper.js → infrastructure/helpers/typeORM/SearchHelperTypeORM.js} +7 -7
- package/src/infrastructure/helpers/typeORM/SearchHelperTypeORM.js.map +1 -0
- package/src/infrastructure/pipes/SchemaSerializer.js +2 -2
- package/src/infrastructure/pipes/SchemaSerializer.js.map +1 -1
- package/src/infrastructure/repositories/CrudRepository.d.ts +7 -7
- package/src/infrastructure/repositories/CrudRepository.js +7 -6
- package/src/infrastructure/repositories/CrudRepository.js.map +1 -1
- package/src/usecases/base/SearchQuery.d.ts +14 -14
- package/src/usecases/base/SearchQuery.js +18 -97
- package/src/usecases/base/SearchQuery.js.map +1 -1
- package/src/usecases/helpers/DataMapper.js +3 -0
- package/src/usecases/helpers/DataMapper.js.map +1 -1
- package/src/usecases/helpers/ObjectToArray.d.ts +1 -0
- package/src/usecases/helpers/ObjectToArray.js +18 -0
- package/src/usecases/helpers/ObjectToArray.js.map +1 -0
- package/src/usecases/helpers/ValidationHelper.js +6 -3
- package/src/usecases/helpers/ValidationHelper.js.map +1 -1
- package/src/usecases/interfaces/ICrudRepository.d.ts +6 -6
- package/src/usecases/interfaces/IDeepPartial.d.ts +3 -0
- package/src/usecases/interfaces/IDeepPartial.js +3 -0
- package/src/usecases/interfaces/IDeepPartial.js.map +1 -0
- package/src/usecases/services/CrudService.js.map +1 -1
- package/src/usecases/services/ReadService.d.ts +4 -4
- package/src/usecases/services/ReadService.js +4 -4
- package/src/usecases/services/ReadService.js.map +1 -1
- package/src/usecases/validators/Validator.d.ts +5 -2
- package/src/usecases/validators/Validator.js +8 -8
- package/src/usecases/validators/Validator.js.map +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/src/usecases/helpers/ConditionHelper.d.ts +0 -8
- package/src/usecases/helpers/ConditionHelper.js +0 -102
- package/src/usecases/helpers/ConditionHelper.js.map +0 -1
- package/src/usecases/helpers/SearchHelper.d.ts +0 -9
- package/src/usecases/helpers/SearchHelper.js.map +0 -1
package/package.json
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { SelectQueryBuilder } from 'typeorm/query-builder/SelectQueryBuilder';
|
|
3
|
+
import SearchQuery from '../../usecases/base/SearchQuery';
|
|
4
|
+
export declare class QueryAdapterTypeORM {
|
|
5
|
+
static prepare(dbRepository: Repository<any>, dbQuery: SelectQueryBuilder<any>, searchQuery: SearchQuery<any>, eagerLoading?: boolean): void;
|
|
6
|
+
private static prepareRelations;
|
|
7
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryAdapterTypeORM = void 0;
|
|
4
|
+
const ConditionHelperTypeORM_1 = require("../helpers/typeORM/ConditionHelperTypeORM");
|
|
5
|
+
const BaseField_1 = require("../decorators/fields/BaseField");
|
|
6
|
+
const SearchQuery_1 = require("../../usecases/base/SearchQuery");
|
|
7
|
+
class QueryAdapterTypeORM {
|
|
8
|
+
static prepare(dbRepository, dbQuery, searchQuery, eagerLoading = true) {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
const prefix = ((_b = (_a = dbQuery.expressionMap) === null || _a === void 0 ? void 0 : _a.mainAlias) === null || _b === void 0 ? void 0 : _b.name) || '';
|
|
11
|
+
let select = searchQuery.getSelect();
|
|
12
|
+
if (searchQuery.getExcludeSelect()) {
|
|
13
|
+
select = dbRepository.metadata.columns
|
|
14
|
+
.map(column => column.propertyName)
|
|
15
|
+
.filter(name => !searchQuery.getExcludeSelect().includes(name));
|
|
16
|
+
}
|
|
17
|
+
if (select) {
|
|
18
|
+
dbQuery.select(select.map(name => `${prefix}.${name}`));
|
|
19
|
+
}
|
|
20
|
+
if (searchQuery.getWith()) {
|
|
21
|
+
this.prepareRelations(dbQuery, searchQuery.getWith(), prefix, dbRepository.target, searchQuery.getShortAliasesAreUsed(), eagerLoading);
|
|
22
|
+
}
|
|
23
|
+
if (searchQuery.getWhere()) {
|
|
24
|
+
dbQuery.andWhere(ConditionHelperTypeORM_1.ConditionHelperTypeORM.toTypeOrm(searchQuery.getWhere(), dbQuery, dbRepository.target));
|
|
25
|
+
}
|
|
26
|
+
if (searchQuery.getOrderBy()) {
|
|
27
|
+
dbQuery.orderBy(Object.keys(searchQuery.getOrderBy()).reduce((obj, key) => {
|
|
28
|
+
obj[key] = searchQuery.getOrderBy()[key].toUpperCase();
|
|
29
|
+
return obj;
|
|
30
|
+
}, {}));
|
|
31
|
+
}
|
|
32
|
+
if (searchQuery.getLimit()) {
|
|
33
|
+
dbQuery.limit(searchQuery.getLimit());
|
|
34
|
+
}
|
|
35
|
+
if (searchQuery.getOffset()) {
|
|
36
|
+
dbQuery.offset(searchQuery.getOffset());
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
static prepareRelations(dbQuery, relationsWithAliases, rootPrefix, rootClass, useShortAliases = false, eagerLoading = true) {
|
|
40
|
+
const relationToAliasMap = {};
|
|
41
|
+
const relations = [];
|
|
42
|
+
relationsWithAliases.forEach(relationWithAlias => {
|
|
43
|
+
relationWithAlias = rootPrefix + '.' + relationWithAlias;
|
|
44
|
+
const [relation, alias] = relationWithAlias.split(' ');
|
|
45
|
+
relationToAliasMap[relation] = alias || SearchQuery_1.default.getRelationAlias(relation, useShortAliases);
|
|
46
|
+
relations.push(relation);
|
|
47
|
+
let path;
|
|
48
|
+
relation.split('.').forEach(name => {
|
|
49
|
+
path = [path, name].filter(Boolean).join('.');
|
|
50
|
+
if (!relationToAliasMap[path]) {
|
|
51
|
+
relationToAliasMap[path] = SearchQuery_1.default.getRelationAlias(path, useShortAliases);
|
|
52
|
+
if (path !== rootPrefix) {
|
|
53
|
+
relations.push(path);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
const classesMap = {
|
|
59
|
+
[rootPrefix]: rootClass,
|
|
60
|
+
};
|
|
61
|
+
relations
|
|
62
|
+
.sort()
|
|
63
|
+
.forEach(path => {
|
|
64
|
+
const parentPath = path.split('.').slice(0, -1).join('.');
|
|
65
|
+
const relationName = path.split('.').slice(-1).join('.');
|
|
66
|
+
const options = (0, BaseField_1.getFieldOptions)(classesMap[parentPath], relationName);
|
|
67
|
+
if (options) {
|
|
68
|
+
if (options.appType === 'relation') {
|
|
69
|
+
classesMap[path] = options.relationClass();
|
|
70
|
+
}
|
|
71
|
+
const property = relationToAliasMap[parentPath] + '.' + relationName;
|
|
72
|
+
const alias = relationToAliasMap[path];
|
|
73
|
+
if (options.relationName) {
|
|
74
|
+
dbQuery.loadRelationIdAndMap(property, relationToAliasMap[parentPath] + '.' + options.relationName);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (eagerLoading) {
|
|
78
|
+
dbQuery.leftJoinAndSelect(property, alias);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
dbQuery.leftJoin(property, alias);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.QueryAdapterTypeORM = QueryAdapterTypeORM;
|
|
89
|
+
//# sourceMappingURL=QueryAdapterTypeORM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryAdapterTypeORM.js","sourceRoot":"","sources":["../../../../src/infrastructure/adapters/QueryAdapterTypeORM.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,14 @@ const common_1 = require("@nestjs/common");
|
|
|
18
18
|
const dbml2code_1 = require("./dbml/dbml2code");
|
|
19
19
|
const generate_1 = require("./generate");
|
|
20
20
|
const typeorm_1 = require("typeorm");
|
|
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(dataSource) {
|
|
23
31
|
this.dataSource = dataSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrateCommand.js","sourceRoot":"","sources":["../../../../src/infrastructure/commands/MigrateCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAmD;AACnD,2CAAkD;AAClD,gDAA2C;AAC3C,yCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"MigrateCommand.js","sourceRoot":"","sources":["../../../../src/infrastructure/commands/MigrateCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAmD;AACnD,2CAAkD;AAClD,gDAA2C;AAC3C,yCAAoC;AACpC,qCAAyE;AACzE,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,YAEY,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;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,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;AAjDG;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,gBAAgB;KAC7B,CAAC;;;;2CAMD;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;AA1DQ,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGJ,WAAA,IAAA,eAAM,EAAC,oBAAU,CAAC,CAAA;qCACC,oBAAU;GAHzB,cAAc,CA4D1B;AA5DY,wCAAc"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {IDeepPartial} from '@steroidsjs/nest/src/usecases/interfaces/IDeepPartial';
|
|
2
2
|
import {TableFromModel} from '@steroidsjs/nest/src/infrastructure/decorators/TableFromModel';
|
|
3
3
|
import {%entityName%Model} from '../../domain/models/%entityName%Model';
|
|
4
4
|
|
|
5
5
|
@TableFromModel(%entityName%Model, '%tableName%')
|
|
6
|
-
export class %entityName%Table implements
|
|
6
|
+
export class %entityName%Table implements IDeepPartial<%entityName%Model> {}
|
|
@@ -24,6 +24,10 @@ export interface IBaseFieldOptions {
|
|
|
24
24
|
transform?: ITransformCallback;
|
|
25
25
|
noColumn?: boolean;
|
|
26
26
|
}
|
|
27
|
+
export interface IRelationData {
|
|
28
|
+
relationName: string;
|
|
29
|
+
relationClass: () => any;
|
|
30
|
+
}
|
|
27
31
|
export interface IInternalFieldOptions {
|
|
28
32
|
appType?: AppColumnType;
|
|
29
33
|
jsType?: ColumnType;
|
|
@@ -29,27 +29,52 @@ const getMetaFields = (MetaClass) => {
|
|
|
29
29
|
};
|
|
30
30
|
exports.getMetaFields = getMetaFields;
|
|
31
31
|
const getMetaRelations = (MetaClass, parentPrefix = null) => {
|
|
32
|
-
const findRelationsRecursive = (MetaClass,
|
|
32
|
+
const findRelationsRecursive = (MetaClass, foundClasses, parentPrefix = null) => {
|
|
33
33
|
return (0, exports.getMetaFields)(MetaClass)
|
|
34
34
|
.filter(fieldName => {
|
|
35
35
|
const options = (0, exports.getFieldOptions)(MetaClass, fieldName);
|
|
36
|
+
if ((options === null || options === void 0 ? void 0 : options.appType) === 'computable' && (options === null || options === void 0 ? void 0 : options.requiredRelations)) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
36
39
|
return ['relationId', 'relation'].includes(options === null || options === void 0 ? void 0 : options.appType);
|
|
37
40
|
})
|
|
38
|
-
.reduce((
|
|
39
|
-
allRelations.push(relationName);
|
|
41
|
+
.reduce((allRelationsData, relationName) => {
|
|
40
42
|
const options = (0, exports.getFieldOptions)(MetaClass, relationName);
|
|
41
|
-
if (options.appType === 'relationId') {
|
|
43
|
+
if ((options === null || options === void 0 ? void 0 : options.appType) === 'relationId') {
|
|
44
|
+
allRelationsData.push(relationName);
|
|
45
|
+
return allRelationsData;
|
|
46
|
+
}
|
|
47
|
+
if ((options === null || options === void 0 ? void 0 : options.appType) === 'computable' && (options === null || options === void 0 ? void 0 : options.requiredRelations)) {
|
|
48
|
+
allRelationsData.push(...options.requiredRelations);
|
|
49
|
+
}
|
|
50
|
+
if ((options === null || options === void 0 ? void 0 : options.appType) !== 'computable') {
|
|
51
|
+
allRelationsData.push({
|
|
52
|
+
relationName,
|
|
53
|
+
relationClass: options.relationClass,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return allRelationsData;
|
|
57
|
+
}, [])
|
|
58
|
+
.reduce((allRelations, relationData) => {
|
|
59
|
+
if ((0, class_validator_1.isString)(relationData)) {
|
|
60
|
+
allRelations.push(relationData);
|
|
61
|
+
return allRelations;
|
|
62
|
+
}
|
|
63
|
+
if (!allRelations.includes(relationData.relationName)) {
|
|
64
|
+
allRelations.push(relationData.relationName);
|
|
65
|
+
}
|
|
66
|
+
if (!relationData.relationClass) {
|
|
42
67
|
return allRelations;
|
|
43
68
|
}
|
|
44
|
-
const relationValue =
|
|
45
|
-
const key = [relationName, relationValue.name].join('.');
|
|
46
|
-
if (
|
|
69
|
+
const relationValue = relationData.relationClass();
|
|
70
|
+
const key = [relationData.relationName, relationValue.name].join('.');
|
|
71
|
+
if (foundClasses.includes(key)) {
|
|
47
72
|
return allRelations;
|
|
48
73
|
}
|
|
49
|
-
|
|
74
|
+
foundClasses.push(key);
|
|
50
75
|
if ((0, exports.isMetaClass)(relationValue)) {
|
|
51
|
-
const subRelationNames = findRelationsRecursive(relationValue,
|
|
52
|
-
.map(subRelationName => `${relationName}.${subRelationName}`);
|
|
76
|
+
const subRelationNames = findRelationsRecursive(relationValue, foundClasses, relationData.relationName)
|
|
77
|
+
.map(subRelationName => `${relationData.relationName}.${subRelationName}`);
|
|
53
78
|
allRelations = [...allRelations, ...subRelationNames];
|
|
54
79
|
}
|
|
55
80
|
return allRelations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/BaseField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,6CAA4C;AAE5C,
|
|
1
|
+
{"version":3,"file":"BaseField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/BaseField.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IBaseFieldOptions, IRelationData } from './BaseField';
|
|
2
|
+
import { IComputableCallback } from '../Computable';
|
|
3
|
+
export interface IComputableFieldOptions extends IBaseFieldOptions {
|
|
4
|
+
unique?: boolean;
|
|
5
|
+
requiredRelations?: Array<IRelationData | string>;
|
|
6
|
+
callback?: IComputableCallback;
|
|
7
|
+
}
|
|
8
|
+
export declare function ComputableField(options: IComputableFieldOptions): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComputableField = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const BaseField_1 = require("./BaseField");
|
|
6
|
+
const Computable_1 = require("../Computable");
|
|
7
|
+
function ComputableField(options) {
|
|
8
|
+
return (0, common_1.applyDecorators)(...[
|
|
9
|
+
(0, BaseField_1.BaseField)(options, {
|
|
10
|
+
decoratorName: 'ComputableField',
|
|
11
|
+
appType: 'computable',
|
|
12
|
+
jsType: options.jsType,
|
|
13
|
+
}),
|
|
14
|
+
(0, Computable_1.Computable)(options.callback)
|
|
15
|
+
].filter(Boolean));
|
|
16
|
+
}
|
|
17
|
+
exports.ComputableField = ComputableField;
|
|
18
|
+
//# sourceMappingURL=ComputableField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComputableField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/ComputableField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,2CAAwE;AACxE,8CAA8D;AAQ9D,SAAgB,eAAe,CAAC,OAAgC;IAE5D,OAAO,IAAA,wBAAe,EAClB,GAAG;QACC,IAAA,qBAAS,EAAC,OAAO,EAAC;YACd,aAAa,EAAE,iBAAiB;YAChC,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC;QACF,IAAA,uBAAU,EAAC,OAAO,CAAC,QAAQ,CAAC;KAC/B,CAAC,MAAM,CAAC,OAAO,CAAC,CACpB,CAAC;AACN,CAAC;AAZD,0CAYC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IAllFieldOptions } from "./index";
|
|
2
2
|
export interface IExtendFieldOptions {
|
|
3
3
|
sourceFieldName?: string;
|
|
4
|
+
extendValidators?: boolean;
|
|
4
5
|
}
|
|
5
6
|
export declare function ExtendField(ModelClass: any, options?: (string | Partial<IAllFieldOptions>)): (object: any, propertyName: any) => void;
|
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ExtendField = void 0;
|
|
4
4
|
const BaseField_1 = require("./BaseField");
|
|
5
5
|
const Validator_1 = require("../../../usecases/validators/Validator");
|
|
6
|
-
function ExtendField(ModelClass, options = {
|
|
6
|
+
function ExtendField(ModelClass, options = {
|
|
7
|
+
extendValidators: true,
|
|
8
|
+
}) {
|
|
7
9
|
return (object, propertyName) => {
|
|
8
10
|
if (typeof options === 'string') {
|
|
9
11
|
options = { sourceFieldName: options };
|
|
@@ -15,9 +17,11 @@ function ExtendField(ModelClass, options = {}) {
|
|
|
15
17
|
const extendOptions = (0, BaseField_1.getFieldOptions)(ModelClass, modelFieldName);
|
|
16
18
|
const decorator = (0, BaseField_1.getFieldDecorator)(ModelClass, modelFieldName);
|
|
17
19
|
decorator(Object.assign(Object.assign({}, extendOptions), options))(object, propertyName);
|
|
18
|
-
(
|
|
19
|
-
(0, Validator_1.
|
|
20
|
-
|
|
20
|
+
if (options.extendValidators) {
|
|
21
|
+
(0, Validator_1.getFieldValidators)(ModelClass, modelFieldName).forEach(ValidatorClass => {
|
|
22
|
+
(0, Validator_1.Validator)(ValidatorClass)(object, propertyName);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
21
25
|
};
|
|
22
26
|
}
|
|
23
27
|
exports.ExtendField = ExtendField;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtendField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/ExtendField.ts"],"names":[],"mappings":";;;AAAA,2CAA+D;AAE/D,sEAAqF;
|
|
1
|
+
{"version":3,"file":"ExtendField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/ExtendField.ts"],"names":[],"mappings":";;;AAAA,2CAA+D;AAE/D,sEAAqF;AAOrF,SAAgB,WAAW,CACvB,UAAU,EACV,UAAgD;IAC5C,gBAAgB,EAAE,IAAI;CACzB;IAED,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;QAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC7B,OAAO,GAAG,EAAC,eAAe,EAAE,OAAO,EAAC,CAAC;SACxC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,IAAI,YAAY,CAAC;QAC/D,IAAI,CAAC,cAAc,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SAChG;QAGD,MAAM,aAAa,GAAG,IAAA,2BAAe,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAA,6BAAiB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAChE,SAAS,iCAAK,aAAa,GAAK,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEhE,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAE1B,IAAA,8BAAkB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;gBACpE,IAAA,qBAAS,EAAC,cAAc,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;SACN;IACL,CAAC,CAAC;AACN,CAAC;AA5BD,kCA4BC"}
|
|
@@ -12,9 +12,11 @@ import { IPhoneFieldOptions } from './PhoneField';
|
|
|
12
12
|
import { IStringFieldOptions } from './StringField';
|
|
13
13
|
import { IIntegerFieldOptions } from './IntegerField';
|
|
14
14
|
import { IDateFieldOptions } from './DateField';
|
|
15
|
+
import { IComputableFieldOptions } from './ComputableField';
|
|
15
16
|
export { BooleanField } from './BooleanField';
|
|
16
17
|
export { CoordinateField } from './CoordinateField';
|
|
17
18
|
export { CreateTimeField } from './CreateTimeField';
|
|
19
|
+
export { ComputableField } from './ComputableField';
|
|
18
20
|
export { DateField } from './DateField';
|
|
19
21
|
export { DateTimeField } from './DateTimeField';
|
|
20
22
|
export { DecimalField } from './DecimalField';
|
|
@@ -34,4 +36,4 @@ export { UpdateTimeField } from './UpdateTimeField';
|
|
|
34
36
|
export { RelationField } from './RelationField';
|
|
35
37
|
export { RelationIdField } from './RelationIdField';
|
|
36
38
|
export { ImageField } from './ImageField';
|
|
37
|
-
export declare type IAllFieldOptions = ICreateTimeFieldOptions & IDateTimeFieldColumnOptions & IDecimalFieldOptions & IEnumFieldOptions & IExtendFieldOptions & IFileField & IRelationFieldOptions & IRelationIdFieldOptions & IUpdateTimeFieldOptions & IEmailFieldOptions & IPhoneFieldOptions & IStringFieldOptions & IIntegerFieldOptions & IDateFieldOptions;
|
|
39
|
+
export declare type IAllFieldOptions = ICreateTimeFieldOptions & IDateTimeFieldColumnOptions & IDecimalFieldOptions & IEnumFieldOptions & IExtendFieldOptions & IFileField & IRelationFieldOptions & IRelationIdFieldOptions & IUpdateTimeFieldOptions & IEmailFieldOptions & IPhoneFieldOptions & IStringFieldOptions & IIntegerFieldOptions & IDateFieldOptions & IComputableFieldOptions;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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;
|
|
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.ComputableField = 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");
|
|
7
7
|
Object.defineProperty(exports, "CoordinateField", { enumerable: true, get: function () { return CoordinateField_1.CoordinateField; } });
|
|
8
8
|
var CreateTimeField_1 = require("./CreateTimeField");
|
|
9
9
|
Object.defineProperty(exports, "CreateTimeField", { enumerable: true, get: function () { return CreateTimeField_1.CreateTimeField; } });
|
|
10
|
+
var ComputableField_1 = require("./ComputableField");
|
|
11
|
+
Object.defineProperty(exports, "ComputableField", { enumerable: true, get: function () { return ComputableField_1.ComputableField; } });
|
|
10
12
|
var DateField_1 = require("./DateField");
|
|
11
13
|
Object.defineProperty(exports, "DateField", { enumerable: true, get: function () { return DateField_1.DateField; } });
|
|
12
14
|
var DateTimeField_1 = require("./DateTimeField");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/index.ts"],"names":[],"mappings":";;;AAgBA,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SelectQueryBuilder } from 'typeorm/query-builder/SelectQueryBuilder';
|
|
2
|
+
export declare type IConditionOperatorSingle = '=' | '>' | '>=' | '=>' | '<' | '<=' | '=<' | 'like' | 'ilike' | 'between' | 'in' | 'and' | '&&' | 'or' | '||' | 'not =' | 'not >' | 'not >=' | 'not =>' | 'not <' | 'not <=' | 'not =<' | 'not like' | 'not ilike' | 'not between' | 'not in' | 'not and' | 'not &&' | 'not or' | 'not ||';
|
|
3
|
+
export declare type IConditionOperatorAndOr = 'and' | '&&' | 'or' | '||' | 'not and' | 'not &&' | 'not or' | 'not ||';
|
|
4
|
+
export declare type IConditionOperatorSubquery = 'some' | 'every' | 'none';
|
|
5
|
+
export declare type ICondition = Record<string, unknown> | [IConditionOperatorAndOr, ...any[]] | ['filter', ICondition] | [IConditionOperatorSingle, string, ...any[]] | [IConditionOperatorSubquery, string | string[], ICondition] | ICondition[];
|
|
6
|
+
export declare class ConditionHelperTypeORM {
|
|
7
|
+
static toTypeOrm(condition: ICondition, dbQuery: SelectQueryBuilder<any>, rootClass: any): any;
|
|
8
|
+
static _objectConditionToArray(condition: ICondition): any[];
|
|
9
|
+
static _reverseCondition(condition: ICondition): any[];
|
|
10
|
+
static _toTypeOrmInternal(condition: ICondition, dbQuery: SelectQueryBuilder<any>, rootClass: any, filterEmpty?: boolean): any;
|
|
11
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConditionHelperTypeORM = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const typeorm_1 = require("typeorm");
|
|
6
|
+
const QueryAdapterTypeORM_1 = require("../../adapters/QueryAdapterTypeORM");
|
|
7
|
+
const SearchQuery_1 = require("../../../usecases/base/SearchQuery");
|
|
8
|
+
const BaseField_1 = require("../../decorators/fields/BaseField");
|
|
9
|
+
const ObjectToArray_1 = require("../../../usecases/helpers/ObjectToArray");
|
|
10
|
+
const emptyCondition = {};
|
|
11
|
+
const isEmpty = value => value === null || typeof value === 'undefined' || value === emptyCondition || value === '';
|
|
12
|
+
const STEROIDS_SUBQUERY_PARAMS_KEY = 'steroids_subquery_params_key';
|
|
13
|
+
class ConditionHelperTypeORM {
|
|
14
|
+
static toTypeOrm(condition, dbQuery, rootClass) {
|
|
15
|
+
return ConditionHelperTypeORM._toTypeOrmInternal(condition, dbQuery, rootClass);
|
|
16
|
+
}
|
|
17
|
+
static _objectConditionToArray(condition) {
|
|
18
|
+
if (typeof condition === 'object' && !Array.isArray(condition)) {
|
|
19
|
+
return [
|
|
20
|
+
'and',
|
|
21
|
+
...(0, ObjectToArray_1.ObjectToArray)(condition)
|
|
22
|
+
.map(array => ['=', ...array]),
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(condition)) {
|
|
26
|
+
return condition;
|
|
27
|
+
}
|
|
28
|
+
throw new Error('condition is not object');
|
|
29
|
+
}
|
|
30
|
+
static _reverseCondition(condition) {
|
|
31
|
+
if (Array.isArray(condition)) {
|
|
32
|
+
const operator = condition[0];
|
|
33
|
+
if (typeof operator === 'string' && operator.startsWith('not')) {
|
|
34
|
+
return [operator.slice(4), ...condition.slice(1)];
|
|
35
|
+
}
|
|
36
|
+
return [`not ${operator}`, ...condition.slice(1)];
|
|
37
|
+
}
|
|
38
|
+
throw new Error('condition is not array');
|
|
39
|
+
}
|
|
40
|
+
static _toTypeOrmInternal(condition, dbQuery, rootClass, filterEmpty = false) {
|
|
41
|
+
if (typeof condition === 'object' && !Array.isArray(condition)) {
|
|
42
|
+
return ConditionHelperTypeORM._toTypeOrmInternal(this._objectConditionToArray(condition), dbQuery, rootClass, filterEmpty);
|
|
43
|
+
}
|
|
44
|
+
if (Array.isArray(condition) && condition.length > 1 && typeof condition[0] === 'string') {
|
|
45
|
+
let operator = condition[0].toLowerCase();
|
|
46
|
+
const isNot = operator.indexOf('not') === 0;
|
|
47
|
+
if (isNot) {
|
|
48
|
+
operator = operator.replace(/^not\s+/, '');
|
|
49
|
+
}
|
|
50
|
+
const objectWhere = (isNot, isEmpty, key, value) => {
|
|
51
|
+
return !filterEmpty || !isEmpty
|
|
52
|
+
? (0, lodash_1.set)({}, key, isNot ? (0, typeorm_1.Not)(value) : value)
|
|
53
|
+
: emptyCondition;
|
|
54
|
+
};
|
|
55
|
+
const key = condition[1];
|
|
56
|
+
const value = condition[2];
|
|
57
|
+
switch (operator) {
|
|
58
|
+
case 'filter':
|
|
59
|
+
return ConditionHelperTypeORM._toTypeOrmInternal(condition[1], dbQuery, rootClass, true);
|
|
60
|
+
case '=':
|
|
61
|
+
return objectWhere(isNot, isEmpty(value), key, isEmpty(value) ? (0, typeorm_1.IsNull)() : value);
|
|
62
|
+
case '>':
|
|
63
|
+
return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.MoreThan)(value));
|
|
64
|
+
case '>=':
|
|
65
|
+
case '=>':
|
|
66
|
+
return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.MoreThanOrEqual)(value));
|
|
67
|
+
case '<':
|
|
68
|
+
return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.LessThan)(value));
|
|
69
|
+
case '<=':
|
|
70
|
+
case '=<':
|
|
71
|
+
return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.LessThanOrEqual)(value));
|
|
72
|
+
case 'like':
|
|
73
|
+
case 'ilike':
|
|
74
|
+
const likeMethod = operator === 'ilike' ? typeorm_1.ILike : typeorm_1.Like;
|
|
75
|
+
return objectWhere(isNot, isEmpty(value), key, likeMethod(value ? (value.indexOf('%') !== -1 ? value : '%' + value + '%') : ''));
|
|
76
|
+
case 'between':
|
|
77
|
+
return objectWhere(isNot, isEmpty(condition[2] || condition[3]), key, (0, typeorm_1.Between)(condition[2], condition[3]));
|
|
78
|
+
case 'in':
|
|
79
|
+
if (value && !Array.isArray(value)) {
|
|
80
|
+
throw Error('Wrong value for IN operator: ' + JSON.stringify(value));
|
|
81
|
+
}
|
|
82
|
+
return objectWhere(isNot, isEmpty(value) || value.length === 0, key, (0, typeorm_1.In)(value));
|
|
83
|
+
case 'some':
|
|
84
|
+
case 'every':
|
|
85
|
+
case 'none':
|
|
86
|
+
if (isNot) {
|
|
87
|
+
throw Error(`Unsupport NOT for ${operator} operator.`);
|
|
88
|
+
}
|
|
89
|
+
const primaryKey = (0, BaseField_1.getMetaPrimaryKey)(rootClass);
|
|
90
|
+
const subQuery = dbQuery.connection.createQueryBuilder(rootClass, 'model');
|
|
91
|
+
subQuery.select(`model.${primaryKey}`);
|
|
92
|
+
const subSearchQuery = new SearchQuery_1.default();
|
|
93
|
+
subSearchQuery.with(condition[1]);
|
|
94
|
+
subSearchQuery.where(operator === 'every'
|
|
95
|
+
? this._reverseCondition(condition[2])
|
|
96
|
+
: condition[2]);
|
|
97
|
+
subSearchQuery.andWhere(['not =', 'id', null]);
|
|
98
|
+
QueryAdapterTypeORM_1.QueryAdapterTypeORM.prepare(dbQuery.connection.getRepository(rootClass), subQuery, subSearchQuery, false);
|
|
99
|
+
const subqueryParams = dbQuery.getParameters()[STEROIDS_SUBQUERY_PARAMS_KEY];
|
|
100
|
+
dbQuery.setParameter(STEROIDS_SUBQUERY_PARAMS_KEY, subqueryParams ? subqueryParams + 1 : 1);
|
|
101
|
+
const paramsKey = dbQuery.getParameters()[STEROIDS_SUBQUERY_PARAMS_KEY];
|
|
102
|
+
dbQuery.setParameters(Object.assign(Object.assign({}, dbQuery.getParameters()), (Object.entries(subQuery.getParameters()).reduce((params, param) => (Object.assign(Object.assign({}, params), { [`steroids_${paramsKey}_${param[0]}`]: param[1] })), {}))));
|
|
103
|
+
const subQueryString = subQuery.getQuery().replace(/orm_param_/g, `steroids_${paramsKey}_orm_param_`);
|
|
104
|
+
let resultCondition;
|
|
105
|
+
if (operator === 'some') {
|
|
106
|
+
resultCondition = `${dbQuery.alias}.${primaryKey} IN (${subQueryString})`;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
resultCondition = `${dbQuery.alias}.${primaryKey} NOT IN (${subQueryString})`;
|
|
110
|
+
}
|
|
111
|
+
return new typeorm_1.Brackets((qb) => {
|
|
112
|
+
qb.andWhere(resultCondition);
|
|
113
|
+
});
|
|
114
|
+
case 'and':
|
|
115
|
+
case '&&':
|
|
116
|
+
case 'or':
|
|
117
|
+
case '||':
|
|
118
|
+
let isOr = ['or', '||'].includes(operator);
|
|
119
|
+
if (isNot) {
|
|
120
|
+
isOr = !isOr;
|
|
121
|
+
}
|
|
122
|
+
const values = condition.slice(1)
|
|
123
|
+
.map(item => typeof item === 'object' && !Array.isArray(item)
|
|
124
|
+
? this._objectConditionToArray(item)
|
|
125
|
+
: item)
|
|
126
|
+
.map(item => ConditionHelperTypeORM._toTypeOrmInternal(isNot ? this._reverseCondition(item) : item, dbQuery, rootClass, filterEmpty))
|
|
127
|
+
.filter(value => !isEmpty(value));
|
|
128
|
+
if (values.length === 0) {
|
|
129
|
+
return emptyCondition;
|
|
130
|
+
}
|
|
131
|
+
if (values.length === 1) {
|
|
132
|
+
return values[0];
|
|
133
|
+
}
|
|
134
|
+
return new typeorm_1.Brackets((query2) => {
|
|
135
|
+
const parentQuery = query2.parentQueryBuilder;
|
|
136
|
+
query2.expressionMap.joinAttributes = parentQuery.expressionMap.joinAttributes;
|
|
137
|
+
values.forEach(value => {
|
|
138
|
+
if (isOr) {
|
|
139
|
+
query2.orWhere(value);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
query2.andWhere(value);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
default:
|
|
147
|
+
throw Error('Wrong operator: ' + operator);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (!condition) {
|
|
151
|
+
return emptyCondition;
|
|
152
|
+
}
|
|
153
|
+
throw Error('Wrong condition: ' + JSON.stringify(condition));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
exports.ConditionHelperTypeORM = ConditionHelperTypeORM;
|
|
157
|
+
//# sourceMappingURL=ConditionHelperTypeORM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConditionHelperTypeORM.js","sourceRoot":"","sources":["../../../../../src/infrastructure/helpers/typeORM/ConditionHelperTypeORM.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DeepPartial, Repository } from 'typeorm';
|
|
2
|
+
import * as Promise from 'bluebird';
|
|
3
|
+
import { SelectQueryBuilder } from 'typeorm/query-builder/SelectQueryBuilder';
|
|
4
|
+
import { SearchInputDto } from '../../../usecases/dtos/SearchInputDto';
|
|
5
|
+
import { SearchResultDto } from '../../../usecases/dtos/SearchResultDto';
|
|
6
|
+
import SearchQuery from '../../../usecases/base/SearchQuery';
|
|
7
|
+
export declare class SearchHelperTypeORM {
|
|
8
|
+
static search<TTable>(repository: Repository<DeepPartial<TTable>>, dto: SearchInputDto, searchQuery: SearchQuery<TTable>, prepareHandler?: (query: SelectQueryBuilder<TTable>) => void | null): Promise<SearchResultDto<TTable>>;
|
|
9
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.SearchHelperTypeORM = void 0;
|
|
4
4
|
const Promise = require("bluebird");
|
|
5
|
-
const SearchResultDto_1 = require("
|
|
6
|
-
const
|
|
7
|
-
class
|
|
5
|
+
const SearchResultDto_1 = require("../../../usecases/dtos/SearchResultDto");
|
|
6
|
+
const QueryAdapterTypeORM_1 = require("../../adapters/QueryAdapterTypeORM");
|
|
7
|
+
class SearchHelperTypeORM {
|
|
8
8
|
static async search(repository, dto, searchQuery, prepareHandler = null) {
|
|
9
9
|
const result = new SearchResultDto_1.SearchResultDto();
|
|
10
10
|
dto = Object.assign({ page: 1, pageSize: 50 }, dto);
|
|
11
11
|
const dbQuery = repository.createQueryBuilder(searchQuery.getAlias());
|
|
12
12
|
const modelAlias = dbQuery.alias;
|
|
13
|
-
|
|
13
|
+
QueryAdapterTypeORM_1.QueryAdapterTypeORM.prepare(repository, dbQuery, searchQuery);
|
|
14
14
|
const sort = typeof dto.sort === 'string' ? dto.sort.split(',') : (dto.sort || []);
|
|
15
15
|
if (sort.length > 0) {
|
|
16
16
|
dbQuery.orderBy(sort.reduce((obj, value) => {
|
|
@@ -33,5 +33,5 @@ class SearchHelper {
|
|
|
33
33
|
return result;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
exports.
|
|
37
|
-
//# sourceMappingURL=
|
|
36
|
+
exports.SearchHelperTypeORM = SearchHelperTypeORM;
|
|
37
|
+
//# sourceMappingURL=SearchHelperTypeORM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchHelperTypeORM.js","sourceRoot":"","sources":["../../../../../src/infrastructure/helpers/typeORM/SearchHelperTypeORM.ts"],"names":[],"mappings":";;;AACA,oCAAoC;AAGpC,4EAAuE;AAEvE,4EAAuE;AAEvE,MAAa,mBAAmB;IAE5B,MAAM,CAAC,KAAK,CAAC,MAAM,CACf,UAA2C,EAC3C,GAAmB,EACnB,WAAgC,EAChC,iBAAqE,IAAI;QAEzE,MAAM,MAAM,GAAG,IAAI,iCAAe,EAAU,CAAC;QAG7C,GAAG,mBACC,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,EAAE,IACT,GAAG,CACT,CAAC;QAGF,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;QAEjC,yCAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAG9D,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACvC,MAAM,eAAe,GAAG,GAAG,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,OAAO,GAAG,CAAC;YACf,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACX;QAGD,IAAI,cAAc,EAAE;YAChB,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACtC;QAGD,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE;YAClB,OAAO;iBACF,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;iBACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC3B;QAGD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAErB,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AApDD,kDAoDC"}
|