feat(api): sort supporté sur colonnes groupby en mode agrégation (#78)

Testé contre tabular-api data.gouv.fr : sort sur une colonne groupby
est honoré (200), sort sur un alias d'agrégat retourne 400 (colonne
inconnue). aggregate_marches reçoit order_by ; doc Swagger mise à jour.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Colin Maudry
2026-06-22 14:20:02 +02:00
parent b87eb4328c
commit 70ee819a51
2 changed files with 14 additions and 6 deletions
+6 -3
View File
@@ -198,18 +198,21 @@ def aggregate_marches(
where_sql: str = "TRUE",
params: tuple | list = (),
group_by: str | None = None,
order_by: str | None = None,
limit: int | None = None,
offset: int | None = None,
) -> pl.DataFrame:
"""SELECT agrégé paramétré contre la table decp.
`select_sql` et `group_by` sont des fragments SQL construits depuis des
noms de colonnes validés (jamais de valeur utilisateur libre). Les
valeurs de filtre passent par le binding `?` via `params`.
`select_sql`, `group_by` et `order_by` sont des fragments SQL construits
depuis des noms de colonnes validés (jamais de valeur utilisateur libre).
Les valeurs de filtre passent par le binding `?` via `params`.
"""
sql = f"SELECT {select_sql} FROM decp WHERE {where_sql}"
if group_by:
sql += f" GROUP BY {group_by}"
if order_by:
sql += f" ORDER BY {order_by}"
if limit is not None:
sql += f" LIMIT {int(limit)}"
if offset is not None: