@nest-boot/graphql-connection 6.10.0 → 6.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/connection-query-builder.d.ts +42 -0
- package/dist/connection-query-builder.js +260 -0
- package/dist/connection-query-builder.js.map +1 -0
- package/dist/connection.manager.d.ts +5 -6
- package/dist/connection.manager.js +4 -108
- package/dist/connection.manager.js.map +1 -1
- package/dist/cursor.d.ts +6 -0
- package/dist/cursor.js +28 -0
- package/dist/cursor.js.map +1 -0
- package/dist/enums/index.d.ts +1 -0
- package/dist/enums/index.js +1 -0
- package/dist/enums/index.js.map +1 -1
- package/dist/enums/paging-type.enum.d.ts +4 -0
- package/dist/enums/paging-type.enum.js +9 -0
- package/dist/enums/paging-type.enum.js.map +1 -0
- package/dist/interfaces/connection-args.interface.d.ts +5 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { EntityManager } from "@mikro-orm/core";
|
|
2
|
+
import { ConnectionFindOptions } from "./connection.manager";
|
|
3
|
+
import { ConnectionArgsInterface, EdgeInterface } from "./interfaces";
|
|
4
|
+
import { ConnectionClass } from "./types";
|
|
5
|
+
export declare class ConnectionQueryBuilder<Entity extends object, Hint extends string = never, Fields extends string = "*", Excludes extends string = never> {
|
|
6
|
+
private readonly entityManager;
|
|
7
|
+
private readonly connectionClass;
|
|
8
|
+
private readonly args;
|
|
9
|
+
private readonly options?;
|
|
10
|
+
private readonly metadata;
|
|
11
|
+
private readonly limit;
|
|
12
|
+
private readonly cursor;
|
|
13
|
+
private readonly pagingType;
|
|
14
|
+
private readonly queryOrder;
|
|
15
|
+
private readonly queryOrderMap;
|
|
16
|
+
private readonly findOptions;
|
|
17
|
+
private readonly optionFilterQuery;
|
|
18
|
+
private readonly cursorFilterQuery;
|
|
19
|
+
private readonly queryStringFilterQuery;
|
|
20
|
+
private readonly totalCountFilterQuery;
|
|
21
|
+
private readonly allFilterQuery;
|
|
22
|
+
constructor(entityManager: EntityManager, connectionClass: ConnectionClass<Entity>, args: ConnectionArgsInterface<Entity>, options?: ConnectionFindOptions<Entity, Hint, Fields, Excludes> | undefined);
|
|
23
|
+
private getLimit;
|
|
24
|
+
private getCursor;
|
|
25
|
+
private getPagingType;
|
|
26
|
+
private getQueryOrder;
|
|
27
|
+
private getQueryOrderMap;
|
|
28
|
+
private getFindOptions;
|
|
29
|
+
private getCursorFilterQuery;
|
|
30
|
+
private getQueryStringToFilterQuery;
|
|
31
|
+
private mergeFilterQuery;
|
|
32
|
+
query(): Promise<{
|
|
33
|
+
totalCount: number;
|
|
34
|
+
edges: EdgeInterface<Entity>[];
|
|
35
|
+
pageInfo: {
|
|
36
|
+
startCursor: string;
|
|
37
|
+
endCursor: string;
|
|
38
|
+
hasNextPage: boolean;
|
|
39
|
+
hasPreviousPage: boolean;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ConnectionQueryBuilder = void 0;
|
|
7
|
+
const core_1 = require("@mikro-orm/core");
|
|
8
|
+
const compact_1 = __importDefault(require("lodash/compact"));
|
|
9
|
+
const get_1 = __importDefault(require("lodash/get"));
|
|
10
|
+
const set_1 = __importDefault(require("lodash/set"));
|
|
11
|
+
const cursor_1 = require("./cursor");
|
|
12
|
+
const enums_1 = require("./enums");
|
|
13
|
+
const graphql_connection_constants_1 = require("./graphql-connection.constants");
|
|
14
|
+
const search_syntax_lexer_1 = require("./search-syntax.lexer");
|
|
15
|
+
const search_syntax_parser_1 = require("./search-syntax.parser");
|
|
16
|
+
const search_syntax_visitor_1 = require("./search-syntax.visitor");
|
|
17
|
+
function entityPropertyToSimpleType(type) {
|
|
18
|
+
switch (type) {
|
|
19
|
+
case "boolean":
|
|
20
|
+
case "BooleanType":
|
|
21
|
+
return "boolean";
|
|
22
|
+
case "number":
|
|
23
|
+
case "IntegerType":
|
|
24
|
+
case "SmallIntType":
|
|
25
|
+
case "MediumIntType":
|
|
26
|
+
case "FloatType":
|
|
27
|
+
case "DoubleType":
|
|
28
|
+
return "number";
|
|
29
|
+
case "Date":
|
|
30
|
+
case "DateType":
|
|
31
|
+
case "DateTimeType":
|
|
32
|
+
return "date";
|
|
33
|
+
case "bigint":
|
|
34
|
+
case "BigIntType":
|
|
35
|
+
return "bigint";
|
|
36
|
+
default:
|
|
37
|
+
return "string";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
class ConnectionQueryBuilder {
|
|
41
|
+
constructor(entityManager, connectionClass, args, options) {
|
|
42
|
+
this.entityManager = entityManager;
|
|
43
|
+
this.connectionClass = connectionClass;
|
|
44
|
+
this.args = args;
|
|
45
|
+
this.options = options;
|
|
46
|
+
this.limit = 0;
|
|
47
|
+
this.cursor = null;
|
|
48
|
+
this.queryOrderMap = [];
|
|
49
|
+
this.optionFilterQuery = null;
|
|
50
|
+
this.cursorFilterQuery = null;
|
|
51
|
+
this.queryStringFilterQuery = null;
|
|
52
|
+
this.totalCountFilterQuery = null;
|
|
53
|
+
this.allFilterQuery = null;
|
|
54
|
+
this.metadata = Reflect.getMetadata(graphql_connection_constants_1.GRAPHQL_CONNECTION_METADATA, connectionClass);
|
|
55
|
+
if (typeof this.metadata === "undefined") {
|
|
56
|
+
throw new Error("Connection metadata not found");
|
|
57
|
+
}
|
|
58
|
+
this.limit = this.getLimit();
|
|
59
|
+
this.cursor = this.getCursor();
|
|
60
|
+
this.pagingType = this.getPagingType();
|
|
61
|
+
this.queryOrder = this.getQueryOrder();
|
|
62
|
+
this.queryOrderMap = this.getQueryOrderMap();
|
|
63
|
+
this.findOptions = this.getFindOptions();
|
|
64
|
+
this.optionFilterQuery = this.options?.where ?? null;
|
|
65
|
+
this.cursorFilterQuery = this.getCursorFilterQuery();
|
|
66
|
+
this.queryStringFilterQuery = this.getQueryStringToFilterQuery();
|
|
67
|
+
this.totalCountFilterQuery = this.mergeFilterQuery((0, compact_1.default)([this.optionFilterQuery, this.queryStringFilterQuery]));
|
|
68
|
+
this.allFilterQuery = this.mergeFilterQuery((0, compact_1.default)([
|
|
69
|
+
this.cursorFilterQuery,
|
|
70
|
+
this.optionFilterQuery,
|
|
71
|
+
this.queryStringFilterQuery,
|
|
72
|
+
]));
|
|
73
|
+
}
|
|
74
|
+
getLimit() {
|
|
75
|
+
return this.args.first ?? this.args.last ?? 0;
|
|
76
|
+
}
|
|
77
|
+
getCursor() {
|
|
78
|
+
return this.args.after != null
|
|
79
|
+
? new cursor_1.Cursor(this.args.after)
|
|
80
|
+
: this.args.before != null
|
|
81
|
+
? new cursor_1.Cursor(this.args.before)
|
|
82
|
+
: null;
|
|
83
|
+
}
|
|
84
|
+
getPagingType() {
|
|
85
|
+
const { first, last, after, before } = this.args;
|
|
86
|
+
const isForwardPaging = typeof first === "number" || typeof after === "string";
|
|
87
|
+
const isBackwardPaging = typeof last === "number" || typeof before === "string";
|
|
88
|
+
if (isForwardPaging && isBackwardPaging) {
|
|
89
|
+
if ((isForwardPaging && before != null) ||
|
|
90
|
+
(isBackwardPaging && after != null)) {
|
|
91
|
+
throw new Error("paging must use either first/after or last/before");
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
throw new Error("cursor-based pagination cannot be forwards AND backwards");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return isBackwardPaging ? enums_1.PagingType.BACKWARD : enums_1.PagingType.FORWARD;
|
|
98
|
+
}
|
|
99
|
+
getQueryOrder() {
|
|
100
|
+
const direction = this.args.orderBy?.direction ?? enums_1.OrderDirection.ASC;
|
|
101
|
+
return (this.pagingType === enums_1.PagingType.FORWARD
|
|
102
|
+
? direction === enums_1.OrderDirection.ASC
|
|
103
|
+
: direction === enums_1.OrderDirection.DESC)
|
|
104
|
+
? core_1.QueryOrder.ASC
|
|
105
|
+
: core_1.QueryOrder.DESC;
|
|
106
|
+
}
|
|
107
|
+
getQueryOrderMap() {
|
|
108
|
+
if (typeof this.args.orderBy === "undefined") {
|
|
109
|
+
return [
|
|
110
|
+
{
|
|
111
|
+
id: this.queryOrder,
|
|
112
|
+
},
|
|
113
|
+
];
|
|
114
|
+
}
|
|
115
|
+
const queryOrderMap = [
|
|
116
|
+
(0, set_1.default)({}, this.args.orderBy.field, this.queryOrder),
|
|
117
|
+
];
|
|
118
|
+
if (this.args.orderBy.field !== "id") {
|
|
119
|
+
queryOrderMap.push({
|
|
120
|
+
id: this.queryOrder,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return queryOrderMap;
|
|
124
|
+
}
|
|
125
|
+
getFindOptions() {
|
|
126
|
+
return {
|
|
127
|
+
...(this.options ?? {}),
|
|
128
|
+
limit: this.limit + 1,
|
|
129
|
+
orderBy: this.queryOrderMap,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
getCursorFilterQuery() {
|
|
133
|
+
const idFilterQuery = typeof this.cursor?.id !== "undefined"
|
|
134
|
+
? // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
135
|
+
{
|
|
136
|
+
id: {
|
|
137
|
+
[this.pagingType === enums_1.PagingType.FORWARD ? "$gt" : "$lt"]: this.cursor.id,
|
|
138
|
+
},
|
|
139
|
+
}
|
|
140
|
+
: null;
|
|
141
|
+
return typeof this.args.orderBy !== "undefined" &&
|
|
142
|
+
typeof this.cursor?.value !== "undefined"
|
|
143
|
+
? {
|
|
144
|
+
$or: [
|
|
145
|
+
(0, set_1.default)({}, this.args.orderBy.field, (this.pagingType === enums_1.PagingType.FORWARD
|
|
146
|
+
? this.args.orderBy.direction === enums_1.OrderDirection.ASC
|
|
147
|
+
: this.args.orderBy.direction === enums_1.OrderDirection.DESC)
|
|
148
|
+
? { $gt: this.cursor.value }
|
|
149
|
+
: { $lt: this.cursor.value }),
|
|
150
|
+
idFilterQuery !== null
|
|
151
|
+
? {
|
|
152
|
+
$and: [
|
|
153
|
+
(0, set_1.default)({}, this.args.orderBy.field, {
|
|
154
|
+
$eq: this.cursor.value,
|
|
155
|
+
}),
|
|
156
|
+
idFilterQuery,
|
|
157
|
+
],
|
|
158
|
+
}
|
|
159
|
+
: (0, set_1.default)({}, this.args.orderBy.field, { $eq: this.cursor.value }),
|
|
160
|
+
],
|
|
161
|
+
}
|
|
162
|
+
: idFilterQuery;
|
|
163
|
+
}
|
|
164
|
+
getQueryStringToFilterQuery() {
|
|
165
|
+
if (typeof this.args.query !== "undefined" &&
|
|
166
|
+
this.args.query.trim() !== "") {
|
|
167
|
+
const { entityClass, fieldOptionsMap } = this.metadata;
|
|
168
|
+
const entityMetadata = this.entityManager.getMetadata().get(entityClass);
|
|
169
|
+
if (typeof entityMetadata === "undefined") {
|
|
170
|
+
throw new Error("Entity metadata not found");
|
|
171
|
+
}
|
|
172
|
+
const visitor = new search_syntax_visitor_1.SearchSyntaxVisitor(this.entityManager, [...fieldOptionsMap.values()].reduce((result, fieldOptions) => {
|
|
173
|
+
const replacedField = typeof fieldOptions.replacement === "string"
|
|
174
|
+
? fieldOptions.replacement
|
|
175
|
+
: fieldOptions.field;
|
|
176
|
+
const prop = (0, get_1.default)(entityMetadata.properties, replacedField.split(".").join(".targetMeta.properties."));
|
|
177
|
+
result.set(fieldOptions.field, {
|
|
178
|
+
field: fieldOptions.field,
|
|
179
|
+
type: fieldOptions.type ??
|
|
180
|
+
entityPropertyToSimpleType(prop?.type),
|
|
181
|
+
replacement: fieldOptions
|
|
182
|
+
.replacement,
|
|
183
|
+
array: fieldOptions.array ?? prop?.array,
|
|
184
|
+
fulltext: fieldOptions.fulltext ??
|
|
185
|
+
entityMetadata.indexes.some(({ type, properties }) => type === "fulltext" && properties === replacedField),
|
|
186
|
+
searchable: fieldOptions.searchable,
|
|
187
|
+
filterable: fieldOptions.filterable,
|
|
188
|
+
});
|
|
189
|
+
return result;
|
|
190
|
+
}, new Map()));
|
|
191
|
+
search_syntax_parser_1.searchSyntaxParser.input = search_syntax_lexer_1.searchSyntaxLexer.tokenize(this.args.query).tokens;
|
|
192
|
+
if (search_syntax_parser_1.searchSyntaxParser.errors.length > 0) {
|
|
193
|
+
throw Error(search_syntax_parser_1.searchSyntaxParser.errors[0].message);
|
|
194
|
+
}
|
|
195
|
+
return visitor.visit(search_syntax_parser_1.searchSyntaxParser.query()) ?? null;
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
mergeFilterQuery(filterQueryGroup) {
|
|
200
|
+
if (filterQueryGroup.length === 0) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
if (filterQueryGroup.length === 1) {
|
|
204
|
+
return filterQueryGroup[0];
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
$and: filterQueryGroup,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
async query() {
|
|
211
|
+
let [entities, totalCount] = await Promise.all([
|
|
212
|
+
this.allFilterQuery === null
|
|
213
|
+
? this.entityManager.findAll(this.metadata.entityClass, this.findOptions)
|
|
214
|
+
: this.entityManager.find(this.metadata.entityClass, this.allFilterQuery, this.findOptions),
|
|
215
|
+
(this.totalCountFilterQuery === null
|
|
216
|
+
? this.entityManager.findAll(this.metadata.entityClass, {
|
|
217
|
+
fields: ["id"],
|
|
218
|
+
limit: 10000,
|
|
219
|
+
})
|
|
220
|
+
: this.entityManager.find(this.metadata.entityClass, this.totalCountFilterQuery, { fields: ["id"], limit: 10000 })).then((result) => result.length),
|
|
221
|
+
]);
|
|
222
|
+
// 重新排序结果
|
|
223
|
+
entities =
|
|
224
|
+
this.pagingType === enums_1.PagingType.FORWARD ? entities : entities.reverse();
|
|
225
|
+
// 根据结果生成 edges
|
|
226
|
+
const edges = (entities.length > this.limit
|
|
227
|
+
? this.pagingType === enums_1.PagingType.FORWARD
|
|
228
|
+
? entities.slice(0, -1)
|
|
229
|
+
: entities.slice(1)
|
|
230
|
+
: entities).map((node) => ({
|
|
231
|
+
node: node,
|
|
232
|
+
cursor: new cursor_1.Cursor({
|
|
233
|
+
id: node?.id,
|
|
234
|
+
...(typeof this.args.orderBy !== "undefined"
|
|
235
|
+
? { value: (0, get_1.default)(node, this.args.orderBy.field) }
|
|
236
|
+
: {}),
|
|
237
|
+
}).toString(),
|
|
238
|
+
}));
|
|
239
|
+
// 返回集合
|
|
240
|
+
return {
|
|
241
|
+
totalCount,
|
|
242
|
+
edges,
|
|
243
|
+
pageInfo: {
|
|
244
|
+
...(this.pagingType === enums_1.PagingType.FORWARD
|
|
245
|
+
? {
|
|
246
|
+
hasNextPage: entities.length > this.limit,
|
|
247
|
+
hasPreviousPage: this.cursor != null,
|
|
248
|
+
}
|
|
249
|
+
: {
|
|
250
|
+
hasNextPage: this.cursor != null,
|
|
251
|
+
hasPreviousPage: entities.length > this.limit,
|
|
252
|
+
}),
|
|
253
|
+
startCursor: edges[0]?.cursor,
|
|
254
|
+
endCursor: edges[edges.length - 1]?.cursor,
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
exports.ConnectionQueryBuilder = ConnectionQueryBuilder;
|
|
260
|
+
//# sourceMappingURL=connection-query-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-query-builder.js","sourceRoot":"","sources":["../src/connection-query-builder.ts"],"names":[],"mappings":";;;;;;AAAA,0CAOyB;AACzB,6DAAqC;AACrC,qDAA6B;AAC7B,qDAA6B;AAG7B,qCAAkC;AAClC,mCAAqD;AACrD,iFAA6E;AAS7E,+DAA0D;AAC1D,iEAA4D;AAC5D,mEAA8D;AAG9D,SAAS,0BAA0B,CACjC,IAA4B;IAE5B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,aAAa,CAAC;QACnB,KAAK,cAAc,CAAC;QACpB,KAAK,eAAe,CAAC;QACrB,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,MAAM,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAa,sBAAsB;IA8BjC,YACmB,aAA4B,EAC5B,eAAwC,EACxC,IAAqC,EACrC,OAKhB;QARgB,kBAAa,GAAb,aAAa,CAAe;QAC5B,oBAAe,GAAf,eAAe,CAAyB;QACxC,SAAI,GAAJ,IAAI,CAAiC;QACrC,YAAO,GAAP,OAAO,CAKvB;QA/Bc,UAAK,GAAW,CAAC,CAAC;QAElB,WAAM,GAAkB,IAAI,CAAC;QAM7B,kBAAa,GAA4B,EAAE,CAAC;QAI5C,sBAAiB,GAA+B,IAAI,CAAC;QAErD,sBAAiB,GAA+B,IAAI,CAAC;QAErD,2BAAsB,GAA+B,IAAI,CAAC;QAE1D,0BAAqB,GAA+B,IAAI,CAAC;QAEzD,mBAAc,GAA+B,IAAI,CAAC;QAajE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,WAAW,CACjC,0DAA2B,EAC3B,eAAe,CAChB,CAAC;QAEF,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEzC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC;QACrD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEjE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAChD,IAAA,iBAAO,EAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAC/D,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CACzC,IAAA,iBAAO,EAAC;YACN,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,sBAAsB;SAC5B,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,QAAQ;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAChD,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI;YAC5B,CAAC,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI;gBACxB,CAAC,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC9B,CAAC,CAAC,IAAI,CAAC;IACb,CAAC;IAEO,aAAa;QACnB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAEjD,MAAM,eAAe,GACnB,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACzD,MAAM,gBAAgB,GACpB,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC;QAEzD,IAAI,eAAe,IAAI,gBAAgB,EAAE,CAAC;YACxC,IACE,CAAC,eAAe,IAAI,MAAM,IAAI,IAAI,CAAC;gBACnC,CAAC,gBAAgB,IAAI,KAAK,IAAI,IAAI,CAAC,EACnC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,gBAAgB,CAAC,CAAC,CAAC,kBAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAU,CAAC,OAAO,CAAC;IACrE,CAAC;IAEO,aAAa;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,sBAAc,CAAC,GAAG,CAAC;QAErE,OAAO,CACL,IAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,OAAO;YACpC,CAAC,CAAC,SAAS,KAAK,sBAAc,CAAC,GAAG;YAClC,CAAC,CAAC,SAAS,KAAK,sBAAc,CAAC,IAAI,CACtC;YACC,CAAC,CAAC,iBAAU,CAAC,GAAG;YAChB,CAAC,CAAC,iBAAU,CAAC,IAAI,CAAC;IACtB,CAAC;IAEO,gBAAgB;QACtB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YAC7C,OAAO;gBACL;oBACE,EAAE,EAAE,IAAI,CAAC,UAAU;iBACK;aAC3B,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAA4B;YAC7C,IAAA,aAAG,EACD,EAAE,EACF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EACvB,IAAI,CAAC,UAAU,CACS;SAC3B,CAAC;QAEF,IAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAgB,KAAK,IAAI,EAAE,CAAC;YACjD,aAAa,CAAC,IAAI,CAAC;gBACjB,EAAE,EAAE,IAAI,CAAC,UAAU;aACK,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,cAAc;QACpB,OAAO;YACL,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,aAAa;SAC5B,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC1B,MAAM,aAAa,GACjB,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,WAAW;YACpC,CAAC,CAAC,yEAAyE;gBACxE;oBACC,EAAE,EAAE;wBACF,CAAC,IAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EACtD,IAAI,CAAC,MAAM,CAAC,EAAE;qBACjB;iBACiC;YACtC,CAAC,CAAC,IAAI,CAAC;QAEX,OAAO,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,WAAW;YAC7C,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,WAAW;YACzC,CAAC,CAAE;gBACC,GAAG,EAAE;oBACH,IAAA,aAAG,EACD,EAAE,EACF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EACvB,CACE,IAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,OAAO;wBACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,sBAAc,CAAC,GAAG;wBACpD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,sBAAc,CAAC,IAAI,CACxD;wBACC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;wBAC5B,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAC/B;oBACD,aAAa,KAAK,IAAI;wBACpB,CAAC,CAAC;4BACE,IAAI,EAAE;gCACJ,IAAA,aAAG,EAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;oCAC/B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;iCACvB,CAAC;gCACF,aAAa;6BACd;yBACF;wBACH,CAAC,CAAC,IAAA,aAAG,EAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;iBACjE;aACsB;YAC3B,CAAC,CAAC,aAAa,CAAC;IACpB,CAAC;IAEO,2BAA2B;QACjC,IACE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW;YACtC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAC7B,CAAC;YACD,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEvD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEzE,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,2CAAmB,CACrC,IAAI,CAAC,aAAa,EAClB,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;gBAC5D,MAAM,aAAa,GACjB,OAAQ,YAAoB,CAAC,WAAW,KAAK,QAAQ;oBACnD,CAAC,CAAE,YAAoB,CAAC,WAAW;oBACnC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;gBAEzB,MAAM,IAAI,GAAuC,IAAA,aAAG,EAClD,cAAc,CAAC,UAAU,EACzB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CACzD,CAAC;gBAEF,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE;oBAC7B,KAAK,EAAE,YAAY,CAAC,KAAK;oBACzB,IAAI,EACD,YAAwD,CAAC,IAAI;wBAC9D,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC;oBACxC,WAAW,EAAG,YAAgD;yBAC3D,WAAW;oBACd,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK;oBACxC,QAAQ,EACN,YAAY,CAAC,QAAQ;wBACrB,cAAc,CAAC,OAAO,CAAC,IAAI,CACzB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CACvB,IAAI,KAAK,UAAU,IAAI,UAAU,KAAK,aAAa,CACtD;oBACH,UAAU,EAAE,YAAY,CAAC,UAAU;oBACnC,UAAU,EAAE,YAAY,CAAC,UAAU;iBACpC,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC;YAChB,CAAC,EAAE,IAAI,GAAG,EAAsD,CAAC,CAClE,CAAC;YAEF,yCAAkB,CAAC,KAAK,GAAG,uCAAiB,CAAC,QAAQ,CACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAChB,CAAC,MAAM,CAAC;YAET,IAAI,yCAAkB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,CAAC,yCAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;YAED,OAAO,OAAO,CAAC,KAAK,CAAC,yCAAkB,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,gBAAgB,CACtB,gBAAuC;QAEvC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO;YACL,IAAI,EAAE,gBAAgB;SACA,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,IAAI,CAAC,cAAc,KAAK,IAAI;gBAC1B,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CACxB,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,IAAI,CAAC,WAAW,CACjB;gBACH,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,WAAW,CACjB;YACL,CAAC,IAAI,CAAC,qBAAqB,KAAK,IAAI;gBAClC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACpD,MAAM,EAAE,CAAC,IAAI,CAAQ;oBACrB,KAAK,EAAE,KAAK;iBACb,CAAC;gBACJ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,IAAI,CAAC,qBAAqB,EAC1B,EAAE,MAAM,EAAE,CAAC,IAAI,CAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CACxC,CACJ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,SAAS;QACT,QAAQ;YACN,IAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEzE,eAAe;QACf,MAAM,KAAK,GAAG,CACZ,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;YAC1B,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,OAAO;gBACtC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,QAAQ,CACb,CAAC,GAAG,CAAwB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAc;YACpB,MAAM,EAAE,IAAI,eAAM,CAAC;gBACjB,EAAE,EAAG,IAAY,EAAE,EAAE;gBACrB,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,WAAW;oBAC1C,CAAC,CAAC,EAAE,KAAK,EAAE,IAAA,aAAG,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC,QAAQ,EAAE;SACd,CAAC,CAAC,CAAC;QAEJ,OAAO;QACP,OAAO;YACL,UAAU;YACV,KAAK;YACL,QAAQ,EAAE;gBACR,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,OAAO;oBACxC,CAAC,CAAC;wBACE,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;wBACzC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;qBACrC;oBACH,CAAC,CAAC;wBACE,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;wBAChC,eAAe,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;qBAC9C,CAAC;gBACN,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM;gBAC7B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM;aAC3C;SACF,CAAC;IACJ,CAAC;CACF;AArVD,wDAqVC"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { EntityManager, type FilterQuery } from "@mikro-orm/core";
|
|
2
|
-
import type {
|
|
2
|
+
import type { FindOptions } from "@mikro-orm/core/drivers";
|
|
3
3
|
import { ConnectionArgsInterface, ConnectionInterface } from "./interfaces";
|
|
4
4
|
import { ConnectionClass } from "./types";
|
|
5
|
-
export interface ConnectionFindOptions<Entity extends object, Hint extends string = never, Fields extends string = "*", Excludes extends string = never> extends Exclude<
|
|
5
|
+
export interface ConnectionFindOptions<Entity extends object, Hint extends string = never, Fields extends string = "*", Excludes extends string = never> extends Exclude<FindOptions<Entity, Hint, Fields, Excludes>, "limit" | "offset" | "orderBy"> {
|
|
6
6
|
where?: FilterQuery<Entity>;
|
|
7
7
|
}
|
|
8
8
|
export declare class ConnectionManager {
|
|
9
|
-
private readonly
|
|
10
|
-
constructor(
|
|
11
|
-
|
|
12
|
-
find<Entity extends object, Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(connectionClass: ConnectionClass<Entity>, args: ConnectionArgsInterface<Entity, Hint, Fields, Excludes>, options?: ConnectionFindOptions<Entity, Hint, Fields, Excludes>): Promise<ConnectionInterface<Entity>>;
|
|
9
|
+
private readonly em;
|
|
10
|
+
constructor(em: EntityManager);
|
|
11
|
+
find<Entity extends object, Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(connectionClass: ConnectionClass<Entity>, args: ConnectionArgsInterface<Entity>, options?: ConnectionFindOptions<Entity, Hint, Fields, Excludes>): Promise<ConnectionInterface<Entity>>;
|
|
13
12
|
}
|
|
@@ -12,117 +12,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.ConnectionManager = void 0;
|
|
13
13
|
const core_1 = require("@mikro-orm/core");
|
|
14
14
|
const common_1 = require("@nestjs/common");
|
|
15
|
-
const
|
|
16
|
-
const graphql_connection_constants_1 = require("./graphql-connection.constants");
|
|
17
|
-
const search_syntax_lexer_1 = require("./search-syntax.lexer");
|
|
18
|
-
const search_syntax_parser_1 = require("./search-syntax.parser");
|
|
19
|
-
const search_syntax_visitor_1 = require("./search-syntax.visitor");
|
|
20
|
-
function entityPropertyToSimpleType(type) {
|
|
21
|
-
switch (type) {
|
|
22
|
-
case "boolean":
|
|
23
|
-
case "BooleanType":
|
|
24
|
-
return "boolean";
|
|
25
|
-
case "number":
|
|
26
|
-
case "IntegerType":
|
|
27
|
-
case "SmallIntType":
|
|
28
|
-
case "MediumIntType":
|
|
29
|
-
case "FloatType":
|
|
30
|
-
case "DoubleType":
|
|
31
|
-
return "number";
|
|
32
|
-
case "Date":
|
|
33
|
-
case "DateType":
|
|
34
|
-
case "DateTimeType":
|
|
35
|
-
return "date";
|
|
36
|
-
case "bigint":
|
|
37
|
-
case "BigIntType":
|
|
38
|
-
return "bigint";
|
|
39
|
-
default:
|
|
40
|
-
return "string";
|
|
41
|
-
}
|
|
42
|
-
}
|
|
15
|
+
const connection_query_builder_1 = require("./connection-query-builder");
|
|
43
16
|
let ConnectionManager = class ConnectionManager {
|
|
44
|
-
constructor(
|
|
45
|
-
this.
|
|
46
|
-
}
|
|
47
|
-
convertQueryStringToFilterQuery(connectionMetadata, query) {
|
|
48
|
-
const { entityClass, fieldOptionsMap } = connectionMetadata;
|
|
49
|
-
const entityMetadata = this.entityManager.getMetadata().get(entityClass);
|
|
50
|
-
if (typeof entityMetadata === "undefined") {
|
|
51
|
-
throw new Error("Entity metadata not found");
|
|
52
|
-
}
|
|
53
|
-
const visitor = new search_syntax_visitor_1.SearchSyntaxVisitor(this.entityManager, [...fieldOptionsMap.values()].reduce((result, fieldOptions) => {
|
|
54
|
-
const replacedField = typeof fieldOptions.replacement === "string"
|
|
55
|
-
? fieldOptions.replacement
|
|
56
|
-
: fieldOptions.field;
|
|
57
|
-
const prop = (0, lodash_1.get)(entityMetadata.properties, replacedField.split(".").join(".targetMeta.properties."));
|
|
58
|
-
result.set(fieldOptions.field, {
|
|
59
|
-
field: fieldOptions.field,
|
|
60
|
-
type: fieldOptions.type ??
|
|
61
|
-
entityPropertyToSimpleType(prop?.type),
|
|
62
|
-
replacement: fieldOptions
|
|
63
|
-
.replacement,
|
|
64
|
-
array: fieldOptions.array ?? prop?.array,
|
|
65
|
-
fulltext: fieldOptions.fulltext ??
|
|
66
|
-
entityMetadata.indexes.some(({ type, properties }) => type === "fulltext" && properties === replacedField),
|
|
67
|
-
searchable: fieldOptions.searchable,
|
|
68
|
-
filterable: fieldOptions.filterable,
|
|
69
|
-
});
|
|
70
|
-
return result;
|
|
71
|
-
}, new Map()));
|
|
72
|
-
search_syntax_parser_1.searchSyntaxParser.input = search_syntax_lexer_1.searchSyntaxLexer.tokenize(query).tokens;
|
|
73
|
-
if (search_syntax_parser_1.searchSyntaxParser.errors.length > 0) {
|
|
74
|
-
throw Error(search_syntax_parser_1.searchSyntaxParser.errors[0].message);
|
|
75
|
-
}
|
|
76
|
-
return visitor.visit(search_syntax_parser_1.searchSyntaxParser.query()) ?? {};
|
|
17
|
+
constructor(em) {
|
|
18
|
+
this.em = em;
|
|
77
19
|
}
|
|
78
20
|
async find(connectionClass, args, options) {
|
|
79
|
-
|
|
80
|
-
if (typeof connectionMetadata === "undefined") {
|
|
81
|
-
throw new Error("Connection metadata not found");
|
|
82
|
-
}
|
|
83
|
-
const orderBy = [];
|
|
84
|
-
if (typeof args.orderBy === "undefined") {
|
|
85
|
-
orderBy.push({ id: core_1.QueryOrder.ASC });
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
orderBy.push({
|
|
89
|
-
[args.orderBy.field]: args.orderBy.direction,
|
|
90
|
-
});
|
|
91
|
-
if (args.orderBy.field !== "id") {
|
|
92
|
-
orderBy.push({ id: core_1.QueryOrder.ASC });
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
let filterQuery = options?.where ?? {};
|
|
96
|
-
if (typeof args.query !== "undefined" && args.query.trim() !== "") {
|
|
97
|
-
const queryFilterQuery = this.convertQueryStringToFilterQuery(connectionMetadata, args.query);
|
|
98
|
-
filterQuery =
|
|
99
|
-
Object.keys(filterQuery).length === 0
|
|
100
|
-
? queryFilterQuery
|
|
101
|
-
: {
|
|
102
|
-
$and: [filterQuery, queryFilterQuery],
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
const cursor = await this.entityManager.findByCursor(connectionMetadata.entityClass, filterQuery, {
|
|
106
|
-
...options,
|
|
107
|
-
before: args.before,
|
|
108
|
-
after: args.after,
|
|
109
|
-
first: args.first,
|
|
110
|
-
last: args.last,
|
|
111
|
-
orderBy,
|
|
112
|
-
});
|
|
113
|
-
return {
|
|
114
|
-
totalCount: cursor.totalCount,
|
|
115
|
-
edges: cursor.items.map((node) => ({
|
|
116
|
-
node: node,
|
|
117
|
-
cursor: cursor.from(node),
|
|
118
|
-
})),
|
|
119
|
-
pageInfo: {
|
|
120
|
-
hasNextPage: cursor.hasNextPage,
|
|
121
|
-
hasPreviousPage: cursor.hasPrevPage,
|
|
122
|
-
startCursor: cursor.startCursor,
|
|
123
|
-
endCursor: cursor.endCursor,
|
|
124
|
-
},
|
|
125
|
-
};
|
|
21
|
+
return await new connection_query_builder_1.ConnectionQueryBuilder(this.em, connectionClass, args, options).query();
|
|
126
22
|
}
|
|
127
23
|
};
|
|
128
24
|
exports.ConnectionManager = ConnectionManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.manager.js","sourceRoot":"","sources":["../src/connection.manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"connection.manager.js","sourceRoot":"","sources":["../src/connection.manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAkE;AAElE,2CAA4C;AAE5C,yEAAoE;AAiB7D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAA6B,EAAiB;QAAjB,OAAE,GAAF,EAAE,CAAe;IAAG,CAAC;IAElD,KAAK,CAAC,IAAI,CAMR,eAAwC,EACxC,IAAqC,EACrC,OAA+D;QAE/D,OAAO,MAAM,IAAI,iDAAsB,CACrC,IAAI,CAAC,EAAE,EACP,eAAe,EACf,IAAI,EACJ,OAAO,CACR,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;CACF,CAAA;AApBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAEsB,oBAAa;GADnC,iBAAiB,CAoB7B"}
|
package/dist/cursor.d.ts
ADDED
package/dist/cursor.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Cursor = void 0;
|
|
4
|
+
class Cursor {
|
|
5
|
+
constructor(cursor) {
|
|
6
|
+
if (typeof cursor === "string") {
|
|
7
|
+
try {
|
|
8
|
+
const payload = JSON.parse(Buffer.from(cursor, "base64").toString());
|
|
9
|
+
Object.entries(payload).forEach(([key, value]) => {
|
|
10
|
+
this[key] = value;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
//
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
Object.entries(cursor).forEach(([key, value]) => {
|
|
19
|
+
this[key] = value;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
toString() {
|
|
24
|
+
return Buffer.from(JSON.stringify(this)).toString("base64");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.Cursor = Cursor;
|
|
28
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../src/cursor.ts"],"names":[],"mappings":";;;AAAA,MAAa,MAAM;IAKjB,YAAY,MAAoC;QAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAErE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACpB,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,EAAE;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;CACF;AA1BD,wBA0BC"}
|
package/dist/enums/index.d.ts
CHANGED
package/dist/enums/index.js
CHANGED
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./comparator-operator.enum"), exports);
|
|
18
18
|
__exportStar(require("./order-direction.enum"), exports);
|
|
19
|
+
__exportStar(require("./paging-type.enum"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
package/dist/enums/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,yDAAuC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,yDAAuC;AACvC,qDAAmC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PagingType = void 0;
|
|
4
|
+
var PagingType;
|
|
5
|
+
(function (PagingType) {
|
|
6
|
+
PagingType["FORWARD"] = "FORWARD";
|
|
7
|
+
PagingType["BACKWARD"] = "BACKWARD";
|
|
8
|
+
})(PagingType || (exports.PagingType = PagingType = {}));
|
|
9
|
+
//# sourceMappingURL=paging-type.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paging-type.enum.js","sourceRoot":"","sources":["../../src/enums/paging-type.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,mCAAqB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { FindByCursorOptions } from "@mikro-orm/core/drivers";
|
|
2
1
|
import { OrderInterface } from "./order.interface";
|
|
3
|
-
export interface ConnectionArgsInterface<Entity extends object
|
|
2
|
+
export interface ConnectionArgsInterface<Entity extends object> {
|
|
3
|
+
after?: string;
|
|
4
|
+
before?: string;
|
|
5
|
+
first?: number;
|
|
6
|
+
last?: number;
|
|
4
7
|
query?: string;
|
|
5
8
|
orderBy?: OrderInterface<Entity>;
|
|
6
9
|
}
|