From 4aad4d125148320d5654fa80e9861dfee60aaa2a Mon Sep 17 00:00:00 2001 From: Pierre de Lacroix Date: Thu, 22 Jan 2026 19:35:01 +0100 Subject: [PATCH] add fundraising API --- lib/camp_api_web/controllers/grist_controller.ex | 7 +++++++ lib/camp_api_web/controllers/grist_json.ex | 9 +++++++++ lib/camp_api_web/router.ex | 2 ++ 3 files changed, 18 insertions(+) diff --git a/lib/camp_api_web/controllers/grist_controller.ex b/lib/camp_api_web/controllers/grist_controller.ex index 0e7323f..3637cdf 100644 --- a/lib/camp_api_web/controllers/grist_controller.ex +++ b/lib/camp_api_web/controllers/grist_controller.ex @@ -3,6 +3,7 @@ defmodule CampApiWeb.GristController do alias CampApi.Grist alias CampApi.Grist.Gauge + alias CampApi.Grist.Fundraising action_fallback CampApiWeb.FallbackController @@ -11,4 +12,10 @@ defmodule CampApiWeb.GristController do render(conn, :gauge, gauge: gauge) end + + def fundraising(conn, _params) do + fundraising = Fundraising.get() + + render(conn, :fundraising, fundraising: fundraising) + end end diff --git a/lib/camp_api_web/controllers/grist_json.ex b/lib/camp_api_web/controllers/grist_json.ex index 746a4f3..d87143f 100644 --- a/lib/camp_api_web/controllers/grist_json.ex +++ b/lib/camp_api_web/controllers/grist_json.ex @@ -4,4 +4,13 @@ defmodule CampApiWeb.GristJSON do def gauge(%{gauge: gauge}) do %{gauge: gauge} end + + def fundraising(%{fundraising: fundraising}) do + total = + fundraising + |> Enum.map(fn record -> get_in(record, ["fields", "Montant"]) end) + |> Enum.sum() + + %{total: total} + end end diff --git a/lib/camp_api_web/router.ex b/lib/camp_api_web/router.ex index bb1804e..d2f0653 100644 --- a/lib/camp_api_web/router.ex +++ b/lib/camp_api_web/router.ex @@ -9,6 +9,8 @@ defmodule CampApiWeb.Router do pipe_through :api get "/gauge", GristController, :gauge + + get "/fundraising", GristController, :fundraising end # Enable LiveDashboard in development