linkgress-orm 0.4.24 → 0.4.26

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.
@@ -1,10 +1,31 @@
1
1
  import { SqlBuildContext } from './conditions';
2
2
  import type { QueryExecutor, OrderDirection } from '../entity/db-context';
3
3
  import type { DatabaseClient } from '../database/database-client.interface';
4
+ import { Subquery } from './subquery';
4
5
  /**
5
6
  * Union type: UNION removes duplicates, UNION ALL keeps all rows
6
7
  */
7
8
  export type UnionType = 'UNION' | 'UNION ALL';
9
+ /**
10
+ * Minimal contract a union component must satisfy. SelectQueryBuilder provides
11
+ * the optional `_consumeUnionMetadata` and `_applyUnionPostProcessing` hooks
12
+ * so the union can reconstruct nested-object projections and apply collection
13
+ * mappers; non-SelectQueryBuilder components (rare; e.g. ad-hoc objects used
14
+ * in tests) skip those steps.
15
+ */
16
+ export interface UnionLegBuilder {
17
+ buildUnionSql: (context: SqlBuildContext) => string;
18
+ /** @internal */
19
+ _consumeUnionMetadata?(): {
20
+ nestedPaths: Set<string>;
21
+ selectionResult: any;
22
+ } | undefined;
23
+ /** @internal */
24
+ _applyUnionPostProcessing?(rows: any[], meta: {
25
+ nestedPaths: Set<string>;
26
+ selectionResult: any;
27
+ }): any[];
28
+ }
8
29
  /**
9
30
  * Builder for UNION and UNION ALL queries.
10
31
  * Combines multiple SELECT queries into a single result set.
@@ -47,9 +68,7 @@ export declare class UnionQueryBuilder<TSelection> {
47
68
  /**
48
69
  * Internal constructor - use SelectQueryBuilder.union() or unionAll() to create instances
49
70
  */
50
- constructor(firstQuery: {
51
- buildUnionSql: (context: SqlBuildContext) => string;
52
- }, client: DatabaseClient, executor?: QueryExecutor);
71
+ constructor(firstQuery: UnionLegBuilder, client: DatabaseClient, executor?: QueryExecutor);
53
72
  /**
54
73
  * Add a query with UNION (removes duplicate rows)
55
74
  *
@@ -64,9 +83,7 @@ export declare class UnionQueryBuilder<TSelection> {
64
83
  * .toList();
65
84
  * ```
66
85
  */
67
- union(query: {
68
- buildUnionSql: (context: SqlBuildContext) => string;
69
- }): UnionQueryBuilder<TSelection>;
86
+ union(query: UnionLegBuilder): UnionQueryBuilder<TSelection>;
70
87
  /**
71
88
  * Add a query with UNION ALL (keeps all rows including duplicates)
72
89
  *
@@ -83,9 +100,7 @@ export declare class UnionQueryBuilder<TSelection> {
83
100
  * .toList();
84
101
  * ```
85
102
  */
