From 847a057e7bf1763c2c2a95303db40e71f68e7b90 Mon Sep 17 00:00:00 2001 From: HaimKortovich Date: Wed, 15 Apr 2026 15:56:33 -0500 Subject: [PATCH] implement error and healthh endpoints --- .../controllers/error_json.ex | 17 +++++++++++++++++ .../controllers/health_controller.ex | 15 +++++++++++++++ lib/provider_service_web/router.ex | 3 +++ 3 files changed, 35 insertions(+) create mode 100644 lib/provider_service_web/controllers/error_json.ex create mode 100644 lib/provider_service_web/controllers/health_controller.ex diff --git a/lib/provider_service_web/controllers/error_json.ex b/lib/provider_service_web/controllers/error_json.ex new file mode 100644 index 0000000..d858b53 --- /dev/null +++ b/lib/provider_service_web/controllers/error_json.ex @@ -0,0 +1,17 @@ +defmodule ProviderServiceWeb.ErrorJSON do + @moduledoc """ + This module is invoked by your endpoint in case of errors on JSON requests. + """ + + def render("404.json", _assigns) do + %{errors: %{detail: "Not Found"}} + end + + def render("500.json", _assigns) do + %{errors: %{detail: "Internal Server Error"}} + end + + def render(template, _assigns) do + %{errors: %{detail: Phoenix.Controller.status_message_from_template(template)}} + end +end diff --git a/lib/provider_service_web/controllers/health_controller.ex b/lib/provider_service_web/controllers/health_controller.ex new file mode 100644 index 0000000..42f903a --- /dev/null +++ b/lib/provider_service_web/controllers/health_controller.ex @@ -0,0 +1,15 @@ +defmodule ProviderServiceWeb.HealthController do + use ProviderServiceWeb, :controller + + def health(conn, _params) do + conn + |> put_status(:ok) + |> json(%{status: "ok"}) + end + + def ready(conn, _params) do + conn + |> put_status(:ok) + |> json(%{status: "ready"}) + end +end diff --git a/lib/provider_service_web/router.ex b/lib/provider_service_web/router.ex index c7a2fe4..41a8c75 100644 --- a/lib/provider_service_web/router.ex +++ b/lib/provider_service_web/router.ex @@ -6,6 +6,9 @@ defmodule ProviderServiceWeb.Router do plug(OpenApiSpex.Plug.PutApiSpec, module: ProviderServiceWeb.ApiSpec) end + get("/health", ProviderServiceWeb.HealthController, :health) + get("/health/ready", ProviderServiceWeb.HealthController, :ready) + scope "/api" do pipe_through(:api)