typeorm 0.3.29-dev.cc07c90 → 0.3.30
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 +22 -16
- 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/driver/sqlserver/SqlServerQueryRunner.js +4 -2
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/entity-manager/EntityManager.d.ts +3 -2
- package/browser/entity-manager/EntityManager.js +32 -18
- 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/find-options/operator/JsonContains.d.ts +1 -1
- package/browser/find-options/operator/JsonContains.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/SubjectChangedColumnsComputer.js +6 -2
- package/browser/persistence/SubjectChangedColumnsComputer.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 +42 -24
- 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 +1 -5
- package/browser/query-builder/SelectQueryBuilder.js +48 -54
- 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/browser/util/OrmUtils.d.ts +13 -0
- package/browser/util/OrmUtils.js +53 -0
- package/browser/util/OrmUtils.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 +22 -16
- 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/driver/sqlserver/SqlServerQueryRunner.js +4 -2
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +3 -2
- package/entity-manager/EntityManager.js +32 -18
- package/entity-manager/EntityManager.js.map +1 -1
- package/error/QueryFailedError.js +1 -2
- package/error/QueryFailedError.js.map +1 -1
- package/find-options/operator/JsonContains.d.ts +1 -1
- package/find-options/operator/JsonContains.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/SubjectChangedColumnsComputer.js +6 -2
- package/persistence/SubjectChangedColumnsComputer.js.map +1 -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 +42 -24
- 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 +1 -5
- package/query-builder/SelectQueryBuilder.js +48 -54
- 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
- package/util/OrmUtils.d.ts +13 -0
- package/util/OrmUtils.js +53 -0
- package/util/OrmUtils.js.map +1 -1
|
@@ -499,25 +499,17 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
499
499
|
* calling this function will override previously set ORDER BY conditions.
|
|
500
500
|
*/
|
|
501
501
|
orderBy(sort, order = "ASC", nulls) {
|
|
502
|
-
if (order !== undefined && order !== "ASC" && order !== "DESC")
|
|
503
|
-
throw new error_1.TypeORMError(`SelectQueryBuilder.addOrderBy "order" can accept only "ASC" and "DESC" values.`);
|
|
504
|
-
if (nulls !== undefined &&
|
|
505
|
-
nulls !== "NULLS FIRST" &&
|
|
506
|
-
nulls !== "NULLS LAST")
|
|
507
|
-
throw new error_1.TypeORMError(`SelectQueryBuilder.addOrderBy "nulls" can accept only "NULLS FIRST" and "NULLS LAST" values.`);
|
|
508
502
|
if (sort) {
|
|
509
503
|
if (typeof sort === "object") {
|
|
504
|
+
this.validateOrderByCondition(sort);
|
|
510
505
|
this.expressionMap.orderBys = sort;
|
|
511
506
|
}
|
|
512
507
|
else {
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
else {
|
|
519
|
-
this.expressionMap.orderBys = { [sort]: order };
|
|
520
|
-
}
|
|
508
|
+
const condition = nulls
|
|
509
|
+
? { [sort]: { order, nulls } }
|
|
510
|
+
: { [sort]: order };
|
|
511
|
+
this.validateOrderByCondition(condition);
|
|
512
|
+
this.expressionMap.orderBys = condition;
|
|
521
513
|
}
|
|
522
514
|
}
|
|
523
515
|
else {
|
|
@@ -529,12 +521,10 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
529
521
|
* Adds ORDER BY condition in the query builder.
|
|
530
522
|
*/
|
|
531
523
|
addOrderBy(sort, order = "ASC", nulls) {
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
nulls !== "NULLS LAST")
|
|
537
|
-
throw new error_1.TypeORMError(`SelectQueryBuilder.addOrderBy "nulls" can accept only "NULLS FIRST" and "NULLS LAST" values.`);
|
|
524
|
+
const condition = nulls
|
|
525
|
+
? { [sort]: { order, nulls } }
|
|
526
|
+
: { [sort]: order };
|
|
527
|
+
this.validateOrderByCondition(condition);
|
|
538
528
|
if (nulls) {
|
|
539
529
|
this.expressionMap.orderBys[sort] = { order, nulls };
|
|
540
530
|
}
|
|
@@ -550,10 +540,7 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
550
540
|
* then use the take method instead.
|
|
551
541
|
*/
|
|
552
542
|
limit(limit) {
|
|
553
|
-
this.expressionMap.limit = this.
|
|
554
|
-
if (this.expressionMap.limit !== undefined &&
|
|
555
|
-
isNaN(this.expressionMap.limit))
|
|
556
|
-
throw new error_1.TypeORMError(`Provided "limit" value is not a number. Please provide a numeric value.`);
|
|
543
|
+
this.expressionMap.limit = this.validateNumericInput("limit", limit);
|
|
557
544
|
return this;
|
|
558
545
|
}
|
|
559
546
|
/**
|
|
@@ -563,30 +550,21 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
563
550
|
* then use the skip method instead.
|
|
564
551
|
*/
|
|
565
552
|
offset(offset) {
|
|
566
|
-
this.expressionMap.offset = this.
|
|
567
|
-
if (this.expressionMap.offset !== undefined &&
|
|
568
|
-
isNaN(this.expressionMap.offset))
|
|
569
|
-
throw new error_1.TypeORMError(`Provided "offset" value is not a number. Please provide a numeric value.`);
|
|
553
|
+
this.expressionMap.offset = this.validateNumericInput("offset", offset);
|
|
570
554
|
return this;
|
|
571
555
|
}
|
|
572
556
|
/**
|
|
573
557
|
* Sets maximal number of entities to take.
|
|
574
558
|
*/
|
|
575
559
|
take(take) {
|
|
576
|
-
this.expressionMap.take = this.
|
|
577
|
-
if (this.expressionMap.take !== undefined &&
|
|
578
|
-
isNaN(this.expressionMap.take))
|
|
579
|
-
throw new error_1.TypeORMError(`Provided "take" value is not a number. Please provide a numeric value.`);
|
|
560
|
+
this.expressionMap.take = this.validateNumericInput("take", take);
|
|
580
561
|
return this;
|
|
581
562
|
}
|
|
582
563
|
/**
|
|
583
564
|
* Sets number of entities to skip.
|
|
584
565
|
*/
|
|
585
566
|
skip(skip) {
|
|
586
|
-
this.expressionMap.skip = this.
|
|
587
|
-
if (this.expressionMap.skip !== undefined &&
|
|
588
|
-
isNaN(this.expressionMap.skip))
|
|
589
|
-
throw new error_1.TypeORMError(`Provided "skip" value is not a number. Please provide a numeric value.`);
|
|
567
|
+
this.expressionMap.skip = this.validateNumericInput("skip", skip);
|
|
590
568
|
return this;
|
|
591
569
|
}
|
|
592
570
|
/**
|
|
@@ -1475,14 +1453,13 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
1475
1453
|
return "";
|
|
1476
1454
|
}
|
|
1477
1455
|
/**
|
|
1478
|
-
*
|
|
1456
|
+
* @returns "LOCK" part of SQL query
|
|
1479
1457
|
*/
|
|
1480
1458
|
createLockExpression() {
|
|
1481
1459
|
const driver = this.connection.driver;
|
|
1482
1460
|
let lockTablesClause = "";
|
|
1483
1461
|
if (this.expressionMap.lockTables) {
|
|
1484
|
-
if (!
|
|
1485
|
-
driver.options.type === "cockroachdb")) {
|
|
1462
|
+
if (!DriverUtils_1.DriverUtils.isPostgresFamily(driver)) {
|
|
1486
1463
|
throw new error_1.TypeORMError("Lock tables not supported in selected driver");
|
|
1487
1464
|
}
|
|
1488
1465
|
if (this.expressionMap.lockTables.length < 1) {
|
|
@@ -1495,7 +1472,12 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
1495
1472
|
onLockExpression = " NOWAIT";
|
|
1496
1473
|
}
|
|
1497
1474
|
else if (this.expressionMap.onLocked === "skip_locked") {
|
|
1498
|
-
|
|
1475
|
+
if (driver.options.type === "sap") {
|
|
1476
|
+
onLockExpression = " IGNORE LOCKED";
|
|
1477
|
+
}
|
|
1478
|
+
else {
|
|
1479
|
+
onLockExpression = " SKIP LOCKED";
|
|
1480
|
+
}
|
|
1499
1481
|
}
|
|
1500
1482
|
switch (this.expressionMap.lockMode) {
|
|
1501
1483
|
case "pessimistic_read":
|
|
@@ -1514,6 +1496,9 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
1514
1496
|
else if (DriverUtils_1.DriverUtils.isPostgresFamily(driver)) {
|
|
1515
1497
|
return " FOR SHARE" + lockTablesClause + onLockExpression;
|
|
1516
1498
|
}
|
|
1499
|
+
else if (driver.options.type === "sap") {
|
|
1500
|
+
return (" FOR SHARE LOCK" + lockTablesClause + onLockExpression);
|
|
1501
|
+
}
|
|
1517
1502
|
else if (driver.options.type === "oracle") {
|
|
1518
1503
|
return " FOR UPDATE";
|
|
1519
1504
|
}
|
|
@@ -1530,7 +1515,7 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
1530
1515
|
return " FOR UPDATE" + onLockExpression;
|
|
1531
1516
|
}
|
|
1532
1517
|
else if (DriverUtils_1.DriverUtils.isPostgresFamily(driver) ||
|
|
1533
|
-
driver.options.type === "
|
|
1518
|
+
driver.options.type === "sap") {
|
|
1534
1519
|
return " FOR UPDATE" + lockTablesClause + onLockExpression;
|
|
1535
1520
|
}
|
|
1536
1521
|
else if (driver.options.type === "mssql") {
|
|
@@ -1539,19 +1524,24 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
1539
1524
|
else {
|
|
1540
1525
|
throw new LockNotSupportedOnGivenDriverError_1.LockNotSupportedOnGivenDriverError();
|
|
1541
1526
|
}
|
|
1527
|
+
// deprecated, use pessimistic_write with onLocked = "skip_locked" instead
|
|
1542
1528
|
case "pessimistic_partial_write":
|
|
1543
1529
|
if (DriverUtils_1.DriverUtils.isPostgresFamily(driver)) {
|
|
1544
1530
|
return " FOR UPDATE" + lockTablesClause + " SKIP LOCKED";
|
|
1545
1531
|
}
|
|
1532
|
+
else if (driver.options.type === "sap") {
|
|
1533
|
+
return " FOR UPDATE" + lockTablesClause + " IGNORE LOCKED";
|
|
1534
|
+
}
|
|
1546
1535
|
else if (DriverUtils_1.DriverUtils.isMySQLFamily(driver)) {
|
|
1547
1536
|
return " FOR UPDATE SKIP LOCKED";
|
|
1548
1537
|
}
|
|
1549
1538
|
else {
|
|
1550
1539
|
throw new LockNotSupportedOnGivenDriverError_1.LockNotSupportedOnGivenDriverError();
|
|
1551
1540
|
}
|
|
1541
|
+
// deprecated, use pessimistic_write with onLocked = "nowait" instead
|
|
1552
1542
|
case "pessimistic_write_or_fail":
|
|
1553
1543
|
if (DriverUtils_1.DriverUtils.isPostgresFamily(driver) ||
|
|
1554
|
-
driver.options.type === "
|
|
1544
|
+
driver.options.type === "sap") {
|
|
1555
1545
|
return " FOR UPDATE" + lockTablesClause + " NOWAIT";
|
|
1556
1546
|
}
|
|
1557
1547
|
else if (DriverUtils_1.DriverUtils.isMySQLFamily(driver)) {
|
|
@@ -1561,8 +1551,7 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
1561
1551
|
throw new LockNotSupportedOnGivenDriverError_1.LockNotSupportedOnGivenDriverError();
|
|
1562
1552
|
}
|
|
1563
1553
|
case "for_no_key_update":
|
|
1564
|
-
if (DriverUtils_1.DriverUtils.isPostgresFamily(driver)
|
|
1565
|
-
driver.options.type === "cockroachdb") {
|
|
1554
|
+
if (DriverUtils_1.DriverUtils.isPostgresFamily(driver)) {
|
|
1566
1555
|
return (" FOR NO KEY UPDATE" +
|
|
1567
1556
|
lockTablesClause +
|
|
1568
1557
|
onLockExpression);
|
|
@@ -2258,14 +2247,6 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
2258
2247
|
ObjectUtils_1.ObjectUtils.assign(this.expressionMap, expressionMap);
|
|
2259
2248
|
return this;
|
|
2260
2249
|
}
|
|
2261
|
-
/**
|
|
2262
|
-
* Normalizes a give number - converts to int if possible.
|
|
2263
|
-
*/
|
|
2264
|
-
normalizeNumber(num) {
|
|
2265
|
-
if (typeof num === "number" || num === undefined || num === null)
|
|
2266
|
-
return num;
|
|
2267
|
-
return Number(num);
|
|
2268
|
-
}
|
|
2269
2250
|
/**
|
|
2270
2251
|
* Creates a query builder used to execute sql queries inside this query builder.
|
|
2271
2252
|
*/
|
|
@@ -2586,8 +2567,21 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
2586
2567
|
// if all properties of where are undefined we don't need to join anything
|
|
2587
2568
|
// this can happen when user defines map with conditional queries inside
|
|
2588
2569
|
if (typeof where[key] === "object") {
|
|
2589
|
-
const
|
|
2590
|
-
|
|
2570
|
+
const whereKeys = Object.keys(where[key]);
|
|
2571
|
+
// empty object — no predicates to apply, skip the join
|
|
2572
|
+
if (whereKeys.length === 0) {
|
|
2573
|
+
continue;
|
|
2574
|
+
}
|
|
2575
|
+
const allUndefined = whereKeys.every((k) => where[key][k] === undefined);
|
|
2576
|
+
if (allUndefined) {
|
|
2577
|
+
const undefinedBehavior = this.connection.options
|
|
2578
|
+
.invalidWhereValuesBehavior?.undefined ||
|
|
2579
|
+
"ignore";
|
|
2580
|
+
if (undefinedBehavior === "throw") {
|
|
2581
|
+
throw new error_1.TypeORMError(`Undefined value encountered in nested relation '${alias}.${key}' of a where condition. ` +
|
|
2582
|
+
`All properties of the nested object are undefined. ` +
|
|
2583
|
+
`Set 'invalidWhereValuesBehavior.undefined' to 'ignore' in connection options to skip properties with undefined values.`);
|
|
2584
|
+
}
|
|
2591
2585
|
continue;
|
|
2592
2586
|
}
|
|
2593
2587
|
}
|