inter-hub-haskell/Web/Controller/Api/V2/OutcomeSignals.hs

38 lines
1.2 KiB
Haskell
Raw Normal View History

2026-04-01 19:52:20 +00:00
module Web.Controller.Api.V2.OutcomeSignals where
import Web.Types
import Generated.Types
import IHP.Prelude
import IHP.ControllerPrelude
import Data.Aeson (object, (.=))
import Web.Controller.Api.V2.Auth (requireApiConsumer, paginatedResponse, getPageParams)
instance Controller ApiV2OutcomeSignalsController where
action ApiV2IndexOutcomeSignalsAction = do
_consumer <- requireApiConsumer
(page, perPage) <- getPageParams
let off = (page - 1) * perPage
total <- query @OutcomeSignal |> fetchCount
sigs <- query @OutcomeSignal
|> orderByDesc #observedAt
|> limit perPage
|> offset off
|> fetch
renderJson $ paginatedResponse (map sigToJson sigs) page perPage total
action ApiV2ShowOutcomeSignalAction { outcomeSignalId } = do
_consumer <- requireApiConsumer
sig <- fetch outcomeSignalId
renderJson (sigToJson sig)
sigToJson :: OutcomeSignal -> Value
sigToJson s = object
[ "id" .= s.id
, "widgetId" .= s.widgetId
, "deploymentId" .= s.deploymentId
, "signalType" .= s.signalType
, "value" .= s.value
, "observedAt" .= s.observedAt
]