mirror of
https://github.com/cerc-io/watcher-ts
synced 2025-08-10 07:04:07 +00:00
Handle nested entity sorting for distinct on type queries
This commit is contained in:
parent
f488c8a781
commit
c058100ffa
@ -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(
|
||||
|
@ -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_');
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user