proxMon/server/lib/server_web/controllers/host_controller.ex

30 lines
806 B
Elixir

defmodule ServerWeb.HostController do
use ServerWeb, :controller
alias Server.{Metrics, Repo, Schema.Host}
def show(conn, %{"name" => name}) do
case Repo.get_by(Host, name: name) do
nil ->
conn
|> put_status(:not_found)
|> json(%{error: "host_not_found"})
%Host{} = host ->
samples =
for interval <- ~w(fast medium slow),
sample = Metrics.latest_sample(host.id, interval),
into: %{} do
{interval, %{collected_at: sample.collected_at, payload: sample.payload}}
end
json(conn, %{
name: host.name,
status: host.status,
agent_version: host.agent_version,
last_seen_at: host.last_seen_at,
samples: samples
})
end
end
end