Files
wanderer/lib/wanderer_app_web/controllers/fallback_controller.ex
2025-07-15 14:48:20 +02:00

60 lines
1.8 KiB
Elixir

defmodule WandererAppWeb.FallbackController do
use WandererAppWeb, :controller
alias WandererAppWeb.Helpers.APIUtils
# Handles not_found errors from with/else
def call(conn, {:error, :not_found}) do
APIUtils.error_response(
conn,
:not_found,
"Not found",
"The requested resource could not be found"
)
end
# Handles invalid_id errors
def call(conn, {:error, :invalid_id}) do
APIUtils.error_response(conn, :bad_request, "Invalid system ID")
end
# Handles invalid_coordinates_format errors
def call(conn, {:error, :invalid_coordinates_format}) do
APIUtils.error_response(
conn,
:bad_request,
"Invalid coordinates format. Use %{\"coordinates\" => %{\"x\" => number, \"y\" => number}}"
)
end
# Handles not_associated errors
def call(conn, {:error, :not_associated}) do
APIUtils.error_response(conn, :not_found, "Connection not associated with specified system")
end
# Handles not_involved errors
def call(conn, {:error, :not_involved}) do
APIUtils.error_response(conn, :bad_request, "Connection must involve specified system")
end
# Handles creation_failed errors
def call(conn, {:error, :creation_failed}) do
APIUtils.error_response(conn, :internal_server_error, "Failed to create resource")
end
# Handles deletion_failed errors
def call(conn, {:error, :deletion_failed}) do
APIUtils.error_response(conn, :internal_server_error, "Failed to delete resource")
end
# Handles any other {:error, message} returns
def call(conn, {:error, msg}) when is_binary(msg) do
APIUtils.error_response(conn, :bad_request, msg)
end
# Handles any other unmatched errors
def call(conn, _error) do
APIUtils.error_response(conn, :internal_server_error, "An unexpected error occurred")
end
end