From 8bf4167e61776f62cd361697b83ead0c90b4b38e Mon Sep 17 00:00:00 2001 From: Joshua Potter Date: Mon, 4 Dec 2023 07:39:27 -0700 Subject: [PATCH] Expose all coaches as JSON dump. --- .../controllers/coach_controller.ex | 10 ++++++++++ lib/boardwise_web/controllers/coach_json.ex | 20 +++++++++++++++++++ lib/boardwise_web/router.ex | 6 ++++++ 3 files changed, 36 insertions(+) create mode 100644 lib/boardwise_web/controllers/coach_controller.ex create mode 100644 lib/boardwise_web/controllers/coach_json.ex diff --git a/lib/boardwise_web/controllers/coach_controller.ex b/lib/boardwise_web/controllers/coach_controller.ex new file mode 100644 index 0000000..6b6a16c --- /dev/null +++ b/lib/boardwise_web/controllers/coach_controller.ex @@ -0,0 +1,10 @@ +defmodule BoardWiseWeb.CoachController do + use BoardWiseWeb, :controller + + alias BoardWise.Coaches + + def index(conn, _params) do + coaches = Coaches.list_coaches() + render(conn, :index, coaches: coaches) + end +end diff --git a/lib/boardwise_web/controllers/coach_json.ex b/lib/boardwise_web/controllers/coach_json.ex new file mode 100644 index 0000000..a161e06 --- /dev/null +++ b/lib/boardwise_web/controllers/coach_json.ex @@ -0,0 +1,20 @@ +defmodule BoardWiseWeb.CoachJSON do + alias BoardWise.Coaches.Coach + + @doc """ + Renders a list of coaches. + """ + def index(%{coaches: coaches}) do + %{data: for(coach <- coaches, do: data(coach))} + end + + defp data(%Coach{} = coach) do + %{ + site: coach.site, + username: coach.username, + rapid: coach.rapid, + blitz: coach.blitz, + bullet: coach.bullet + } + end +end diff --git a/lib/boardwise_web/router.ex b/lib/boardwise_web/router.ex index db66724..ba622cd 100644 --- a/lib/boardwise_web/router.ex +++ b/lib/boardwise_web/router.ex @@ -22,6 +22,12 @@ defmodule BoardWiseWeb.Router do pipe_through :browser end + scope "/api", BoardWiseWeb do + pipe_through :api + + get "/coaches", CoachController, :index + end + # Other scopes may use custom stacks. # scope "/api", BoardWiseWeb do # pipe_through :api