@mikro-orm/sql 7.1.12-dev.16 → 7.1.12-dev.18
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 +2 -2
- package/query/QueryBuilder.d.ts +3 -3
- package/query/QueryBuilder.js +12 -12
- package/query/QueryBuilderHelper.js +7 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikro-orm/sql",
|
|
3
|
-
"version": "7.1.12-dev.
|
|
3
|
+
"version": "7.1.12-dev.18",
|
|
4
4
|
"description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data-mapper",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@mikro-orm/core": "^7.1.11"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@mikro-orm/core": "7.1.12-dev.
|
|
56
|
+
"@mikro-orm/core": "7.1.12-dev.18"
|
|
57
57
|
},
|
|
58
58
|
"engines": {
|
|
59
59
|
"node": ">= 22.17.0"
|
package/query/QueryBuilder.d.ts
CHANGED
|
@@ -439,7 +439,7 @@ export declare class QueryBuilder<Entity extends object = AnyEntity, RootAlias e
|
|
|
439
439
|
*/
|
|
440
440
|
join<Field extends QBField<Entity, RootAlias, Context>, Alias extends string>(field: Field, alias: Alias, cond?: JoinCondition<JoinedEntityType<Entity, Context, Field & string>, Alias>, type?: JoinType, path?: string, schema?: string): SelectQueryBuilder<Entity, RootAlias, ModifyHint<RootAlias, Context, Hint, Field> & {}, ModifyContext<Entity, Context, Field, Alias>, RawAliases, Fields, CTEs>;
|
|
441
441
|
/**
|
|
442
|
-
* Adds a JOIN clause to the query for a subquery.
|
|
442
|
+
* Adds a JOIN clause to the query for a subquery. Use `sql.ref('...')` to join a table or CTE by name.
|
|
443
443
|
*/
|
|
444
444
|
join<Alias extends string>(field: RawQueryFragment | QueryBuilder<any>, alias: Alias, cond?: RawJoinCondition, type?: JoinType, path?: string, schema?: string): SelectQueryBuilder<Entity, RootAlias, Hint, ModifyContext<Entity, Context, string, Alias>, RawAliases, Fields, CTEs>;
|
|
445
445
|
/**
|
|
@@ -447,7 +447,7 @@ export declare class QueryBuilder<Entity extends object = AnyEntity, RootAlias e
|
|
|
447
447
|
*/
|
|
448
448
|
innerJoin<Field extends QBField<Entity, RootAlias, Context>, Alias extends string>(field: Field, alias: Alias, cond?: JoinCondition<JoinedEntityType<Entity, Context, Field & string>, Alias>, schema?: string): SelectQueryBuilder<Entity, RootAlias, ModifyHint<RootAlias, Context, Hint, Field> & {}, ModifyContext<Entity, Context, Field, Alias>, RawAliases, Fields, CTEs>;
|
|
449
449
|
/**
|
|
450
|
-
* Adds an INNER JOIN clause to the query for a subquery.
|
|
450
|
+
* Adds an INNER JOIN clause to the query for a subquery. Use `sql.ref('...')` to join a table or CTE by name.
|
|
451
451
|
*/
|
|
452
452
|
innerJoin<Alias extends string>(field: RawQueryFragment | QueryBuilder<any>, alias: Alias, cond?: RawJoinCondition, schema?: string): SelectQueryBuilder<Entity, RootAlias, Hint, ModifyContext<Entity, Context, string, Alias>, RawAliases, Fields, CTEs>;
|
|
453
453
|
innerJoinLateral<Alias extends string>(field: RawQueryFragment | QueryBuilder<any>, alias: Alias, cond?: RawJoinCondition, schema?: string): SelectQueryBuilder<Entity, RootAlias, Hint, ModifyContext<Entity, Context, string, Alias>, RawAliases, Fields, CTEs>;
|
|
@@ -456,7 +456,7 @@ export declare class QueryBuilder<Entity extends object = AnyEntity, RootAlias e
|
|
|
456
456
|
*/
|
|
457
457
|
leftJoin<Field extends QBField<Entity, RootAlias, Context>, Alias extends string>(field: Field, alias: Alias, cond?: JoinCondition<JoinedEntityType<Entity, Context, Field & string>, Alias>, schema?: string): SelectQueryBuilder<Entity, RootAlias, ModifyHint<RootAlias, Context, Hint, Field> & {}, ModifyContext<Entity, Context, Field, Alias>, RawAliases, Fields, CTEs>;
|
|
458
458
|
/**
|
|
459
|
-
* Adds a LEFT JOIN clause to the query for a subquery.
|
|
459
|
+
* Adds a LEFT JOIN clause to the query for a subquery. Use `sql.ref('...')` to join a table or CTE by name.
|
|
460
460
|
*/
|
|
461
461
|
leftJoin<Alias extends string>(field: RawQueryFragment | QueryBuilder<any>, alias: Alias, cond?: RawJoinCondition, schema?: string): SelectQueryBuilder<Entity, RootAlias, Hint, ModifyContext<Entity, Context, string, Alias>, RawAliases, Fields, CTEs>;
|
|
462
462
|
leftJoinLateral<Alias extends string>(field: RawQueryFragment | QueryBuilder<any>, alias: Alias, cond?: RawJoinCondition, schema?: string): SelectQueryBuilder<Entity, RootAlias, Hint, ModifyContext<Entity, Context, string, Alias>, RawAliases, Fields, CTEs>;
|
package/query/QueryBuilder.js
CHANGED
|
@@ -1410,19 +1410,19 @@ export class QueryBuilder {
|
|
|
1410
1410
|
prop.targetMeta = field.mainAlias.meta;
|
|
1411
1411
|
field = field.getNativeQuery();
|
|
1412
1412
|
}
|
|
1413
|
-
if (isRaw(field)) {
|
|
1414
|
-
field = this.platform.formatQuery(field.sql, field.params);
|
|
1415
|
-
}
|
|
1416
1413
|
const key = `${this.alias}.${prop.name}#${alias}`;
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1414
|
+
const join = { prop, alias, type, cond, schema, ownerAlias: this.alias };
|
|
1415
|
+
// `sql.ref('...')` is a bare table/CTE reference, join it by name instead of wrapping it as a sub-query
|
|
1416
|
+
if (isRaw(field) && field.sql === '??' && field.params.length === 1) {
|
|
1417
|
+
join.table = String(field.params[0]);
|
|
1418
|
+
}
|
|
1419
|
+
else {
|
|
1420
|
+
if (isRaw(field)) {
|
|
1421
|
+
field = this.platform.formatQuery(field.sql, field.params);
|
|
1422
|
+
}
|
|
1423
|
+
join.subquery = field.toString();
|
|
1424
|
+
}
|
|
1425
|
+
this.#state.joins[key] = join;
|
|
1426
1426
|
return { prop, key };
|
|
1427
1427
|
}
|
|
1428
1428
|
if (!subquery && type.includes('lateral')) {
|
|
@@ -248,7 +248,13 @@ export class QueryBuilderHelper {
|
|
|
248
248
|
}[join.type] ?? join.type;
|
|
249
249
|
const conditions = [];
|
|
250
250
|
const params = [];
|
|
251
|
-
|
|
251
|
+
if (join.prop.name === '__subquery__') {
|
|
252
|
+
// bare table/CTE references (`sql.ref()` joins) keep their literal name, only an explicit schema applies
|
|
253
|
+
schema = join.schema === '*' ? undefined : join.schema;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
schema = join.schema === '*' ? schema : (join.schema ?? schemaOverride);
|
|
257
|
+
}
|
|
252
258
|
if (schema && schema !== this.#platform.getDefaultSchemaName()) {
|
|
253
259
|
table = `${schema}.${table}`;
|
|
254
260
|
}
|