typeorm 0.3.29-dev.a46eb0a → 0.3.29
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/README.md +2 -2
- package/browser/cache/RedisQueryResultCache.d.ts +6 -9
- package/browser/cache/RedisQueryResultCache.js +21 -42
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/cli-ts-node-commonjs.js +0 -0
- package/browser/cli-ts-node-esm.js +0 -0
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +18 -5
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.d.ts +2 -2
- package/browser/driver/cockroachdb/CockroachDriver.js +13 -3
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +18 -12
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.js +18 -5
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.d.ts +2 -2
- package/browser/driver/oracle/OracleDriver.js +8 -5
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
- package/browser/driver/postgres/PostgresDriver.js +18 -5
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +16 -10
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapConnectionOptions.d.ts +8 -1
- package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
- package/browser/driver/sap/SapDriver.js +4 -8
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.d.ts +2 -2
- package/browser/driver/spanner/SpannerDriver.js +1 -1
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +2 -2
- package/browser/driver/sqlserver/SqlServerDriver.js +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/entity-manager/EntityManager.d.ts +3 -2
- package/browser/entity-manager/EntityManager.js +30 -20
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/error/QueryFailedError.js +1 -2
- package/browser/error/QueryFailedError.js.map +1 -1
- package/browser/index.d.ts +3 -0
- package/browser/index.js +1 -0
- package/browser/index.js.map +1 -1
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +2 -0
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +11 -5
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +11 -5
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/MigrationExecutor.d.ts +3 -1
- package/browser/migration/MigrationExecutor.js +13 -3
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/persistence/SubjectExecutor.d.ts +3 -0
- package/browser/persistence/SubjectExecutor.js +11 -0
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +8 -0
- package/browser/query-builder/QueryBuilder.js +35 -0
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/ReturningOption.d.ts +4 -0
- package/browser/query-builder/ReturningOption.js +3 -0
- package/browser/query-builder/ReturningOption.js.map +1 -0
- package/browser/query-builder/SelectQueryBuilder.d.ts +7 -11
- package/browser/query-builder/SelectQueryBuilder.js +53 -64
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js +17 -12
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +17 -12
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/repository/BaseEntity.d.ts +2 -1
- package/browser/repository/BaseEntity.js +2 -2
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/Repository.d.ts +3 -2
- package/browser/repository/Repository.js +4 -4
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/TreeRepository.js +2 -2
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/repository/UpdateOptions.d.ts +11 -0
- package/browser/repository/UpdateOptions.js +3 -0
- package/browser/repository/UpdateOptions.js.map +1 -0
- package/browser/repository/UpsertOptions.d.ts +6 -0
- package/browser/repository/UpsertOptions.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/cache/RedisQueryResultCache.d.ts +6 -9
- package/cache/RedisQueryResultCache.js +21 -42
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/commands/InitCommand.js +1 -1
- package/commands/MigrationRunCommand.js +4 -4
- package/commands/MigrationRunCommand.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js +18 -5
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.d.ts +2 -2
- package/driver/cockroachdb/CockroachDriver.js +13 -3
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +18 -12
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlDriver.js +18 -5
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/oracle/OracleDriver.d.ts +2 -2
- package/driver/oracle/OracleDriver.js +8 -5
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +2 -2
- package/driver/postgres/PostgresDriver.js +18 -5
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +16 -10
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sap/SapConnectionOptions.d.ts +8 -1
- package/driver/sap/SapConnectionOptions.js.map +1 -1
- package/driver/sap/SapDriver.js +4 -8
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/spanner/SpannerDriver.d.ts +2 -2
- package/driver/spanner/SpannerDriver.js +1 -1
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +2 -2
- package/driver/sqlserver/SqlServerDriver.js +1 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +3 -2
- package/entity-manager/EntityManager.js +30 -20
- package/entity-manager/EntityManager.js.map +1 -1
- package/error/QueryFailedError.js +1 -2
- package/error/QueryFailedError.js.map +1 -1
- package/index.d.ts +3 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +2 -0
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.d.ts +11 -5
- package/metadata-builder/RelationJoinColumnBuilder.js +11 -5
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/MigrationExecutor.d.ts +3 -1
- package/migration/MigrationExecutor.js +13 -3
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +278 -1
- package/persistence/SubjectExecutor.d.ts +3 -0
- package/persistence/SubjectExecutor.js +11 -0
- package/persistence/SubjectExecutor.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +8 -0
- package/query-builder/QueryBuilder.js +35 -0
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/ReturningOption.d.ts +4 -0
- package/query-builder/ReturningOption.js +4 -0
- package/query-builder/ReturningOption.js.map +1 -0
- package/query-builder/SelectQueryBuilder.d.ts +7 -11
- package/query-builder/SelectQueryBuilder.js +53 -64
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js +17 -12
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +17 -12
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/repository/BaseEntity.d.ts +2 -1
- package/repository/BaseEntity.js +2 -2
- package/repository/BaseEntity.js.map +1 -1
- package/repository/Repository.d.ts +3 -2
- package/repository/Repository.js +4 -4
- package/repository/Repository.js.map +1 -1
- package/repository/TreeRepository.js +2 -2
- package/repository/TreeRepository.js.map +1 -1
- package/repository/UpdateOptions.d.ts +11 -0
- package/repository/UpdateOptions.js +4 -0
- package/repository/UpdateOptions.js.map +1 -0
- package/repository/UpsertOptions.d.ts +6 -0
- package/repository/UpsertOptions.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.js +1 -1
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
|
@@ -496,25 +496,17 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
496
496
|
* calling this function will override previously set ORDER BY conditions.
|
|
497
497
|
*/
|
|
498
498
|
orderBy(sort, order = "ASC", nulls) {
|
|
499
|
-
if (order !== undefined && order !== "ASC" && order !== "DESC")
|
|
500
|
-
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "order" can accept only "ASC" and "DESC" values.`);
|
|
501
|
-
if (nulls !== undefined &&
|
|
502
|
-
nulls !== "NULLS FIRST" &&
|
|
503
|
-
nulls !== "NULLS LAST")
|
|
504
|
-
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "nulls" can accept only "NULLS FIRST" and "NULLS LAST" values.`);
|
|
505
499
|
if (sort) {
|
|
506
500
|
if (typeof sort === "object") {
|
|
501
|
+
this.validateOrderByCondition(sort);
|
|
507
502
|
this.expressionMap.orderBys = sort;
|
|
508
503
|
}
|
|
509
504
|
else {
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
else {
|
|
516
|
-
this.expressionMap.orderBys = { [sort]: order };
|
|
517
|
-
}
|
|
505
|
+
const condition = nulls
|
|
506
|
+
? { [sort]: { order, nulls } }
|
|
507
|
+
: { [sort]: order };
|
|
508
|
+
this.validateOrderByCondition(condition);
|
|
509
|
+
this.expressionMap.orderBys = condition;
|
|
518
510
|
}
|
|
519
511
|
}
|
|
520
512
|
else {
|
|
@@ -526,12 +518,10 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
526
518
|
* Adds ORDER BY condition in the query builder.
|
|
527
519
|
*/
|
|
528
520
|
addOrderBy(sort, order = "ASC", nulls) {
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
nulls !== "NULLS LAST")
|
|
534
|
-
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "nulls" can accept only "NULLS FIRST" and "NULLS LAST" values.`);
|
|
521
|
+
const condition = nulls
|
|
522
|
+
? { [sort]: { order, nulls } }
|
|
523
|
+
: { [sort]: order };
|
|
524
|
+
this.validateOrderByCondition(condition);
|
|
535
525
|
if (nulls) {
|
|
536
526
|
this.expressionMap.orderBys[sort] = { order, nulls };
|
|
537
527
|
}
|
|
@@ -542,48 +532,36 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
542
532
|
}
|
|
543
533
|
/**
|
|
544
534
|
* Sets LIMIT - maximum number of rows to be selected.
|
|
545
|
-
*
|
|
546
|
-
*
|
|
547
|
-
*
|
|
535
|
+
* When joins are present, a two-query distinct-id strategy is used
|
|
536
|
+
* so that LIMIT applies to root entities rather than raw joined rows.
|
|
537
|
+
* @param limit
|
|
548
538
|
*/
|
|
549
539
|
limit(limit) {
|
|
550
|
-
this.expressionMap.limit = this.
|
|
551
|
-
if (this.expressionMap.limit !== undefined &&
|
|
552
|
-
isNaN(this.expressionMap.limit))
|
|
553
|
-
throw new TypeORMError(`Provided "limit" value is not a number. Please provide a numeric value.`);
|
|
540
|
+
this.expressionMap.limit = this.validateNumericInput("limit", limit);
|
|
554
541
|
return this;
|
|
555
542
|
}
|
|
556
543
|
/**
|
|
557
544
|
* Sets OFFSET - selection offset.
|
|
558
|
-
*
|
|
559
|
-
*
|
|
560
|
-
*
|
|
545
|
+
* When joins are present, a two-query distinct-id strategy is used
|
|
546
|
+
* so that OFFSET applies to root entities rather than raw joined rows.
|
|
547
|
+
* @param offset
|
|
561
548
|
*/
|
|
562
549
|
offset(offset) {
|
|
563
|
-
this.expressionMap.offset = this.
|
|
564
|
-
if (this.expressionMap.offset !== undefined &&
|
|
565
|
-
isNaN(this.expressionMap.offset))
|
|
566
|
-
throw new TypeORMError(`Provided "offset" value is not a number. Please provide a numeric value.`);
|
|
550
|
+
this.expressionMap.offset = this.validateNumericInput("offset", offset);
|
|
567
551
|
return this;
|
|
568
552
|
}
|
|
569
553
|
/**
|
|
570
554
|
* Sets maximal number of entities to take.
|
|
571
555
|
*/
|
|
572
556
|
take(take) {
|
|
573
|
-
this.expressionMap.take = this.
|
|
574
|
-
if (this.expressionMap.take !== undefined &&
|
|
575
|
-
isNaN(this.expressionMap.take))
|
|
576
|
-
throw new TypeORMError(`Provided "take" value is not a number. Please provide a numeric value.`);
|
|
557
|
+
this.expressionMap.take = this.validateNumericInput("take", take);
|
|
577
558
|
return this;
|
|
578
559
|
}
|
|
579
560
|
/**
|
|
580
561
|
* Sets number of entities to skip.
|
|
581
562
|
*/
|
|
582
563
|
skip(skip) {
|
|
583
|
-
this.expressionMap.skip = this.
|
|
584
|
-
if (this.expressionMap.skip !== undefined &&
|
|
585
|
-
isNaN(this.expressionMap.skip))
|
|
586
|
-
throw new TypeORMError(`Provided "skip" value is not a number. Please provide a numeric value.`);
|
|
564
|
+
this.expressionMap.skip = this.validateNumericInput("skip", skip);
|
|
587
565
|
return this;
|
|
588
566
|
}
|
|
589
567
|
/**
|
|
@@ -1472,14 +1450,13 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1472
1450
|
return "";
|
|
1473
1451
|
}
|
|
1474
1452
|
/**
|
|
1475
|
-
*
|
|
1453
|
+
* @returns "LOCK" part of SQL query
|
|
1476
1454
|
*/
|
|
1477
1455
|
createLockExpression() {
|
|
1478
1456
|
const driver = this.connection.driver;
|
|
1479
1457
|
let lockTablesClause = "";
|
|
1480
1458
|
if (this.expressionMap.lockTables) {
|
|
1481
|
-
if (!
|
|
1482
|
-
driver.options.type === "cockroachdb")) {
|
|
1459
|
+
if (!DriverUtils.isPostgresFamily(driver)) {
|
|
1483
1460
|
throw new TypeORMError("Lock tables not supported in selected driver");
|
|
1484
1461
|
}
|
|
1485
1462
|
if (this.expressionMap.lockTables.length < 1) {
|
|
@@ -1492,7 +1469,12 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1492
1469
|
onLockExpression = " NOWAIT";
|
|
1493
1470
|
}
|
|
1494
1471
|
else if (this.expressionMap.onLocked === "skip_locked") {
|
|
1495
|
-
|
|
1472
|
+
if (driver.options.type === "sap") {
|
|
1473
|
+
onLockExpression = " IGNORE LOCKED";
|
|
1474
|
+
}
|
|
1475
|
+
else {
|
|
1476
|
+
onLockExpression = " SKIP LOCKED";
|
|
1477
|
+
}
|
|
1496
1478
|
}
|
|
1497
1479
|
switch (this.expressionMap.lockMode) {
|
|
1498
1480
|
case "pessimistic_read":
|
|
@@ -1511,6 +1493,9 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1511
1493
|
else if (DriverUtils.isPostgresFamily(driver)) {
|
|
1512
1494
|
return " FOR SHARE" + lockTablesClause + onLockExpression;
|
|
1513
1495
|
}
|
|
1496
|
+
else if (driver.options.type === "sap") {
|
|
1497
|
+
return (" FOR SHARE LOCK" + lockTablesClause + onLockExpression);
|
|
1498
|
+
}
|
|
1514
1499
|
else if (driver.options.type === "oracle") {
|
|
1515
1500
|
return " FOR UPDATE";
|
|
1516
1501
|
}
|
|
@@ -1527,7 +1512,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1527
1512
|
return " FOR UPDATE" + onLockExpression;
|
|
1528
1513
|
}
|
|
1529
1514
|
else if (DriverUtils.isPostgresFamily(driver) ||
|
|
1530
|
-
driver.options.type === "
|
|
1515
|
+
driver.options.type === "sap") {
|
|
1531
1516
|
return " FOR UPDATE" + lockTablesClause + onLockExpression;
|
|
1532
1517
|
}
|
|
1533
1518
|
else if (driver.options.type === "mssql") {
|
|
@@ -1536,19 +1521,24 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1536
1521
|
else {
|
|
1537
1522
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1538
1523
|
}
|
|
1524
|
+
// deprecated, use pessimistic_write with onLocked = "skip_locked" instead
|
|
1539
1525
|
case "pessimistic_partial_write":
|
|
1540
1526
|
if (DriverUtils.isPostgresFamily(driver)) {
|
|
1541
1527
|
return " FOR UPDATE" + lockTablesClause + " SKIP LOCKED";
|
|
1542
1528
|
}
|
|
1529
|
+
else if (driver.options.type === "sap") {
|
|
1530
|
+
return " FOR UPDATE" + lockTablesClause + " IGNORE LOCKED";
|
|
1531
|
+
}
|
|
1543
1532
|
else if (DriverUtils.isMySQLFamily(driver)) {
|
|
1544
1533
|
return " FOR UPDATE SKIP LOCKED";
|
|
1545
1534
|
}
|
|
1546
1535
|
else {
|
|
1547
1536
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1548
1537
|
}
|
|
1538
|
+
// deprecated, use pessimistic_write with onLocked = "nowait" instead
|
|
1549
1539
|
case "pessimistic_write_or_fail":
|
|
1550
1540
|
if (DriverUtils.isPostgresFamily(driver) ||
|
|
1551
|
-
driver.options.type === "
|
|
1541
|
+
driver.options.type === "sap") {
|
|
1552
1542
|
return " FOR UPDATE" + lockTablesClause + " NOWAIT";
|
|
1553
1543
|
}
|
|
1554
1544
|
else if (DriverUtils.isMySQLFamily(driver)) {
|
|
@@ -1558,8 +1548,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1558
1548
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1559
1549
|
}
|
|
1560
1550
|
case "for_no_key_update":
|
|
1561
|
-
if (DriverUtils.isPostgresFamily(driver)
|
|
1562
|
-
driver.options.type === "cockroachdb") {
|
|
1551
|
+
if (DriverUtils.isPostgresFamily(driver)) {
|
|
1563
1552
|
return (" FOR NO KEY UPDATE" +
|
|
1564
1553
|
lockTablesClause +
|
|
1565
1554
|
onLockExpression);
|
|
@@ -1993,7 +1982,10 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1993
1982
|
// where we make two queries to find the data we need
|
|
1994
1983
|
// first query find ids in skip and take range
|
|
1995
1984
|
// and second query loads the actual data in given ids range
|
|
1996
|
-
if ((this.expressionMap.skip ||
|
|
1985
|
+
if ((this.expressionMap.skip ||
|
|
1986
|
+
this.expressionMap.take ||
|
|
1987
|
+
this.expressionMap.offset ||
|
|
1988
|
+
this.expressionMap.limit) &&
|
|
1997
1989
|
this.expressionMap.joinAttributes.length > 0) {
|
|
1998
1990
|
// we are skipping order by here because its not working in subqueries anyway
|
|
1999
1991
|
// to make order by working we need to apply it on a distinct query
|
|
@@ -2010,6 +2002,9 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2010
2002
|
return `${distinctAlias}.${columnAlias} AS ${this.escape(alias)}`;
|
|
2011
2003
|
});
|
|
2012
2004
|
const originalQuery = this.clone();
|
|
2005
|
+
// clear limit/offset from the inner query since pagination is handled by the outer distinct query
|
|
2006
|
+
originalQuery.expressionMap.limit = undefined;
|
|
2007
|
+
originalQuery.expressionMap.offset = undefined;
|
|
2013
2008
|
// preserve original timeTravel value since we set it to "false" in subquery
|
|
2014
2009
|
const originalQueryTimeTravel = originalQuery.expressionMap.timeTravel;
|
|
2015
2010
|
rawResults = await new SelectQueryBuilder(this.connection, queryRunner)
|
|
@@ -2020,8 +2015,8 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2020
2015
|
.timeTravelQuery(false) // set it to "false" since time travel clause must appear at the very end and applies to the entire SELECT clause.
|
|
2021
2016
|
.getQuery()})`, "distinctAlias")
|
|
2022
2017
|
.timeTravelQuery(originalQueryTimeTravel)
|
|
2023
|
-
.offset(this.expressionMap.skip)
|
|
2024
|
-
.limit(this.expressionMap.take)
|
|
2018
|
+
.offset(this.expressionMap.skip ?? this.expressionMap.offset)
|
|
2019
|
+
.limit(this.expressionMap.take ?? this.expressionMap.limit)
|
|
2025
2020
|
.orderBy(orderBys)
|
|
2026
2021
|
.cache(this.expressionMap.cache && this.expressionMap.cacheId
|
|
2027
2022
|
? `${this.expressionMap.cacheId}-pagination`
|
|
@@ -2064,12 +2059,14 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2064
2059
|
" IN (:...orm_distinct_ids)";
|
|
2065
2060
|
}
|
|
2066
2061
|
}
|
|
2067
|
-
|
|
2062
|
+
const secondQuery = this.clone()
|
|
2068
2063
|
.mergeExpressionMap({
|
|
2069
2064
|
extraAppendedAndWhereCondition: condition,
|
|
2070
2065
|
})
|
|
2071
|
-
.setParameters(parameters)
|
|
2072
|
-
|
|
2066
|
+
.setParameters(parameters);
|
|
2067
|
+
secondQuery.expressionMap.limit = undefined;
|
|
2068
|
+
secondQuery.expressionMap.offset = undefined;
|
|
2069
|
+
rawResults = await secondQuery.loadRawResults(queryRunner);
|
|
2073
2070
|
}
|
|
2074
2071
|
}
|
|
2075
2072
|
else {
|
|
@@ -2255,14 +2252,6 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2255
2252
|
ObjectUtils.assign(this.expressionMap, expressionMap);
|
|
2256
2253
|
return this;
|
|
2257
2254
|
}
|
|
2258
|
-
/**
|
|
2259
|
-
* Normalizes a give number - converts to int if possible.
|
|
2260
|
-
*/
|
|
2261
|
-
normalizeNumber(num) {
|
|
2262
|
-
if (typeof num === "number" || num === undefined || num === null)
|
|
2263
|
-
return num;
|
|
2264
|
-
return Number(num);
|
|
2265
|
-
}
|
|
2266
2255
|
/**
|
|
2267
2256
|
* Creates a query builder used to execute sql queries inside this query builder.
|
|
2268
2257
|
*/
|