License | BSD3 |
---|---|
Maintainer | Nickolay Kudasov <[email protected]> |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Servant.Swagger.TypeLevel
Description
Useful type families for servant APIs.
- type family IsSubAPI sub api :: Constraint
- type family EndpointsList api
- type family BodyTypes c api :: [*]
Documentation
type family IsSubAPI sub api :: Constraint Source
Check whether sub
is a sub API of api
.
Equations
IsSubAPI sub api = AllIsElem (EndpointsList sub) api |
type family EndpointsList api Source
Build a list of endpoints from an API.
Equations
EndpointsList (a :<|> b) = AppendList (EndpointsList a) (EndpointsList b) | |
EndpointsList (e :> a) = MapSub e (EndpointsList a) | |
EndpointsList a = `[a]` |
type family BodyTypes c api :: [*] Source
Extract a list of unique "body" types for a specific content-type from a servant API.
Equations
BodyTypes c (Delete cs (Headers hdrs a)) = AddBodyType c cs a `[]` | |
BodyTypes c (Get cs (Headers hdrs a)) = AddBodyType c cs a `[]` | |
BodyTypes c (Patch cs (Headers hdrs a)) = AddBodyType c cs a `[]` | |
BodyTypes c (Post cs (Headers hdrs a)) = AddBodyType c cs a `[]` | |
BodyTypes c (Put cs (Headers hdrs a)) = AddBodyType c cs a `[]` | |
BodyTypes c (Delete cs a) = AddBodyType c cs a `[]` | |
BodyTypes c (Get cs a) = AddBodyType c cs a `[]` | |
BodyTypes c (Patch cs a) = AddBodyType c cs a `[]` | |
BodyTypes c (Post cs a) = AddBodyType c cs a `[]` | |
BodyTypes c (Put cs a) = AddBodyType c cs a `[]` | |
BodyTypes c (ReqBody cs a :> api) = AddBodyType c cs a (BodyTypes c api) | |
BodyTypes c (e :> api) = BodyTypes c api | |
BodyTypes c (a :<|> b) = Merge (BodyTypes c a) (BodyTypes c b) |