Composable macros for building custom routers on top of Elixir Server Core.
Usage
defmodule MyApp.Router do
use Plug.Router
require Logger
plug Plug.Logger, log: :info
plug :match
plug Plug.Parsers, parsers: [:json], pass: ["application/json"], json_decoder: Jason
plug Plug.Telemetry, event_prefix: [:server, :http]
plug :dispatch
import Core.HTTP.BaseRouter
add_root_route()
add_health_route()
add_job_routes()
get "/my-domain" do
send_resp(conn, 200, "custom")
end
match _ do
send_resp(conn, 404, "Not Found")
end
end
Summary
Functions
Injects GET /health — returns JSON {status: "OK"} or {status: "DEGRADED"} (503).
Injects POST /jobs, POST /jobs/schedule, GET /jobs, GET /jobs/:id.
Injects a GET / route returning a plain-text status message.
Injects GET /stats — returns job counts by status.
Functions
Injects GET /health — returns JSON {status: "OK"} or {status: "DEGRADED"} (503).
Injects POST /jobs, POST /jobs/schedule, GET /jobs, GET /jobs/:id.
GET /jobs supports query params:
- status=queued|running|done|failed
- page=N (default 1)
- per_page=N (default 50, max 200)
Injects a GET / route returning a plain-text status message.
Injects GET /stats — returns job counts by status.