0 | module HTTP.API.Client.Query
 1 |
 2 | import HTTP.API.Client.Interface
 3 |
 4 | %default total
 5 |
 6 | export
 7 | queryTypes : (fs : List QField) -> TList (QueryTypes fs)
 8 | queryTypes []               = []
 9 | queryTypes ((_ ?? t) :: xs) = t :: queryTypes xs
10 | queryTypes (QBool _ :: xs)  = Bool :: queryTypes xs
11 |
12 | qus :
13 |      (fs : List QField)
14 |   -> All Encode (QueryConstraintTypes fs)
15 |   -> HList (QueryTypes fs)
16 |   -> Queries
17 | qus []             _       _       = []
18 | qus ((n ?? t)::fs) (e::es) (v::vs) = (n,QVal $ encode v)::qus fs es vs
19 | qus (QBool n ::fs) es      (v::vs) =
20 |   if v then (n,QEmpty)::qus fs es vs else qus fs es vs
21 |
22 | public export
23 | Receive ReqQuery where
24 |   RecConstraint q = All Encode (QueryConstraintTypes q.fields)
25 |   RecTypes q = QueryTypes q.fields
26 |   recs q = queryTypes q.fields
27 |   adjRequest q vs r = adjURI {queries $= (qus q.fields con vs ++)} r
28 |
29 | public export
30 | GetResponse ReqQuery where
31 |   RespEncodings _ = []
32 |   RespTypes _ = []
33 |