Core.HTTP.BaseRouter (ServCore v0.1.0)

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.