diff --git a/src/api/filters.py b/src/api/filters.py index 573dde8..9ca30d1 100644 --- a/src/api/filters.py +++ b/src/api/filters.py @@ -17,7 +17,7 @@ OPERATORS = { "sort", } -RESERVED_PARAMS = {"page", "page_size", "columns", "count"} +RESERVED_PARAMS = {"page", "page_size", "columns", "count_results"} class FilterError(ValueError): diff --git a/src/api/routes.py b/src/api/routes.py index 418492d..077d394 100644 --- a/src/api/routes.py +++ b/src/api/routes.py @@ -114,10 +114,10 @@ def schema(): "description": "Liste de colonnes à retourner, séparées par des virgules (ex: `id,acheteur_id,montant`). Par défaut : toutes.", }, { - "name": "count", + "name": "count_results", "in": "query", "schema": {"type": "string", "enum": ["true", "false"], "default": "true"}, - "description": "Inclure le total (`COUNT(*)`) dans la réponse. Mettre `false` pour accélérer la requête.", + "description": "Inclure le total (`COUNT(*)`) dans `meta`. Mettre `false` pour accélérer la requête. Ignoré en mode agrégation.", }, { "name": "__", @@ -142,14 +142,14 @@ def data(): strictly_less, strictly_greater, in, notin, isnull, isnotnull, sort. Paramètres réservés : page (défaut 1), page_size (défaut 50, max 1000), - columns (csv), count (true|false ; mettre false pour économiser le COUNT(*)). + columns (csv), count_results (true|false ; mettre false pour économiser le COUNT(*)). """ import polars as pl import polars.selectors as cs page, page_size = _parse_pagination() columns = _parse_columns() - count = request.args.get("count", "true").lower() != "false" + count_results = request.args.get("count_results", "true").lower() != "false" try: where_sql, params, order_sql = build_where( @@ -170,7 +170,7 @@ def data(): # JSON ne sérialise pas date/datetime nativement → cast en string ISO df_ready = df.with_columns(cs.temporal().cast(pl.String)) - total = count_marches(where_sql, params) if count else None + total = count_marches(where_sql, params) if count_results else None meta = {"page": page, "page_size": page_size} if total is not None: meta["total"] = total diff --git a/tests/api/test_endpoints_data.py b/tests/api/test_endpoints_data.py index 8911062..991c1c3 100644 --- a/tests/api/test_endpoints_data.py +++ b/tests/api/test_endpoints_data.py @@ -17,9 +17,9 @@ def test_data_default_pagination(api_client, valid_token_header): assert "total" in body["meta"] -def test_data_count_false_omits_total(api_client, valid_token_header): +def test_data_count_results_false_omits_total(api_client, valid_token_header): client, _ = api_client - resp = client.get("/api/v1/data?count=false", headers=valid_token_header) + resp = client.get("/api/v1/data?count_results=false", headers=valid_token_header) assert resp.status_code == 200 body = resp.get_json() assert "total" not in body["meta"] diff --git a/tests/api/test_filters.py b/tests/api/test_filters.py index b7706fe..8d3ecd5 100644 --- a/tests/api/test_filters.py +++ b/tests/api/test_filters.py @@ -114,7 +114,7 @@ def test_reserved_params_are_ignored(): ("page", "2"), ("page_size", "100"), ("columns", "uid"), - ("count", "false"), + ("count_results", "false"), ("uid__exact", "z"), ], SCHEMA, diff --git a/tests/conftest.py b/tests/conftest.py index 9ef9b6a..3ff37f7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -74,7 +74,8 @@ def test_data(): _cleanup_db_artifacts() -def pytest_setup_options(): +@pytest.fixture(scope="session") +def chrome_options(): options = Options() options.add_argument("--window-size=1200,1200 ") options.add_experimental_option(