86
- unionAll(query: {
87
- buildUnionSql: (context: SqlBuildContext) => string;
88
- }): UnionQueryBuilder<TSelection>;
103
+ unionAll(query: UnionLegBuilder): UnionQueryBuilder<TSelection>;
89
104
  /**
90
105
  * Order the combined result set
91
106
  *
@@ -147,6 +162,45 @@ export declare class UnionQueryBuilder<TSelection> {
147
162
  sql: string;
148
163
  params: any[];
149
164
  };
165
+ /**
166
+ * Build the SQL for this union query inside an outer context (e.g. when
167
+ * this union is used as a subquery via {@link asSubquery}). Reuses the
168
+ * outer context's `paramCounter` and `params` array so parameter indices
169
+ * chain correctly across the whole composite statement.
170
+ *
171
+ * @internal
172
+ */
173
+ buildSql(outerContext: SqlBuildContext): string;
174
+ /**
175
+ * Convert this union query to a subquery usable in WHERE, SELECT, JOIN, or
176
+ * FROM clauses of an outer query. Mirrors {@link SelectQueryBuilder.asSubquery}
177
+ * but composes a UNION ALL / UNION across multiple SELECT legs into a single
178
+ * subquery expression.
179
+ *
180
+ * @template TMode - 'scalar' for a single value, 'array' for column list (use
181
+ * with `inSubquery(...)`), 'table' for full rows
182
+ * @returns Subquery that can be passed to `inSubquery`, `exists`, etc.
183
+ *
184
+ * @example
185
+ * ```typescript
186
+ * // Filter outer query by the union of two id selections
187
+ * const friendIds = db.userRelations
188
+ * .where(r => eq(r.parentId, userId))
189
+ * .select(r => r.slaveId)
190
+ * .unionAll(
191
+ * db.userRelations
192
+ * .where(r => eq(r.slaveId, userId))
193
+ * .select(r => r.parentId)
194
+ * )
195
+ * .asSubquery('array');
196
+ *
197
+ * const rows = await db.usersEshop
198
+ * .where(u => inSubquery(u.id, friendIds))
199
+ * .select(u => ({ id: u.id, name: u.name }))
200
+ * .toList();
201
+ * ```
202
+ */
203
+ asSubquery<TMode extends 'scalar' | 'array' | 'table' = 'table'>(mode?: TMode): Subquery<TMode extends 'scalar' ? TSelection : TMode extends 'array' ? TSelection[] : TSelection[], TMode>;
150
204
  /**
151
205
  * Get the SQL string for debugging
152
206
  *
@@ -1 +1 @@
1
- {"version":3,"file":"union-builder.d.ts","sourceRoot":"","sources":["../../src/query/union-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,eAAe,EAA6B,MAAM,cAAc,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAG5E;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;AAY9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,iBAAiB,CAAC,UAAU;IACvC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,aAAa,CAA2D;IAChF,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAgB;IAEjC;;OAEG;gBAED,UAAU,EAAE;QAAE,aAAa,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAA;KAAE,EACnE,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,aAAa;IAS1B;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,KAAK,EAAE;QAAE,aAAa,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAA;KAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC;IASpG;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,KAAK,EAAE;QAAE,aAAa,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAA;KAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC;IASvG;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,GAAG,IAAI;IAClD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,EAAE,GAAG,IAAI;IACpD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,GAAG,IAAI;IAa3E;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3B;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAUrC;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAUlD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAY9B;;;OAGG;IACH,QAAQ,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,EAAE,CAAA;KAAE;IAyC1C;;;;OAIG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,KAAK;CAUd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAE/E"}
1
+ {"version":3,"file":"union-builder.d.ts","sourceRoot":"","sources":["../../src/query/union-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,eAAe,EAA6B,MAAM,cAAc,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAC;IACpD,gBAAgB;IAChB,qBAAqB,CAAC,IAAI;QAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAAC,eAAe,EAAE,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC;IACzF,gBAAgB;IAChB,yBAAyB,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE;QAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAAC,eAAe,EAAE,GAAG,CAAA;KAAE,GAAG,GAAG,EAAE,CAAC;CAC1G;AAcD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,iBAAiB,CAAC,UAAU;IACvC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,aAAa,CAA2D;IAChF,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAgB;IAEjC;;OAEG;gBAED,UAAU,EAAE,eAAe,EAC3B,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,aAAa;IAU1B;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,iBAAiB,CAAC,UAAU,CAAC;IAU5D;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,iBAAiB,CAAC,UAAU,CAAC;IAU/D;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,GAAG,IAAI;IAClD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,EAAE,GAAG,IAAI;IACpD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,GAAG,IAAI;IAa3E;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3B;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA8CrC;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAUlD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAY9B;;;OAGG;IACH,QAAQ,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,EAAE,CAAA;KAAE;IAC1C;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,EAAE,eAAe,GAAG,MAAM;IAiD/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,UAAU,CAAC,KAAK,SAAS,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,EAC7D,IAAI,GAAE,KAAwB,GAC7B,QAAQ,CACT,KAAK,SAAS,QAAQ,GAAG,UAAU,GAAG,KAAK,SAAS,OAAO,GAAG,UAAU,EAAE,GAAG,UAAU,EAAE,EACzF,KAAK,CACN;IAUD;;;;OAIG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,KAAK;CAUd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAE/E"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UnionQueryBuilder = void 0;
4
4
  exports.isUnionQueryBuilder = isUnionQueryBuilder;
5
5
  const query_utils_1 = require("./query-utils");
6
+ const subquery_1 = require("./subquery");
6
7
  /**
7
8
  * Builder for UNION and UNION ALL queries.
8
9
  * Combines multiple SELECT queries into a single result set.
@@ -46,6 +47,7 @@ class UnionQueryBuilder {
46
47
  this.executor = executor;
47
48
  this.components.push({
48
49
  buildSql: (ctx) => firstQuery.buildUnionSql(ctx),
50
+ ownerBuilder: firstQuery,
49
51
  });
50
52
  }
51
53
  /**
@@ -67,6 +69,7 @@ class UnionQueryBuilder {
67
69
  newBuilder.components.push({
68
70
  buildSql: (ctx) => query.buildUnionSql(ctx),
69
71
  unionType: 'UNION',
72
+ ownerBuilder: query,
70
73
  });
71
74
  return newBuilder;
72
75
  }
@@ -91,6 +94,7 @@ class UnionQueryBuilder {
91
94
  newBuilder.components.push({
92
95
  buildSql: (ctx) => query.buildUnionSql(ctx),
93
96
  unionType: 'UNION ALL',
97
+ ownerBuilder: query,
94
98
  });
95
99
  return newBuilder;
96
100
  }
@@ -129,10 +133,44 @@ class UnionQueryBuilder {
129
133
  * @returns Promise resolving to array of results
130
134
  */
131
135
  async toList() {
136
+ // buildSql() walks every component which, for SelectQueryBuilder legs,
137
+ // stashes nestedPaths + selectionResult on the builder via
138
+ // _consumeUnionMetadata. We read it back AFTER buildSql finishes (and
139
+ // before query execution — order doesn't actually matter, just consume
140
+ // before another buildSql wipes it).
132
141
  const { sql, params } = this.buildSql();
142
+ // First-leg metadata is canonical for post-processing because UNION
143
+ // requires every leg to project the same column shape. If the first leg
144
+ // has nestedPaths or a transformable selection (collections / mappers /
145
+ // FieldRefs), apply the same reconstruction that SelectQueryBuilder.toList
146
+ // would normally apply.
147
+ let firstLegMeta;
148
+ let firstLegOwner;
149
+ for (let i = 0; i < this.components.length; i++) {
150
+ const c = this.components[i];
151
+ if (c.ownerBuilder?._consumeUnionMetadata) {
152
+ const meta = c.ownerBuilder._consumeUnionMetadata();
153
+ if (i === 0) {
154
+ firstLegMeta = meta;
155
+ firstLegOwner = c.ownerBuilder;
156
+ }
157
+ // Non-first legs: just drain to avoid stale state on the builder.
158
+ }
159
+ }
133
160
  const result = this.executor
134
161
  ? await this.executor.query(sql, params)
135
162
  : await this.client.query(sql, params);
163
+ // Apply post-processing through the FIRST leg's builder. This is correct
164
+ // because:
165
+ // - Postgres's UNION semantics enforce column-shape equality across all
166
+ // legs (otherwise we'd get a SQL error before reaching here),
167
+ // - the result mapper only cares about the column SHAPE (names, types,
168
+ // nested-path encoding), which is identical across legs,
169
+ // - first-leg ownership is the natural pick (the union is initiated
170
+ // from `firstLeg.unionAll(...)`).
171
+ if (firstLegOwner?._applyUnionPostProcessing && firstLegMeta) {
172
+ return firstLegOwner._applyUnionPostProcessing(result.rows, firstLegMeta);
173
+ }
136
174
  return result.rows;
137
175
  }
138
176
  /**
@@ -160,15 +198,14 @@ class UnionQueryBuilder {
160
198
  : await this.client.query(sql, params);
161
199
  return parseInt(result.rows[0]?.count || '0', 10);
162
200
  }
163
- /**
164
- * Build the SQL for this union query
165
- * @internal
166
- */
167
- buildSql() {
168
- const context = {
169
- paramCounter: 1,
170
- params: [],
171
- };
201
+ buildSql(outerContext) {
202
+ const isNested = outerContext !== undefined;
203
+ const context = isNested
204
+ ? outerContext
205
+ : {
206
+ paramCounter: 1,
207
+ params: [],
208
+ };
172
209
  const sqlParts = [];
173
210
  for (let i = 0; i < this.components.length; i++) {
174
211
  const component = this.components[i];
@@ -193,8 +230,48 @@ class UnionQueryBuilder {
193
230
  if (this.offsetValue !== undefined) {
194
231
  sql += `\nOFFSET ${this.offsetValue}`;
195
232
  }
233
+ if (isNested) {
234
+ return sql;
235
+ }
196
236
  return { sql, params: context.params };
197
237
  }
238
+ /**
239
+ * Convert this union query to a subquery usable in WHERE, SELECT, JOIN, or
240
+ * FROM clauses of an outer query. Mirrors {@link SelectQueryBuilder.asSubquery}
241
+ * but composes a UNION ALL / UNION across multiple SELECT legs into a single
242
+ * subquery expression.
243
+ *
244
+ * @template TMode - 'scalar' for a single value, 'array' for column list (use
245
+ * with `inSubquery(...)`), 'table' for full rows
246
+ * @returns Subquery that can be passed to `inSubquery`, `exists`, etc.
247
+ *
248
+ * @example
249
+ * ```typescript
250
+ * // Filter outer query by the union of two id selections
251
+ * const friendIds = db.userRelations
252
+ * .where(r => eq(r.parentId, userId))
253
+ * .select(r => r.slaveId)
254
+ * .unionAll(
255
+ * db.userRelations
256
+ * .where(r => eq(r.slaveId, userId))
257
+ * .select(r => r.parentId)
258
+ * )
259
+ * .asSubquery('array');
260
+ *
261
+ * const rows = await db.usersEshop
262
+ * .where(u => inSubquery(u.id, friendIds))
263
+ * .select(u => ({ id: u.id, name: u.name }))
264
+ * .toList();
265
+ * ```
266
+ */
267
+ asSubquery(mode = 'table') {
268
+ const sqlBuilder = (outerContext) => {
269
+ // Reuse the outer context so $1, $2, ... numbering and the params array
270
+ // chain across the whole composite statement.
271
+ return this.buildSql(outerContext);
272
+ };
273
+ return new subquery_1.Subquery(sqlBuilder, mode);
274
+ }
198
275
  /**
199
276
  * Get the SQL string for debugging
200
277
  *
@@ -1 +1 @@
1
- {"version":3,"file":"union-builder.js","sourceRoot":"","sources":["../../src/query/union-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"union-builder.js","sourceRoot":"","sources":["../../src/query/union-builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linkgress-orm",
3
- "version": "0.4.24",
3
+ "version": "0.4.26",
4
4
  "description": "A lightweight, type-safe ORM for PostgreSQL with LINQ-style queries and automatic type inference",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",