0 | module HTTP.API.Server.Query
3 | import HTTP.API.Server.Interface
9 | -> All Decode (QueryConstraintTypes fs)
11 | -> Either DecodeErr (HList (QueryTypes fs))
12 | convertQ [] [] qs = Right []
13 | convertQ ((n ?? t) :: xs) (y :: ys) qs = Prelude.do
14 | let Just (QVal bs) := lookup n qs
15 | | Nothing => Left (Msg "Missing query parameter: '\{n}'")
16 | | Just QEmpty => Left (Msg "Missing query value: '\{n}'")
18 | vs <- convertQ xs ys qs
20 | convertQ (QBool n :: xs) ys qs = Prelude.do
21 | vs <- convertQ xs ys qs
22 | Right $
isJust (lookup n qs) :: vs
25 | Serve ReqQuery where
26 | InTypes q = QueryTypes q.fields
28 | Constraint q = All Decode (QueryConstraintTypes q.fields)
30 | canHandle _ r = True
31 | adjResponse _ _ _ = pure
34 | (throw . decodeErr badRequest400)
36 | (convertQ q.fields con r.uri.queries)