@things-factory/shell 5.0.0-alpha.8 → 5.0.0-zeta.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/client/themes/tooltip-theme.css +4 -3
- package/config/config.production.js +13 -0
- package/dist-server/middlewares/index.js +2 -2
- package/dist-server/middlewares/index.js.map +1 -1
- package/dist-server/pubsub.js +2 -2
- package/dist-server/pubsub.js.map +1 -1
- package/dist-server/server-dev.js +18 -16
- package/dist-server/server-dev.js.map +1 -1
- package/dist-server/server.js +15 -14
- package/dist-server/server.js.map +1 -1
- package/dist-server/service/domain/domain-resolver.js +4 -1
- package/dist-server/service/domain/domain-resolver.js.map +1 -1
- package/dist-server/service/domain/domain.js +34 -1
- package/dist-server/service/domain/domain.js.map +1 -1
- package/dist-server/utils/condition-builder.js +10 -11
- package/dist-server/utils/condition-builder.js.map +1 -1
- package/dist-server/utils/get-query-builder-from-list-params.js +240 -0
- package/dist-server/utils/get-query-builder-from-list-params.js.map +1 -0
- package/dist-server/utils/index.js +2 -0
- package/dist-server/utils/index.js.map +1 -1
- package/dist-server/utils/list-param-adjuster.js +13 -0
- package/dist-server/utils/list-param-adjuster.js.map +1 -0
- package/dist-server/utils/list-params-converter.js +55 -22
- package/dist-server/utils/list-params-converter.js.map +1 -1
- package/dist-server/utils/list-query-builder.js +33 -3
- package/dist-server/utils/list-query-builder.js.map +1 -1
- package/package.json +19 -18
- package/server/middlewares/index.ts +3 -2
- package/server/pubsub.ts +3 -3
- package/server/server-dev.ts +20 -17
- package/server/server.ts +17 -15
- package/server/service/domain/domain-resolver.ts +5 -1
- package/server/service/domain/domain.ts +37 -2
- package/server/utils/condition-builder.ts +12 -12
- package/server/utils/get-query-builder-from-list-params.ts +291 -0
- package/server/utils/index.ts +2 -0
- package/server/utils/list-param-adjuster.ts +12 -0
- package/server/utils/list-params-converter.ts +90 -30
- package/server/utils/list-query-builder.ts +50 -3
@@ -0,0 +1,240 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getQueryBuilderFromListParams = void 0;
|
4
|
+
const typeorm_1 = require("typeorm");
|
5
|
+
const debug = require('debug')('things-factory:shell:get-query-builder-from-list-params');
|
6
|
+
/**
|
7
|
+
*
|
8
|
+
* @param options
|
9
|
+
* @returns
|
10
|
+
*/
|
11
|
+
function getQueryBuilderFromListParams(options) {
|
12
|
+
var _a, _b;
|
13
|
+
var { repository, params, domain, alias, searchables, filtersMap = {} } = options;
|
14
|
+
const selectQueryBuilder = repository.createQueryBuilder(alias);
|
15
|
+
const entityAlias = selectQueryBuilder.alias;
|
16
|
+
const columnFilters = ((_a = params.filters) === null || _a === void 0 ? void 0 : _a.filter(filter => {
|
17
|
+
if (filter.operator === 'search') {
|
18
|
+
return false;
|
19
|
+
}
|
20
|
+
if (filter.operator.toLowerCase().includes('like') && (!searchables || !searchables.includes(filter.name))) {
|
21
|
+
debug('"searchables" setting is required for like searches with a heavy database query load', filter.name);
|
22
|
+
return false;
|
23
|
+
}
|
24
|
+
return true;
|
25
|
+
})) || [];
|
26
|
+
const searchFilters = searchables instanceof Array
|
27
|
+
? ((_b = params.filters) === null || _b === void 0 ? void 0 : _b.filter(filter => {
|
28
|
+
if (filter.operator !== 'search') {
|
29
|
+
return false;
|
30
|
+
}
|
31
|
+
if (!searchables.includes(filter.name)) {
|
32
|
+
debug('"searchables" setting is required for like searches with a heavy database query load', filter.name);
|
33
|
+
return false;
|
34
|
+
}
|
35
|
+
return true;
|
36
|
+
})) || []
|
37
|
+
: [];
|
38
|
+
const pagination = params.pagination;
|
39
|
+
const sortings = params.sortings;
|
40
|
+
const metadata = repository.metadata;
|
41
|
+
if (columnFilters && columnFilters.length > 0) {
|
42
|
+
columnFilters.forEach(filter => {
|
43
|
+
addCondition(metadata, selectQueryBuilder, selectQueryBuilder, filter, filtersMap, true);
|
44
|
+
});
|
45
|
+
}
|
46
|
+
if (searchFilters.length > 0) {
|
47
|
+
selectQueryBuilder.andWhere(new typeorm_1.Brackets(qb => {
|
48
|
+
searchFilters.forEach(filter => {
|
49
|
+
addCondition(metadata, selectQueryBuilder, qb, filter, filtersMap, false);
|
50
|
+
});
|
51
|
+
}));
|
52
|
+
}
|
53
|
+
if (domain) {
|
54
|
+
selectQueryBuilder.andWhere(`${entityAlias}.domain = :domain`, { domain: domain.id });
|
55
|
+
}
|
56
|
+
if (pagination && pagination.page > 0 && pagination.limit > 0) {
|
57
|
+
selectQueryBuilder.skip(pagination.limit * (pagination.page - 1));
|
58
|
+
selectQueryBuilder.take(pagination.limit);
|
59
|
+
}
|
60
|
+
if (sortings && sortings.length > 0) {
|
61
|
+
sortings.forEach((sorting, index) => {
|
62
|
+
const sortField = sorting.name.split('.').length > 1 ? sorting.name : `${entityAlias}.${sorting.name}`;
|
63
|
+
if (index === 0) {
|
64
|
+
selectQueryBuilder.orderBy(sortField, sorting.desc ? 'DESC' : 'ASC');
|
65
|
+
}
|
66
|
+
else {
|
67
|
+
selectQueryBuilder.addOrderBy(sortField, sorting.desc ? 'DESC' : 'ASC');
|
68
|
+
}
|
69
|
+
});
|
70
|
+
}
|
71
|
+
return selectQueryBuilder;
|
72
|
+
}
|
73
|
+
exports.getQueryBuilderFromListParams = getQueryBuilderFromListParams;
|
74
|
+
function addCondition(metadata, selectQueryBuilder, whereExpressionBuilder, filter, filtersMap = {}, andCondition) {
|
75
|
+
const { name, operator, value } = filter;
|
76
|
+
const values = value instanceof Array ? value : [value];
|
77
|
+
const entityAlias = selectQueryBuilder.alias;
|
78
|
+
var { relationColumn, columnName } = filtersMap[name] || {};
|
79
|
+
/*
|
80
|
+
1. relationColumn과 columnName이 지정된 경우
|
81
|
+
- relation inverse 테이블에서, columnName을 찾는다.
|
82
|
+
2. relationColumn만 지정된 경우는 없어야 한다.
|
83
|
+
- 이 경우 columnName 은 'name' 이라고 판단한다.
|
84
|
+
3. columnName이 지정된 경우.
|
85
|
+
- 이 경우는 columnName 만 적용한다.
|
86
|
+
*/
|
87
|
+
if (relationColumn) {
|
88
|
+
var relationColumnMeta = metadata.columns.find(column => column.propertyName === relationColumn);
|
89
|
+
if (!relationColumnMeta) {
|
90
|
+
debug(`relationColumn "${relationColumn}" in filtersMap for "${name}" is not a relation column`);
|
91
|
+
return;
|
92
|
+
}
|
93
|
+
var relation = relationColumnMeta.relationMetadata;
|
94
|
+
var entityMetadata = relation.inverseEntityMetadata;
|
95
|
+
var columnMeta = entityMetadata.columns.find(column => column.propertyName === (columnName || 'name'));
|
96
|
+
if (!columnMeta) {
|
97
|
+
debug(`columnName "${columnName}" in filtersMap for "${name}" is not a column`);
|
98
|
+
return;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
else {
|
102
|
+
var columnMeta = metadata.columns.find(column => column.propertyName === (columnName || name));
|
103
|
+
if (!columnMeta) {
|
104
|
+
/* relationId 에 대한 필터링은 해당 컬럼값 자체의 비교로 한다. */
|
105
|
+
var relationIdMeta = metadata.relationIds.find(relationId => relationId.propertyName === (columnName || name));
|
106
|
+
if (relationIdMeta) {
|
107
|
+
columnMeta = relationIdMeta.relation.joinColumns[0];
|
108
|
+
}
|
109
|
+
else {
|
110
|
+
columnName
|
111
|
+
? debug(`columnName "${columnName}" in filtersMap for "${name}" is not a column`)
|
112
|
+
: debug(`name "${name}" is not a column`);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
else {
|
116
|
+
var relation = columnMeta.relationMetadata;
|
117
|
+
}
|
118
|
+
if (relation) {
|
119
|
+
/* filterMap에 의해서 relationColumn 이 지정되지 않았더라도, name 또는 columnName의 column이 relation인 경우에는
|
120
|
+
- 조건절 구성을 위한 타겟필드명은 'name' 으로만 한정된다.
|
121
|
+
*/
|
122
|
+
var relationColumnMeta = columnMeta;
|
123
|
+
var entityMetadata = relation.inverseEntityMetadata;
|
124
|
+
columnMeta = entityMetadata.columns.find(column => column.propertyName === 'name');
|
125
|
+
if (!columnMeta) {
|
126
|
+
debug(`relation column "${columnName || name}" does not have "name" column`);
|
127
|
+
return;
|
128
|
+
}
|
129
|
+
}
|
130
|
+
}
|
131
|
+
const dbNameForColumn = columnMeta.databaseName;
|
132
|
+
const alias = relationColumnMeta ? `${name}-filter` : entityAlias;
|
133
|
+
/* relation columne인 경우 name을 alias로 사용한다. */
|
134
|
+
const field = `${alias}.${dbNameForColumn}`;
|
135
|
+
var clause = '';
|
136
|
+
var parameters = {};
|
137
|
+
switch (operator) {
|
138
|
+
case 'eq':
|
139
|
+
clause = `${field} = :${name}`;
|
140
|
+
parameters = { [name]: value };
|
141
|
+
break;
|
142
|
+
case 'like':
|
143
|
+
clause = `${field} LIKE :${name}`;
|
144
|
+
parameters = { [name]: `%${value}%` };
|
145
|
+
break;
|
146
|
+
case 'search':
|
147
|
+
case 'i_like':
|
148
|
+
clause = `LOWER(${field}) LIKE :${name}`;
|
149
|
+
parameters = { [name]: `%${String(value).toLowerCase()}%` };
|
150
|
+
break;
|
151
|
+
case 'nlike':
|
152
|
+
clause = `${field} NOT LIKE :${name}`;
|
153
|
+
parameters = { [name]: `%${value}%` };
|
154
|
+
break;
|
155
|
+
case 'i_nlike':
|
156
|
+
clause = `LOWER(${field}) NOT LIKE :${name}`;
|
157
|
+
parameters = { [name]: `%${String(value).toLowerCase()}%` };
|
158
|
+
break;
|
159
|
+
case 'lt':
|
160
|
+
clause = `${field} < :${name}`;
|
161
|
+
parameters = { [name]: value };
|
162
|
+
break;
|
163
|
+
case 'gt':
|
164
|
+
clause = `${field} > :${name}`;
|
165
|
+
parameters = { [name]: value };
|
166
|
+
break;
|
167
|
+
case 'lte':
|
168
|
+
clause = `${field} <= :${name}`;
|
169
|
+
parameters = { [name]: value };
|
170
|
+
break;
|
171
|
+
case 'gte':
|
172
|
+
clause = `${field} >= :${name}`;
|
173
|
+
parameters = { [name]: value };
|
174
|
+
break;
|
175
|
+
case 'noteq':
|
176
|
+
clause = `${field} != :${name}`;
|
177
|
+
parameters = { [name]: value };
|
178
|
+
break;
|
179
|
+
case 'in':
|
180
|
+
clause = `${field} IN (:...${name})`;
|
181
|
+
parameters = { [name]: values };
|
182
|
+
break;
|
183
|
+
case 'notin':
|
184
|
+
clause = `${field} NOT IN (:...${name})`;
|
185
|
+
parameters = { [name]: values };
|
186
|
+
break;
|
187
|
+
case 'notin_with_null':
|
188
|
+
clause = `${field} IS NULL OR ${field} NOT IN (:...${name}))`;
|
189
|
+
parameters = { [name]: values };
|
190
|
+
break;
|
191
|
+
case 'is_null':
|
192
|
+
clause = `${field} IS NULL`;
|
193
|
+
break;
|
194
|
+
case 'is_not_null':
|
195
|
+
clause = `${field} IS NOT NULL`;
|
196
|
+
break;
|
197
|
+
case 'is_false':
|
198
|
+
clause = `${field} IS FALSE`;
|
199
|
+
break;
|
200
|
+
case 'is_true':
|
201
|
+
clause = `${field} IS TRUE`;
|
202
|
+
break;
|
203
|
+
case 'is_not_false':
|
204
|
+
clause = `${field} IS NOT FALSE`;
|
205
|
+
break;
|
206
|
+
case 'is_not_true':
|
207
|
+
clause = `${field} IS NOT TRUE`;
|
208
|
+
break;
|
209
|
+
case 'is_present':
|
210
|
+
clause = `${field} IS PRESENT`;
|
211
|
+
break;
|
212
|
+
case 'is_blank':
|
213
|
+
clause = `${field} IS BLANK`;
|
214
|
+
break;
|
215
|
+
case 'is_empty_num_id':
|
216
|
+
clause = `${field} IS EMPTY NUMERIC ID`;
|
217
|
+
break;
|
218
|
+
case 'between':
|
219
|
+
clause = `${field} BETWEEN :${name}_1 AND :${name}_2`;
|
220
|
+
parameters = { [`${name}_1`]: values[0], [`${name}_2`]: values[1] };
|
221
|
+
break;
|
222
|
+
}
|
223
|
+
if (relationColumnMeta) {
|
224
|
+
const { propertyName } = relationColumnMeta;
|
225
|
+
const property = `${entityAlias}.${propertyName}`;
|
226
|
+
if (andCondition) {
|
227
|
+
selectQueryBuilder.innerJoin(property, alias, clause, parameters);
|
228
|
+
}
|
229
|
+
else {
|
230
|
+
selectQueryBuilder.leftJoin(property, alias);
|
231
|
+
whereExpressionBuilder.orWhere(clause, parameters);
|
232
|
+
}
|
233
|
+
}
|
234
|
+
else {
|
235
|
+
andCondition
|
236
|
+
? whereExpressionBuilder.andWhere(clause, parameters)
|
237
|
+
: whereExpressionBuilder.orWhere(clause, parameters);
|
238
|
+
}
|
239
|
+
}
|
240
|
+
//# sourceMappingURL=get-query-builder-from-list-params.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-query-builder-from-list-params.js","sourceRoot":"","sources":["../../server/utils/get-query-builder-from-list-params.ts"],"names":[],"mappings":"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"}
|
@@ -19,4 +19,6 @@ __exportStar(require("./condition-builder"), exports);
|
|
19
19
|
__exportStar(require("./list-query-builder"), exports);
|
20
20
|
__exportStar(require("./list-params-converter"), exports);
|
21
21
|
__exportStar(require("./publish-progress"), exports);
|
22
|
+
__exportStar(require("./get-query-builder-from-list-params"), exports);
|
23
|
+
__exportStar(require("./list-param-adjuster"), exports);
|
22
24
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,sDAAmC;AACnC,uDAAoC;AACpC,0DAAuC;AACvC,qDAAkC"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,sDAAmC;AACnC,uDAAoC;AACpC,0DAAuC;AACvC,qDAAkC;AAClC,uEAAoD;AACpD,wDAAqC"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.adjustFilters = void 0;
|
4
|
+
function adjustFilters(filters, filtersChange) {
|
5
|
+
var filtersNew = [...filters];
|
6
|
+
filtersChange.forEach(change => {
|
7
|
+
const idx = (filtersNew || []).findIndex(f => f.name === change.name);
|
8
|
+
idx !== -1 ? filtersNew.splice(idx, 1, change) : filtersNew.push(change);
|
9
|
+
});
|
10
|
+
return filtersNew;
|
11
|
+
}
|
12
|
+
exports.adjustFilters = adjustFilters;
|
13
|
+
//# sourceMappingURL=list-param-adjuster.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"list-param-adjuster.js","sourceRoot":"","sources":["../../server/utils/list-param-adjuster.ts"],"names":[],"mappings":";;;AAEA,SAAgB,aAAa,CAAC,OAAiB,EAAE,aAAuB;IACtE,IAAI,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;IAE7B,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC7B,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAA;QACrE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAA;AACnB,CAAC;AATD,sCASC"}
|
@@ -2,6 +2,8 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.convertListParams = void 0;
|
4
4
|
const typeorm_1 = require("typeorm");
|
5
|
+
const list_param_adjuster_1 = require("./list-param-adjuster");
|
6
|
+
const debug = require('debug')('things-factory:shell:list-params-converter');
|
5
7
|
const OPERATION_FUNCTION_MAP = {
|
6
8
|
search: value => (0, typeorm_1.ILike)(value),
|
7
9
|
eq: value => (0, typeorm_1.Equal)(value),
|
@@ -26,11 +28,11 @@ const OPERATION_FUNCTION_MAP = {
|
|
26
28
|
is_empty_num_id: () => (0, typeorm_1.Raw)(alias => `${alias} IS EMPTY NUMERIC ID`),
|
27
29
|
between: value => (0, typeorm_1.Between)(value[0], value[1])
|
28
30
|
};
|
29
|
-
function getOperatorFunction({ operator,
|
31
|
+
function getOperatorFunction({ operator, value }) {
|
30
32
|
return OPERATION_FUNCTION_MAP[operator](value);
|
31
33
|
}
|
32
34
|
function makePaginationParams(pagination) {
|
33
|
-
var
|
35
|
+
var result = {};
|
34
36
|
if (pagination) {
|
35
37
|
var { page = 0, limit = 0 } = pagination;
|
36
38
|
var skip = 0;
|
@@ -38,35 +40,54 @@ function makePaginationParams(pagination) {
|
|
38
40
|
if (limit > 0) {
|
39
41
|
skip = Math.max(page - 1, 0) * limit;
|
40
42
|
take = limit;
|
41
|
-
Object.assign(
|
43
|
+
Object.assign(result, {
|
42
44
|
skip,
|
43
45
|
take
|
44
46
|
});
|
45
47
|
}
|
46
48
|
}
|
47
|
-
return
|
49
|
+
return result;
|
48
50
|
}
|
49
51
|
function makeSortingParams(sortings) {
|
50
|
-
var
|
52
|
+
var result = {};
|
51
53
|
if (sortings) {
|
52
54
|
var order = {};
|
53
55
|
sortings.forEach(s => {
|
54
56
|
order[s.name] = s.desc ? 'DESC' : 'ASC';
|
55
57
|
});
|
56
|
-
Object.assign(
|
58
|
+
Object.assign(result, {
|
57
59
|
order
|
58
60
|
});
|
59
61
|
}
|
60
|
-
return
|
62
|
+
return result;
|
61
63
|
}
|
62
|
-
function makeFilterParams(filters) {
|
64
|
+
function makeFilterParams(filters, searchables) {
|
63
65
|
/* for where AND clauses */
|
64
|
-
const columnFilters = filters.filter(filter =>
|
66
|
+
const columnFilters = (filters === null || filters === void 0 ? void 0 : filters.filter(filter => {
|
67
|
+
if (filter.operator === 'search') {
|
68
|
+
return false;
|
69
|
+
}
|
70
|
+
if (filter.operator.toLowerCase().includes('like') && (!searchables || !searchables.includes(filter.name))) {
|
71
|
+
return false;
|
72
|
+
}
|
73
|
+
return true;
|
74
|
+
})) || [];
|
75
|
+
const searchFilters = searchables instanceof Array
|
76
|
+
? (filters === null || filters === void 0 ? void 0 : filters.filter(filter => {
|
77
|
+
if (filter.operator !== 'search') {
|
78
|
+
return false;
|
79
|
+
}
|
80
|
+
if (!searchables.includes(filter.name)) {
|
81
|
+
debug('"searchables" setting is required for like searches with a heavy database query load', filter.name);
|
82
|
+
return false;
|
83
|
+
}
|
84
|
+
return true;
|
85
|
+
})) || []
|
86
|
+
: [];
|
65
87
|
const columnWhere = columnFilters.reduce((where, f) => {
|
66
88
|
where[f.name] = getOperatorFunction(f);
|
67
89
|
return where;
|
68
90
|
}, {});
|
69
|
-
const searchFilters = filters.filter(filter => filter.operator === 'search');
|
70
91
|
if (searchFilters.length === 0) {
|
71
92
|
return {
|
72
93
|
where: columnWhere
|
@@ -80,23 +101,35 @@ function makeFilterParams(filters) {
|
|
80
101
|
where: searchWheres
|
81
102
|
};
|
82
103
|
}
|
83
|
-
function convertListParams(params,
|
104
|
+
function convertListParams(params, options) {
|
105
|
+
var domainId;
|
106
|
+
if (options) {
|
107
|
+
if (typeof options === 'string' /* for 하위 호환성 */) {
|
108
|
+
var domainId = options;
|
109
|
+
}
|
110
|
+
else {
|
111
|
+
var { domain, searchables } = options;
|
112
|
+
var domainId = typeof domain === 'string' ? domain : domain === null || domain === void 0 ? void 0 : domain.id;
|
113
|
+
}
|
114
|
+
}
|
84
115
|
var { pagination, filters = [], sortings } = params;
|
85
|
-
var
|
86
|
-
if (
|
87
|
-
filters.
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
116
|
+
var result = {};
|
117
|
+
if (domainId) {
|
118
|
+
filters = (0, list_param_adjuster_1.adjustFilters)(filters, [
|
119
|
+
{
|
120
|
+
name: 'domain',
|
121
|
+
operator: 'eq',
|
122
|
+
value: domainId
|
123
|
+
}
|
124
|
+
]);
|
92
125
|
}
|
93
126
|
if (pagination)
|
94
|
-
Object.assign(
|
127
|
+
Object.assign(result, makePaginationParams(pagination));
|
95
128
|
if (sortings)
|
96
|
-
Object.assign(
|
129
|
+
Object.assign(result, makeSortingParams(sortings));
|
97
130
|
if (filters)
|
98
|
-
Object.assign(
|
99
|
-
return
|
131
|
+
Object.assign(result, makeFilterParams(filters, searchables));
|
132
|
+
return result;
|
100
133
|
}
|
101
134
|
exports.convertListParams = convertListParams;
|
102
135
|
//# sourceMappingURL=list-params-converter.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"list-params-converter.js","sourceRoot":"","sources":["../../server/utils/list-params-converter.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"list-params-converter.js","sourceRoot":"","sources":["../../server/utils/list-params-converter.ts"],"names":[],"mappings":"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"}
|
@@ -3,10 +3,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildQuery = void 0;
|
4
4
|
const typeorm_1 = require("typeorm");
|
5
5
|
const condition_builder_1 = require("./condition-builder");
|
6
|
-
const
|
6
|
+
const debug = require('debug')('things-factory:shell:list-query-builder');
|
7
|
+
/**
|
8
|
+
* @deprecated The name of this function does not imply an exact purpose and it is not possible to correspond to a foreign key using the meta information of the table column, so it is recommended to replace it with the getQueryBuilderFromListParams function.
|
9
|
+
*/
|
10
|
+
const buildQuery = function (queryBuilder, params, context, options) {
|
7
11
|
var _a, _b;
|
8
|
-
|
9
|
-
|
12
|
+
/* default value of domainRef is 'true' */
|
13
|
+
var domainRef = typeof options === 'boolean' ? options : true;
|
14
|
+
/* for backwards compatibility of function spec */
|
15
|
+
if (typeof options === 'object') {
|
16
|
+
var { domainRef = true, searchables } = options;
|
17
|
+
}
|
18
|
+
const columnFilters = ((_a = params.filters) === null || _a === void 0 ? void 0 : _a.filter(filter => {
|
19
|
+
if (filter.operator === 'search') {
|
20
|
+
return false;
|
21
|
+
}
|
22
|
+
if (filter.operator.toLowerCase().includes('like') && (!searchables || !searchables.includes(filter.name))) {
|
23
|
+
debug('"searchables" setting is required for like searches with a heavy database query load', filter.name);
|
24
|
+
return false;
|
25
|
+
}
|
26
|
+
return true;
|
27
|
+
})) || [];
|
28
|
+
const searchFilters = searchables instanceof Array
|
29
|
+
? ((_b = params.filters) === null || _b === void 0 ? void 0 : _b.filter(filter => {
|
30
|
+
if (filter.operator !== 'search') {
|
31
|
+
return false;
|
32
|
+
}
|
33
|
+
if (!searchables.includes(filter.name)) {
|
34
|
+
debug('"searchables" setting is required for like searches with a heavy database query load', filter.name);
|
35
|
+
return false;
|
36
|
+
}
|
37
|
+
return true;
|
38
|
+
})) || []
|
39
|
+
: [];
|
10
40
|
const pagination = params.pagination;
|
11
41
|
const sortings = params.sortings;
|
12
42
|
const domainId = context && context.state.domain && context.state.domain.id;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"list-query-builder.js","sourceRoot":"","sources":["../../server/utils/list-query-builder.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAElC,2DAAoD;
|
1
|
+
{"version":3,"file":"list-query-builder.js","sourceRoot":"","sources":["../../server/utils/list-query-builder.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAElC,2DAAoD;AAEpD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,yCAAyC,CAAC,CAAA;AAEzE;;GAEG;AACI,MAAM,UAAU,GAAG,UACxB,YAAiB,EACjB,MAAW,EACX,OAAY,EACZ,OAKK;;IAEL,0CAA0C;IAC1C,IAAI,SAAS,GAAG,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAE7D,kDAAkD;IAClD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;KAChD;IAED,MAAM,aAAa,GACjB,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QAC9B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAChC,OAAO,KAAK,CAAA;SACb;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;YAC1G,KAAK,CAAC,sFAAsF,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YAC1G,OAAO,KAAK,CAAA;SACb;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,KAAI,EAAE,CAAA;IAEV,MAAM,aAAa,GACjB,WAAW,YAAY,KAAK;QAC1B,CAAC,CAAC,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAC,MAAM,CAAC,EAAE;YAC9B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE;gBAChC,OAAO,KAAK,CAAA;aACb;YACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACtC,KAAK,CAAC,sFAAsF,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC1G,OAAO,KAAK,CAAA;aACb;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,KAAI,EAAE;QACV,CAAC,CAAC,EAAE,CAAA;IAER,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;IAChC,MAAM,QAAQ,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAA;IAE3E,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7C,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAA,kCAAc,EAC9B,YAAY,CAAC,KAAK,EAClB,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,CACjD,CAAA;YAED,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM;gBAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YAC9D,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU;gBAAE,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAC7E,CAAC,CAAC,CAAA;KACH;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,YAAY,CAAC,QAAQ,CACnB,IAAI,kBAAQ,CAAC,EAAE,CAAC,EAAE;YAChB,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtC,MAAM,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,EAAE,CAAA;gBAC1E,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAA;gBAElD,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YAC7E,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CACH,CAAA;KACF;IAED,IAAI,SAAS,EAAE;QACb,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,qBAAqB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;KAChF;IAED,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE;QAC7D,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3D,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;KACpC;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACnC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAClC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAA;YAC7G,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;aAC/D;iBAAM;gBACL,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;aAClE;QACH,CAAC,CAAC,CAAA;KACH;AACH,CAAC,CAAA;AAjGY,QAAA,UAAU,cAiGtB"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@things-factory/shell",
|
3
|
-
"version": "5.0.0-
|
3
|
+
"version": "5.0.0-zeta.0",
|
4
4
|
"description": "Core module for framework",
|
5
5
|
"bin": {
|
6
6
|
"things-factory": "bin/things-factory",
|
@@ -36,7 +36,7 @@
|
|
36
36
|
"@graphql-tools/schema": "^8.3.2",
|
37
37
|
"@graphql-tools/utils": "^8.6.2",
|
38
38
|
"@hatiolab/koa-webpack": "^6.0.0",
|
39
|
-
"@hatiolab/things-scene": "^
|
39
|
+
"@hatiolab/things-scene": "^3.0.12",
|
40
40
|
"@koa/cors": "^3.1.0",
|
41
41
|
"@material/mwc-button": "^0.25.3",
|
42
42
|
"@material/mwc-fab": "^0.25.3",
|
@@ -44,16 +44,16 @@
|
|
44
44
|
"@material/mwc-icon-button": "^0.25.3",
|
45
45
|
"@material/mwc-slider": "^0.25.3",
|
46
46
|
"@material/mwc-textfield": "^0.25.3",
|
47
|
-
"@operato/board": "1.0.0-
|
48
|
-
"@operato/graphql": "1.0.0-
|
49
|
-
"@operato/help": "1.0.0-
|
50
|
-
"@operato/layout": "1.0.0-
|
51
|
-
"@operato/shell": "1.0.0-
|
52
|
-
"@operato/utils": "1.0.0-
|
53
|
-
"@things-factory/ejs-remote": "^5.0.0-
|
54
|
-
"@things-factory/env": "^5.0.0-
|
55
|
-
"@things-factory/styles": "^5.0.0-
|
56
|
-
"@things-factory/utils": "^5.0.0-
|
47
|
+
"@operato/board": "1.0.0-beta.29",
|
48
|
+
"@operato/graphql": "1.0.0-beta.29",
|
49
|
+
"@operato/help": "1.0.0-beta.29",
|
50
|
+
"@operato/layout": "1.0.0-beta.29",
|
51
|
+
"@operato/shell": "1.0.0-beta.29",
|
52
|
+
"@operato/utils": "1.0.0-beta.29",
|
53
|
+
"@things-factory/ejs-remote": "^5.0.0-zeta.0",
|
54
|
+
"@things-factory/env": "^5.0.0-zeta.0",
|
55
|
+
"@things-factory/styles": "^5.0.0-zeta.0",
|
56
|
+
"@things-factory/utils": "^5.0.0-zeta.0",
|
57
57
|
"@webcomponents/webcomponentsjs": "^2.6.0",
|
58
58
|
"@webpack-contrib/schema-utils": "^1.0.0-beta.0",
|
59
59
|
"apollo-server-core": "^3.6.4",
|
@@ -63,7 +63,7 @@
|
|
63
63
|
"args": "^5.0.0",
|
64
64
|
"broadcastchannel-polyfill": "^1.0.1",
|
65
65
|
"chalk": "^4.1.0",
|
66
|
-
"class-validator": "^0.
|
66
|
+
"class-validator": "^0.13.2",
|
67
67
|
"core-js": "^3.16.0",
|
68
68
|
"csvtojson": "^2.0.10",
|
69
69
|
"debug": "^4.1.1",
|
@@ -77,7 +77,7 @@
|
|
77
77
|
"graphql-tag": "^2.12.6",
|
78
78
|
"graphql-upload": "^13.0.0",
|
79
79
|
"haunted": "^4.8.2",
|
80
|
-
"html-webpack-plugin": "^
|
80
|
+
"html-webpack-plugin": "^5.5.0",
|
81
81
|
"husky": "7.0.1",
|
82
82
|
"imports-loader": "^3.0.0",
|
83
83
|
"inquirer": "^8.2.0",
|
@@ -92,14 +92,13 @@
|
|
92
92
|
"koa-static": "^5.0.0",
|
93
93
|
"koa-unless": "^1.0.7",
|
94
94
|
"koa2-connect-history-api-fallback": "^0.1.2",
|
95
|
-
"lit": "^2.2.
|
95
|
+
"lit": "^2.2.1",
|
96
96
|
"loader-utils": "^2.0.0",
|
97
97
|
"lodash": "^4.17.15",
|
98
98
|
"lodash-es": "^4.17.15",
|
99
99
|
"mkdirp": "^1.0.3",
|
100
100
|
"mqtt": "^4.3.4",
|
101
101
|
"node-fetch": "^2.6.0",
|
102
|
-
"node-sass": "^6.0.1",
|
103
102
|
"nodemon": "^2.0.2",
|
104
103
|
"npm-license-crawler": "^0.2.1",
|
105
104
|
"pluralize": "^8.0.0",
|
@@ -109,18 +108,20 @@
|
|
109
108
|
"redux-thunk": "^2.3.0",
|
110
109
|
"regenerator-runtime": "^0.13.2",
|
111
110
|
"reselect": "^4.0.0",
|
111
|
+
"sass": "^1.50.1",
|
112
112
|
"scrollbooster": "^3.0.2",
|
113
113
|
"subscriptions-transport-ws": "^0.11.0",
|
114
114
|
"sweetalert2": "^10.9.0",
|
115
115
|
"type-graphql": "^1.2.0-rc.1",
|
116
116
|
"typeorm": "^0.2.41",
|
117
|
+
"uuid": "^3.4.0",
|
117
118
|
"web-animations-js": "^2.3.2",
|
118
119
|
"web-push": "^3.4.5",
|
119
120
|
"webfontloader": "^1.6.28"
|
120
121
|
},
|
121
122
|
"optionalDependencies": {
|
122
123
|
"better-sqlite3": "^7.1.2",
|
123
|
-
"mssql": "^
|
124
|
+
"mssql": "^8.1.2",
|
124
125
|
"mysql2": "^2.3.3",
|
125
126
|
"oracledb": "^5.1.0",
|
126
127
|
"pg": "^8.3.0",
|
@@ -129,5 +130,5 @@
|
|
129
130
|
"resolutions": {
|
130
131
|
"core-js": "^3.16.0"
|
131
132
|
},
|
132
|
-
"gitHead": "
|
133
|
+
"gitHead": "92cc88054dfbf35cc54fb9612a067b811fb2db39"
|
133
134
|
}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { config, logger } from '@things-factory/env'
|
2
|
+
|
2
3
|
import { domainMiddleware } from './domain-middleware'
|
3
4
|
|
4
5
|
const debug = require('debug')('things-factory:shell:middleware')
|
@@ -18,8 +19,8 @@ export function initMiddlewares(app) {
|
|
18
19
|
try {
|
19
20
|
await next()
|
20
21
|
} catch (err) {
|
21
|
-
context.status = err
|
22
|
-
context.body = err
|
22
|
+
context.status = err?.status || 500
|
23
|
+
context.body = err?.message
|
23
24
|
|
24
25
|
// emitting error to app.on('error', ...)
|
25
26
|
context.app.emit('error', err, context)
|