typeorm 0.3.8-dev.e49d0c8 → 0.3.8
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/browser/cli-ts-node-commonjs.js +0 -0
- package/browser/cli-ts-node-esm.js +0 -0
- package/browser/data-source/DataSource.d.ts +2 -0
- package/browser/data-source/DataSource.js +2 -0
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/driver/Driver.d.ts +4 -0
- package/browser/driver/Driver.js.map +1 -1
- package/browser/driver/DriverUtils.d.ts +1 -0
- package/browser/driver/DriverUtils.js +5 -0
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +4 -0
- package/browser/driver/mysql/MysqlDriver.js +1 -0
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +4 -0
- package/browser/driver/postgres/PostgresDriver.js +3 -2
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +18 -12
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +16 -12
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +6 -1
- package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/browser/entity-manager/EntityManager.js +1 -0
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/find-options/FindOneOptions.d.ts +1 -0
- package/browser/find-options/FindOneOptions.js.map +1 -1
- package/browser/migration/MigrationExecutor.d.ts +8 -0
- package/browser/migration/MigrationExecutor.js +13 -5
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/persistence/SubjectTopoligicalSorter.js +6 -1
- package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +4 -0
- package/browser/query-builder/QueryExpressionMap.js +1 -0
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +4 -0
- package/browser/query-builder/SelectQueryBuilder.js +57 -18
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +1 -0
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/schema-builder/options/TableOptions.d.ts +4 -0
- package/browser/schema-builder/options/TableOptions.js.map +1 -1
- package/browser/schema-builder/table/Table.d.ts +4 -0
- package/browser/schema-builder/table/Table.js +8 -0
- package/browser/schema-builder/table/Table.js.map +1 -1
- package/browser/util/DateUtils.d.ts +1 -1
- package/browser/util/DateUtils.js +7 -8
- package/browser/util/DateUtils.js.map +1 -1
- package/cli-ts-node-commonjs.js +0 -0
- package/cli-ts-node-esm.js +0 -0
- package/cli.js +0 -0
- package/commands/MigrationRevertCommand.d.ts +2 -0
- package/commands/MigrationRevertCommand.js +6 -0
- package/commands/MigrationRevertCommand.js.map +1 -1
- package/commands/MigrationRunCommand.d.ts +2 -0
- package/commands/MigrationRunCommand.js +8 -0
- package/commands/MigrationRunCommand.js.map +1 -1
- package/data-source/DataSource.d.ts +2 -0
- package/data-source/DataSource.js +2 -0
- package/data-source/DataSource.js.map +1 -1
- package/driver/Driver.d.ts +4 -0
- package/driver/Driver.js.map +1 -1
- package/driver/DriverUtils.d.ts +1 -0
- package/driver/DriverUtils.js +5 -0
- package/driver/DriverUtils.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +4 -0
- package/driver/mysql/MysqlDriver.js +1 -0
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +4 -0
- package/driver/postgres/PostgresDriver.js +3 -2
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +1 -1
- package/driver/postgres/PostgresQueryRunner.js +18 -12
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +16 -12
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerConnectionOptions.d.ts +6 -1
- package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/entity-manager/EntityManager.js +1 -0
- package/entity-manager/EntityManager.js.map +1 -1
- package/find-options/FindOneOptions.d.ts +1 -0
- package/find-options/FindOneOptions.js.map +1 -1
- package/migration/MigrationExecutor.d.ts +8 -0
- package/migration/MigrationExecutor.js +13 -5
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +274 -1
- package/persistence/SubjectTopoligicalSorter.js +6 -1
- package/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +4 -0
- package/query-builder/QueryExpressionMap.js +1 -0
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +4 -0
- package/query-builder/SelectQueryBuilder.js +57 -18
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +1 -0
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/schema-builder/options/TableOptions.d.ts +4 -0
- package/schema-builder/options/TableOptions.js.map +1 -1
- package/schema-builder/table/Table.d.ts +4 -0
- package/schema-builder/table/Table.js +8 -0
- package/schema-builder/table/Table.js.map +1 -1
- package/util/DateUtils.d.ts +1 -1
- package/util/DateUtils.js +7 -8
- package/util/DateUtils.js.map +1 -1
|
@@ -565,6 +565,13 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
565
565
|
this.expressionMap.lockTables = lockTables;
|
|
566
566
|
return this;
|
|
567
567
|
}
|
|
568
|
+
/**
|
|
569
|
+
* Sets lock handling by adding NO WAIT or SKIP LOCKED.
|
|
570
|
+
*/
|
|
571
|
+
setOnLocked(onLocked) {
|
|
572
|
+
this.expressionMap.onLocked = onLocked;
|
|
573
|
+
return this;
|
|
574
|
+
}
|
|
568
575
|
/**
|
|
569
576
|
* Disables the global condition of "non-deleted" for the entity with delete date columns.
|
|
570
577
|
*/
|
|
@@ -999,7 +1006,8 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
999
1006
|
select += `/*+ MAX_EXECUTION_TIME(${this.expressionMap.maxExecutionTime}) */ `;
|
|
1000
1007
|
}
|
|
1001
1008
|
}
|
|
1002
|
-
if (driver
|
|
1009
|
+
if (DriverUtils.isPostgresFamily(driver) &&
|
|
1010
|
+
selectDistinctOn.length > 0) {
|
|
1003
1011
|
const selectDistinctOnMap = selectDistinctOn
|
|
1004
1012
|
.map((on) => this.replacePropertyNames(on))
|
|
1005
1013
|
.join(", ");
|
|
@@ -1329,7 +1337,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1329
1337
|
const driver = this.connection.driver;
|
|
1330
1338
|
let lockTablesClause = "";
|
|
1331
1339
|
if (this.expressionMap.lockTables) {
|
|
1332
|
-
if (!(driver
|
|
1340
|
+
if (!(DriverUtils.isPostgresFamily(driver) ||
|
|
1333
1341
|
driver.options.type === "cockroachdb")) {
|
|
1334
1342
|
throw new TypeORMError("Lock tables not supported in selected driver");
|
|
1335
1343
|
}
|
|
@@ -1338,14 +1346,29 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1338
1346
|
}
|
|
1339
1347
|
lockTablesClause = " OF " + this.expressionMap.lockTables.join(", ");
|
|
1340
1348
|
}
|
|
1349
|
+
let onLockExpression = "";
|
|
1350
|
+
if (this.expressionMap.onLocked === "nowait") {
|
|
1351
|
+
onLockExpression = " NOWAIT";
|
|
1352
|
+
}
|
|
1353
|
+
else if (this.expressionMap.onLocked === "skip_locked") {
|
|
1354
|
+
onLockExpression = " SKIP LOCKED";
|
|
1355
|
+
}
|
|
1341
1356
|
switch (this.expressionMap.lockMode) {
|
|
1342
1357
|
case "pessimistic_read":
|
|
1343
|
-
if (
|
|
1358
|
+
if (driver.options.type === "mysql" ||
|
|
1344
1359
|
driver.options.type === "aurora-mysql") {
|
|
1360
|
+
if (DriverUtils.isReleaseVersionOrGreater(driver, "8.0.0")) {
|
|
1361
|
+
return (" FOR SHARE" + lockTablesClause + onLockExpression);
|
|
1362
|
+
}
|
|
1363
|
+
else {
|
|
1364
|
+
return " LOCK IN SHARE MODE";
|
|
1365
|
+
}
|
|
1366
|
+
}
|
|
1367
|
+
else if (driver.options.type === "mariadb") {
|
|
1345
1368
|
return " LOCK IN SHARE MODE";
|
|
1346
1369
|
}
|
|
1347
|
-
else if (driver
|
|
1348
|
-
return " FOR SHARE" + lockTablesClause;
|
|
1370
|
+
else if (DriverUtils.isPostgresFamily(driver)) {
|
|
1371
|
+
return " FOR SHARE" + lockTablesClause + onLockExpression;
|
|
1349
1372
|
}
|
|
1350
1373
|
else if (driver.options.type === "oracle") {
|
|
1351
1374
|
return " FOR UPDATE";
|
|
@@ -1360,11 +1383,11 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1360
1383
|
if (DriverUtils.isMySQLFamily(driver) ||
|
|
1361
1384
|
driver.options.type === "aurora-mysql" ||
|
|
1362
1385
|
driver.options.type === "oracle") {
|
|
1363
|
-
return " FOR UPDATE";
|
|
1386
|
+
return " FOR UPDATE" + onLockExpression;
|
|
1364
1387
|
}
|
|
1365
|
-
else if (driver
|
|
1388
|
+
else if (DriverUtils.isPostgresFamily(driver) ||
|
|
1366
1389
|
driver.options.type === "cockroachdb") {
|
|
1367
|
-
return " FOR UPDATE" + lockTablesClause;
|
|
1390
|
+
return " FOR UPDATE" + lockTablesClause + onLockExpression;
|
|
1368
1391
|
}
|
|
1369
1392
|
else if (driver.options.type === "mssql") {
|
|
1370
1393
|
return "";
|
|
@@ -1373,7 +1396,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1373
1396
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1374
1397
|
}
|
|
1375
1398
|
case "pessimistic_partial_write":
|
|
1376
|
-
if (driver
|
|
1399
|
+
if (DriverUtils.isPostgresFamily(driver)) {
|
|
1377
1400
|
return " FOR UPDATE" + lockTablesClause + " SKIP LOCKED";
|
|
1378
1401
|
}
|
|
1379
1402
|
else if (DriverUtils.isMySQLFamily(driver)) {
|
|
@@ -1383,7 +1406,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1383
1406
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1384
1407
|
}
|
|
1385
1408
|
case "pessimistic_write_or_fail":
|
|
1386
|
-
if (driver
|
|
1409
|
+
if (DriverUtils.isPostgresFamily(driver) ||
|
|
1387
1410
|
driver.options.type === "cockroachdb") {
|
|
1388
1411
|
return " FOR UPDATE" + lockTablesClause + " NOWAIT";
|
|
1389
1412
|
}
|
|
@@ -1394,16 +1417,18 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1394
1417
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1395
1418
|
}
|
|
1396
1419
|
case "for_no_key_update":
|
|
1397
|
-
if (driver
|
|
1420
|
+
if (DriverUtils.isPostgresFamily(driver) ||
|
|
1398
1421
|
driver.options.type === "cockroachdb") {
|
|
1399
|
-
return " FOR NO KEY UPDATE" +
|
|
1422
|
+
return (" FOR NO KEY UPDATE" +
|
|
1423
|
+
lockTablesClause +
|
|
1424
|
+
onLockExpression);
|
|
1400
1425
|
}
|
|
1401
1426
|
else {
|
|
1402
1427
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1403
1428
|
}
|
|
1404
1429
|
case "for_key_share":
|
|
1405
|
-
if (driver
|
|
1406
|
-
return " FOR KEY SHARE" + lockTablesClause;
|
|
1430
|
+
if (DriverUtils.isPostgresFamily(driver)) {
|
|
1431
|
+
return (" FOR KEY SHARE" + lockTablesClause + onLockExpression);
|
|
1407
1432
|
}
|
|
1408
1433
|
else {
|
|
1409
1434
|
throw new LockNotSupportedOnGivenDriverError();
|
|
@@ -1466,7 +1491,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1466
1491
|
const asText = useLegacy ? "AsText" : "ST_AsText";
|
|
1467
1492
|
selectionPath = `${asText}(${selectionPath})`;
|
|
1468
1493
|
}
|
|
1469
|
-
if (this.connection.driver
|
|
1494
|
+
if (DriverUtils.isPostgresFamily(this.connection.driver))
|
|
1470
1495
|
if (column.precision) {
|
|
1471
1496
|
// cast to JSON to trigger parsing in the driver
|
|
1472
1497
|
selectionPath = `ST_AsGeoJSON(${selectionPath}, ${column.precision})::json`;
|
|
@@ -1523,7 +1548,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1523
1548
|
}
|
|
1524
1549
|
// For everything else, we'll need to do some hackery to get the correct count values.
|
|
1525
1550
|
if (this.connection.driver.options.type === "cockroachdb" ||
|
|
1526
|
-
this.connection.driver
|
|
1551
|
+
DriverUtils.isPostgresFamily(this.connection.driver)) {
|
|
1527
1552
|
// Postgres and CockroachDB can pass multiple parameters to the `DISTINCT` function
|
|
1528
1553
|
// https://www.postgresql.org/docs/9.5/sql-select.html#SQL-DISTINCT
|
|
1529
1554
|
return ("COUNT(DISTINCT(" +
|
|
@@ -1751,6 +1776,9 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1751
1776
|
})
|
|
1752
1777
|
: undefined;
|
|
1753
1778
|
this.setLock(this.findOptions.lock.mode, undefined, tableNames);
|
|
1779
|
+
if (this.findOptions.lock.onLocked) {
|
|
1780
|
+
this.setOnLocked(this.findOptions.lock.onLocked);
|
|
1781
|
+
}
|
|
1754
1782
|
}
|
|
1755
1783
|
}
|
|
1756
1784
|
if (this.findOptions.loadRelationIds === true) {
|
|
@@ -2227,9 +2255,9 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2227
2255
|
? order[key].nulls
|
|
2228
2256
|
: undefined;
|
|
2229
2257
|
nulls =
|
|
2230
|
-
nulls === "first"
|
|
2258
|
+
(nulls === null || nulls === void 0 ? void 0 : nulls.toLowerCase()) === "first"
|
|
2231
2259
|
? "NULLS FIRST"
|
|
2232
|
-
: nulls === "last"
|
|
2260
|
+
: (nulls === null || nulls === void 0 ? void 0 : nulls.toLowerCase()) === "last"
|
|
2233
2261
|
? "NULLS LAST"
|
|
2234
2262
|
: undefined;
|
|
2235
2263
|
this.addOrderBy(`${alias}.${propertyPath}`, direction, nulls);
|
|
@@ -2397,6 +2425,17 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2397
2425
|
" " +
|
|
2398
2426
|
parseInt(where[key].value));
|
|
2399
2427
|
}
|
|
2428
|
+
else {
|
|
2429
|
+
if (relation.isManyToOne ||
|
|
2430
|
+
(relation.isOneToOne &&
|
|
2431
|
+
relation.isOneToOneOwner)) {
|
|
2432
|
+
const aliasPath = `${alias}.${propertyPath}`;
|
|
2433
|
+
andConditions.push(this.createWhereConditionExpression(this.getWherePredicateCondition(aliasPath, where[key])));
|
|
2434
|
+
}
|
|
2435
|
+
else {
|
|
2436
|
+
throw new Error(`This relation isn't supported by given find operator`);
|
|
2437
|
+
}
|
|
2438
|
+
}
|
|
2400
2439
|
}
|
|
2401
2440
|
else {
|
|
2402
2441
|
// const joinAlias = alias + "_" + relation.propertyName;
|