Files
ihp-railiance-probe/Web/Controller/Probes.hs
tegwick e372a0c9ce feat: minimal IHP scaffold — T01-T05, T08 of IRP-WP-0001
- flake.nix adapted from inter-hub: appName=ihp-railiance-probe, stripped to
  core packages, GHC 9.10.3 Bug 1+2 overlays carried verbatim (pname check
  updated to ihp-railiance-probe-models)
- IHP project scaffold: Main.hs, Config.hs, App.cabal, Setup.hs, Makefile
- Schema: probes table (id, name, created_at)
- Health endpoint: GET /healthz → "ok" (HealthController)
- Probes CRUD: ProbesController + 4 views (Index, New, Show, Edit)
- Hspec test suite: Test/ProbeControllerSpec covers /probes and /healthz
- Helm chart in chart/: deployment, service, ingress, secret templates
- devenv.nix, devenv.yaml, .ghci, tailwind config

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 12:57:28 +02:00

43 lines
1.1 KiB
Haskell

module Web.Controller.Probes where
import Web.Controller.Prelude
import Web.View.Probes.Index
import Web.View.Probes.New
import Web.View.Probes.Show
import Web.View.Probes.Edit
instance Controller ProbesController where
action ProbesAction = do
probes <- query @Probe |> fetch
render IndexView { .. }
action NewProbeAction = do
let probe = newRecord @Probe
render NewView { .. }
action ShowProbeAction { probeId } = do
probe <- fetch probeId
render ShowView { .. }
action CreateProbeAction = do
newRecord @Probe
|> fill @'["name"]
|> createRecord
redirectTo ProbesAction
action EditProbeAction { probeId } = do
probe <- fetch probeId
render EditView { .. }
action UpdateProbeAction { probeId } = do
probe <- fetch probeId
probe
|> fill @'["name"]
|> updateRecord
redirectTo ProbesAction
action DeleteProbeAction { probeId } = do
probe <- fetch probeId
deleteRecord probe
redirectTo ProbesAction