typeorm 0.3.25-dev.2bfa300 → 0.3.25-dev.413f0a6

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.
Files changed (43) hide show
  1. package/browser/driver/oracle/OracleDriver.js +1 -1
  2. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  3. package/browser/driver/sap/SapDriver.js +1 -1
  4. package/browser/driver/sap/SapDriver.js.map +1 -1
  5. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +13 -0
  6. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  7. package/browser/driver/spanner/SpannerDriver.js +7 -0
  8. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  9. package/browser/driver/sqlserver/SqlServerDriver.js +1 -1
  10. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  11. package/browser/driver/types/UpsertType.d.ts +1 -1
  12. package/browser/driver/types/UpsertType.js.map +1 -1
  13. package/browser/query-builder/InsertOrUpdateOptions.d.ts +6 -0
  14. package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
  15. package/browser/query-builder/InsertQueryBuilder.d.ts +17 -0
  16. package/browser/query-builder/InsertQueryBuilder.js +480 -156
  17. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  18. package/browser/query-builder/QueryExpressionMap.d.ts +1 -0
  19. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  20. package/browser/query-builder/SelectQueryBuilder.js +21 -18
  21. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  22. package/driver/oracle/OracleDriver.js +1 -1
  23. package/driver/oracle/OracleDriver.js.map +1 -1
  24. package/driver/sap/SapDriver.js +1 -1
  25. package/driver/sap/SapDriver.js.map +1 -1
  26. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +13 -0
  27. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  28. package/driver/spanner/SpannerDriver.js +7 -0
  29. package/driver/spanner/SpannerDriver.js.map +1 -1
  30. package/driver/sqlserver/SqlServerDriver.js +1 -1
  31. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  32. package/driver/types/UpsertType.d.ts +1 -1
  33. package/driver/types/UpsertType.js.map +1 -1
  34. package/package.json +1 -1
  35. package/query-builder/InsertOrUpdateOptions.d.ts +6 -0
  36. package/query-builder/InsertOrUpdateOptions.js.map +1 -1
  37. package/query-builder/InsertQueryBuilder.d.ts +17 -0
  38. package/query-builder/InsertQueryBuilder.js +480 -156
  39. package/query-builder/InsertQueryBuilder.js.map +1 -1
  40. package/query-builder/QueryExpressionMap.d.ts +1 -0
  41. package/query-builder/QueryExpressionMap.js.map +1 -1
  42. package/query-builder/SelectQueryBuilder.js +21 -18
  43. package/query-builder/SelectQueryBuilder.js.map +1 -1
@@ -1337,12 +1337,15 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
1337
1337
  // in the case if nothing is joined in the query builder we don't need to make two requests to get paginated results
1338
1338
  // we can use regular limit / offset, that's why we add offset and limit construction here based on skip and take values
1339
1339
  let offset = this.expressionMap.offset, limit = this.expressionMap.limit;
1340
- if (!offset &&
1341
- !limit &&
1340
+ if (offset === undefined &&
1341
+ limit === undefined &&
1342
1342
  this.expressionMap.joinAttributes.length === 0) {
1343
1343
  offset = this.expressionMap.skip;
1344
1344
  limit = this.expressionMap.take;
1345
1345
  }
1346
+ // Helper functions to check if values are set (including 0)
1347
+ const hasLimit = limit !== undefined && limit !== null;
1348
+ const hasOffset = offset !== undefined && offset !== null;
1346
1349
  if (this.connection.driver.options.type === "mssql") {
1347
1350
  // Due to a limitation in SQL Server's parser implementation it does not support using
1348
1351
  // OFFSET or FETCH NEXT without an ORDER BY clause being provided. In cases where the
@@ -1350,59 +1353,59 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
1350
1353
  // have no effect on the query planner or on the order of the results returned.
1351
1354
  // https://dba.stackexchange.com/a/193799
1352
1355
  let prefix = "";
1353
- if ((limit || offset) &&
1356
+ if ((hasLimit || hasOffset) &&
1354
1357
  Object.keys(this.expressionMap.allOrderBys).length <= 0) {
1355
1358
  prefix = " ORDER BY (SELECT NULL)";
1356
1359
  }
1357
- if (limit && offset)
1360
+ if (hasLimit && hasOffset)
1358
1361
  return (prefix +
1359
1362
  " OFFSET " +
1360
1363
  offset +
1361
1364
  " ROWS FETCH NEXT " +
1362
1365
  limit +
1363
1366
  " ROWS ONLY");
1364
- if (limit)
1367
+ if (hasLimit)
1365
1368
  return (prefix + " OFFSET 0 ROWS FETCH NEXT " + limit + " ROWS ONLY");
1366
- if (offset)
1369
+ if (hasOffset)
1367
1370
  return prefix + " OFFSET " + offset + " ROWS";
1368
1371
  }
1369
1372
  else if (DriverUtils_1.DriverUtils.isMySQLFamily(this.connection.driver) ||
1370
1373
  this.connection.driver.options.type === "aurora-mysql" ||
1371
1374
  this.connection.driver.options.type === "sap" ||
1372
1375
  this.connection.driver.options.type === "spanner") {
1373
- if (limit && offset)
1376
+ if (hasLimit && hasOffset)
1374
1377
  return " LIMIT " + limit + " OFFSET " + offset;
1375
- if (limit)
1378
+ if (hasLimit)
1376
1379
  return " LIMIT " + limit;
1377
- if (offset)
1380
+ if (hasOffset)
1378
1381
  throw new OffsetWithoutLimitNotSupportedError_1.OffsetWithoutLimitNotSupportedError();
1379
1382
  }
1380
1383
  else if (DriverUtils_1.DriverUtils.isSQLiteFamily(this.connection.driver)) {
1381
- if (limit && offset)
1384
+ if (hasLimit && hasOffset)
1382
1385
  return " LIMIT " + limit + " OFFSET " + offset;
1383
- if (limit)
1386
+ if (hasLimit)
1384
1387
  return " LIMIT " + limit;
1385
- if (offset)
1388
+ if (hasOffset)
1386
1389
  return " LIMIT -1 OFFSET " + offset;
1387
1390
  }
1388
1391
  else if (this.connection.driver.options.type === "oracle") {
1389
- if (limit && offset)
1392
+ if (hasLimit && hasOffset)
1390
1393
  return (" OFFSET " +
1391
1394
  offset +
1392
1395
  " ROWS FETCH NEXT " +
1393
1396
  limit +
1394
1397
  " ROWS ONLY");
1395
- if (limit)
1398
+ if (hasLimit)
1396
1399
  return " FETCH NEXT " + limit + " ROWS ONLY";
1397
- if (offset)
1400
+ if (hasOffset)
1398
1401
  return " OFFSET " + offset + " ROWS";
1399
1402
  }
1400
1403
  else {
1401
- if (limit && offset)
1404
+ if (hasLimit && hasOffset)
1402
1405
  return " LIMIT " + limit + " OFFSET " + offset;
1403
- if (limit)
1406
+ if (hasLimit)
1404
1407
  return " LIMIT " + limit;
1405
- if (offset)
1408
+ if (hasOffset)
1406
1409
  return " OFFSET " + offset;
1407
1410
  }
1408
1411
  return "";