0 | module HTTP.API.Server.Query
3 | import HTTP.API.Server.Interface
7 | parameters {auto loc : HTTPLocal}
10 | -> All Decode (QueryConstraintTypes fs)
12 | -> Either DecodeErr (HList (QueryTypes fs))
13 | convertQ [] [] qs = Right []
14 | convertQ ((n ?? t) :: xs) (y :: ys) qs = Prelude.do
15 | let Just (QVal bs) := lookup n qs
16 | | Nothing => Left (Msg $
missingQueryParameter $
toString n)
17 | | Just QEmpty => Left (Msg $
missingQueryValue $
toString n)
19 | vs <- convertQ xs ys qs
21 | convertQ (QBool n :: xs) ys qs = Prelude.do
22 | vs <- convertQ xs ys qs
23 | Right $
isJust (lookup n qs) :: vs
26 | Serve ReqQuery where
27 | InTypes q = QueryTypes q.fields
29 | Constraint q = All Decode (QueryConstraintTypes q.fields)
31 | canHandle _ r = True
32 | adjResponse _ _ _ = pure
35 | (throw . decodeErr badRequest400)
37 | (convertQ q.fields con r.uri.queries)