Core.HTTP.BaseRouter (Elixir Server Core v0.1.1)

Copy Markdown View Source

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

add_health_route()

(macro)

Injects GET /health — returns JSON {status: "OK"} or {status: "DEGRADED"} (503).

add_job_routes()

(macro)

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)

add_root_route()

(macro)

Injects a GET / route returning a plain-text status message.

add_stats_route()

(macro)

Injects GET /stats — returns job counts by status.