named-servant-0.3.1: support records and named (from the named package) parameters in servant
Safe HaskellNone
LanguageHaskell2010

Servant.Named

Description

This module uses the named package to match names with parameters. For example, this api:

type API = "users" :> (QueryParam "category" Category :>
                       QueryParam' '[Required, Strict] "sort_by" SortBy :>
                       QueryFlag "with_schema" :>
                       QueryParams "filters" Filter :>
                       Get '[JSON] User

can be written with named:

type API = "users" :> (OptionalQueryParam "category" Category :>
                       NamedQueryParam "sort_by" SortBy :>
                       NamedQueryFlag "with_schema" :>
                       NamedQueryParams "filters" Filter :>
                       Get '[JSON] User

The servant-named-client and servant-named-server will create functions that use the named package to match the names with the parameters.

Synopsis

Documentation

type NamedQueryParam = NamedQueryParam' [Required, Strict] Source #

Like QueryParam, but instead of extracting a type a, it extracts a named type named :! a, where named corresponds to the query parameter string.

type OptionalQueryParam = NamedQueryParam' [Optional, Strict] Source #

Lookup the value associated to the sym query string parameter and try to extract it as an optional named argument of type sym :? a.

data NamedQueryParams (sym :: Symbol) (a :: *) Source #

Like QueryParams, but extracts a named type named :? [a] instead, where named corresponds to the query parameter string. The default value is the empty list `[]`

Instances

Instances details
(KnownSymbol sym, ToHttpApiData v, HasLink sub) => HasLink (NamedQueryParams sym v :> sub :: Type) Source # 
Instance details

Defined in Servant.Named

Associated Types

type MkLink (NamedQueryParams sym v :> sub) a #

Methods

toLink :: (Link -> a) -> Proxy (NamedQueryParams sym v :> sub) -> Link -> MkLink (NamedQueryParams sym v :> sub) a #

type MkLink (NamedQueryParams sym v :> sub :: Type) a Source # 
Instance details

Defined in Servant.Named

type MkLink (NamedQueryParams sym v :> sub :: Type) a = (sym :? [v]) -> MkLink sub a

data NamedQueryFlag (sym :: Symbol) Source #

Like `QueryFlag, but extracts a named type named :? Bool instead, where named corresponds to the query parameter string. The default value is False.

Instances

Instances details
(KnownSymbol sym, HasLink sub) => HasLink (NamedQueryFlag sym :> sub :: Type) Source # 
Instance details

Defined in Servant.Named

Associated Types

type MkLink (NamedQueryFlag sym :> sub) a #

Methods

toLink :: (Link -> a) -> Proxy (NamedQueryFlag sym :> sub) -> Link -> MkLink (NamedQueryFlag sym :> sub) a #

type MkLink (NamedQueryFlag sym :> sub :: Type) a Source # 
Instance details

Defined in Servant.Named

type MkLink (NamedQueryFlag sym :> sub :: Type) a = (sym :? Bool) -> MkLink sub a

data NamedQueryParam' (mods :: [*]) (sym :: Symbol) (a :: *) Source #

Like QueryParam`, but instead of extracting a type a, it extracts a named type NamedF f a sym, where the name corresponds to the query parameter string.

Instances

Instances details
(KnownSymbol sym, ToHttpApiData v, HasLink sub, SBoolI (FoldRequired mods)) => HasLink (NamedQueryParam' mods sym v :> sub :: Type) Source # 
Instance details

Defined in Servant.Named

Associated Types

type MkLink (NamedQueryParam' mods sym v :> sub) a #

Methods

toLink :: (Link -> a) -> Proxy (NamedQueryParam' mods sym v :> sub) -> Link -> MkLink (NamedQueryParam' mods sym v :> sub) a #

type MkLink (NamedQueryParam' mods sym v :> sub :: Type) a Source # 
Instance details

Defined in Servant.Named

type MkLink (NamedQueryParam' mods sym v :> sub :: Type) a = If (FoldRequired mods) (sym :! v) (sym :? v) -> MkLink sub a