Summary
PgAggregatesPreset port missing ordering on aggregate fields. This was espacially useful when extending the aggregate functionality with further options like array_agg, where applied order will be applied to the results.
This was our plugin that heavily used it:
export const ARRAY_AGG_SMART_TAG = 'arrayAgg';
export const ArrayAggPlugin: Plugin = (builder) => {
builder.hook('build', (build) => {
const { pgSql: sql } = build;
const arrayAggSpec: AggregateSpec = {
id: 'arrayAgg',
humanLabel: 'array aggregation',
HumanLabel: 'Array aggregation',
isSuitableType: (pgType) => !!pgType.arrayType,
sqlAggregateWrap: (sqlFrag) => sql.fragment`coalesce(array_agg(${sqlFrag}), '{}')`,
pgTypeAndModifierModifier: (pgType) => [pgType.arrayType, null],
isNonNull: true
};
build.pgAggregateSpecs = [...build.pgAggregateSpecs, arrayAggSpec];
return build;
});
};
query:
{
projectsConnection {
groupedAggregates(groupBy: [TRADES]) {
keys
arrayAgg {
id (orderBy: [ID_ASC])
}
}
}
}
Steps to reproduce
Try to set ordering in the aggregated field. For example:
{
projectsConnection {
groupedAggregates(groupBy: [TRADES]) {
keys
sum {
id (orderBy: [ID_ASC])
}
}
}
}
Expected results
It will apply the sorting to the aggregated result. Graphql schema will support ordering on aggregate field.
Actual results
Doesn't support.
Summary
PgAggregatesPreset port missing ordering on aggregate fields. This was espacially useful when extending the aggregate functionality with further options like
array_agg, where applied order will be applied to the results.This was our plugin that heavily used it:
Steps to reproduce
Try to set ordering in the aggregated field. For example:
Expected results
It will apply the sorting to the aggregated result. Graphql schema will support ordering on aggregate field.
Actual results
Doesn't support.