typeorm 0.2.39-dev.6558295 → 0.2.39-dev.6929ae3

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.
@@ -597,7 +597,7 @@ export declare class SelectQueryBuilder<Entity> extends QueryBuilder<Entity> imp
597
597
  entities: Entity[];
598
598
  raw: any[];
599
599
  }>;
600
- protected createOrderByCombinedWithSelectExpression(parentAlias: string): [string, OrderByCondition];
600
+ protected createOrderByCombinedWithSelectExpression(parentAlias: string): [string, OrderByCondition, string];
601
601
  /**
602
602
  * Loads raw results from the database.
603
603
  */
@@ -1458,7 +1458,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1458
1458
  */
1459
1459
  SelectQueryBuilder.prototype.executeEntitiesAndRawResults = function (queryRunner) {
1460
1460
  return __awaiter(this, void 0, void 0, function () {
1461
- var metadata, relationIdLoader, relationCountLoader, relationIdMetadataTransformer, relationCountMetadataTransformer, rawResults, entities, _a, selects, orderBys_1, metadata_1, mainAliasName_1, querySelects, condition, parameters_1, alias_1, ids, areAllNumbers, rawRelationIdResults, rawRelationCountResults, transformer;
1461
+ var metadata, relationIdLoader, relationCountLoader, relationIdMetadataTransformer, relationCountMetadataTransformer, rawResults, entities, _a, selects, orderBys_1, subquerySelect, metadata_1, mainAliasName_1, querySelects, condition, parameters_1, alias_1, ids, areAllNumbers, rawRelationIdResults, rawRelationCountResults, transformer;
1462
1462
  var _this = this;
1463
1463
  return __generator(this, function (_b) {
1464
1464
  switch (_b.label) {
@@ -1480,7 +1480,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1480
1480
  relationCountMetadataTransformer.transform();
1481
1481
  rawResults = [], entities = [];
1482
1482
  if (!((this.expressionMap.skip || this.expressionMap.take) && this.expressionMap.joinAttributes.length > 0)) return [3 /*break*/, 4];
1483
- _a = __read(this.createOrderByCombinedWithSelectExpression("distinctAlias"), 2), selects = _a[0], orderBys_1 = _a[1];
1483
+ _a = __read(this.createOrderByCombinedWithSelectExpression("distinctAlias"), 3), selects = _a[0], orderBys_1 = _a[1], subquerySelect = _a[2];
1484
1484
  metadata_1 = this.expressionMap.mainAlias.metadata;
1485
1485
  mainAliasName_1 = this.expressionMap.mainAlias.name;
1486
1486
  querySelects = metadata_1.primaryColumns.map(function (primaryColumn) {
@@ -1494,7 +1494,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1494
1494
  return [4 /*yield*/, new SelectQueryBuilder(this.connection, queryRunner)
1495
1495
  .select("DISTINCT " + querySelects.join(", "))
1496
1496
  .addSelect(selects)
1497
- .from("(" + this.clone().orderBy().getQuery() + ")", "distinctAlias")
1497
+ .from("(" + this.clone().orderBy().addSelect(subquerySelect).getQuery() + ")", "distinctAlias")
1498
1498
  .offset(this.expressionMap.skip)
1499
1499
  .limit(this.expressionMap.take)
1500
1500
  .orderBy(orderBys_1)
@@ -1604,7 +1604,23 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1604
1604
  }
1605
1605
  }
1606
1606
  });
1607
- return [selectString, orderByObject];
1607
+ var subquerySelectString = Object.keys(orderBys)
1608
+ .filter(function (orderCriteria) { return orderCriteria.includes("."); })
1609
+ .map(function (orderCriteria) {
1610
+ var criteriaParts = orderCriteria.split(".");
1611
+ var aliasName = criteriaParts[0];
1612
+ var propertyPath = criteriaParts.slice(1).join(".");
1613
+ var alias = _this.expressionMap.findAliasByName(aliasName);
1614
+ if (alias.type !== "join") {
1615
+ return "";
1616
+ }
1617
+ var column = alias.metadata.findColumnWithPropertyPath(propertyPath);
1618
+ var property = _this.escape(alias.name) + "." + _this.escape(column.databaseName);
1619
+ var propertyAlias = _this.escape(DriverUtils.buildAlias(_this.connection.driver, aliasName, column.databaseName));
1620
+ return [property, "AS", propertyAlias].join(" ");
1621
+ })
1622
+ .join(", ");
1623
+ return [selectString, orderByObject, subquerySelectString];
1608
1624
  };
1609
1625
  /**
1610
1626
  * Loads raw results from the database.