Handle nested entity sorting for distinct on type queries

This commit is contained in:
Prathamesh Musale 2023-11-08 10:15:28 +05:30
parent f488c8a781
commit c058100ffa
2 changed files with 6 additions and 8 deletions

View File

@ -1145,7 +1145,7 @@ export class Database {
subQuery = await this.applyBlockHeightFilter(queryRunner, subQuery, block, 'subTable');
// Join with self to select required columns
// Self join to select required columns
const latestRelatedEntitiesAlias = `latest${relationField}Entities`;
const relationSubQuery: SelectQueryBuilder<any> = relationRepo.createQueryBuilder(relationTableName, queryRunner)
.select(`${relationTableName}.id`, 'id')
@ -1157,7 +1157,7 @@ export class Database {
)
.setParameters(subQuery.getParameters());
// Join with related table to get the required fields
// Join with related table to get the required field to sort on
const relatedEntitiesAlias = `related${relationField}`;
selectQueryBuilder = selectQueryBuilder
.innerJoin(

View File

@ -503,16 +503,14 @@ export class GraphDatabase {
subQuery = this._baseDatabase.buildQuery(repo, subQuery, where, relationsMap.get(entityType), block);
let selectQueryBuilder = queryRunner.manager.createQueryBuilder()
.from(
`(${subQuery.getQuery()})`,
'latestEntities'
)
.select('"latestEntities".*')
.from(`(${subQuery.getQuery()})`, 'latestEntities')
.setParameters(subQuery.getParameters()) as SelectQueryBuilder<Entity>;
if (queryOptions.orderBy) {
selectQueryBuilder = await this._baseDatabase.orderQuery(repo, selectQueryBuilder, queryOptions, {}, {}, 'subTable_');
selectQueryBuilder = await this._baseDatabase.orderQuery(repo, selectQueryBuilder, queryOptions, relationsMap.get(entityType), block, 'subTable_');
if (queryOptions.orderBy !== 'id') {
// Order by id if ordered by some non-id column (for rows having same value for the ordered column)
// Order by id if ordered by some non-id column (for rows having same value for the column ordered on)
selectQueryBuilder = await this._baseDatabase.orderQuery(repo, selectQueryBuilder, { ...queryOptions, orderBy: 'id' }, {}, {}, 'subTable_');
}
}