mig-0.2.1.0: Build lightweight and composable servers
Safe HaskellSafe-Inferred
LanguageGHC2021

Mig.Core.Types.Info

Description

Types that describe route info. We use it to derive OpenApi schema or clients.

Synopsis

Documentation

data RouteInfo Source #

Information on route

Constructors

RouteInfo 

Fields

Instances

Instances details
Show RouteInfo Source # 
Instance details

Defined in Mig.Core.Types.Info

Eq RouteInfo Source # 
Instance details

Defined in Mig.Core.Types.Info

data Describe a Source #

Values which have human-readable description.

Constructors

Describe 

Fields

Instances

Instances details
Show a => Show (Describe a) Source # 
Instance details

Defined in Mig.Core.Types.Info

Methods

showsPrec :: Int -> Describe a -> ShowS #

show :: Describe a -> String #

showList :: [Describe a] -> ShowS #

Eq a => Eq (Describe a) Source # 
Instance details

Defined in Mig.Core.Types.Info

Methods

(==) :: Describe a -> Describe a -> Bool #

(/=) :: Describe a -> Describe a -> Bool #

noDescription :: a -> Describe a Source #

no description provided

getInputType :: RouteInfo -> Maybe MediaType Source #

Get input media-type

data RouteOutput Source #

Route output

Constructors

RouteOutput 

Fields

Instances

Instances details
Show RouteOutput Source # 
Instance details

Defined in Mig.Core.Types.Info

Eq RouteOutput Source # 
Instance details

Defined in Mig.Core.Types.Info

newtype IsRequired Source #

Constructors

IsRequired Bool 

Instances

Instances details
Show IsRequired Source # 
Instance details

Defined in Mig.Core.Types.Info

Eq IsRequired Source # 
Instance details

Defined in Mig.Core.Types.Info

type OutputSchema = SchemaDefs Source #

Output schema

type InputSchema = SchemaDefs Source #

Input schema

data SchemaDefs Source #

Schem definition with references to the used sub-values

Constructors

SchemaDefs 

Instances

Instances details
Show SchemaDefs Source # 
Instance details

Defined in Mig.Core.Types.Info

Eq SchemaDefs Source # 
Instance details

Defined in Mig.Core.Types.Info

emptySchemaDefs :: SchemaDefs Source #

An empty schema definition

toSchemaDefs :: forall a. ToSchema a => SchemaDefs Source #

Create schema definition

addRouteInput :: RouteInput -> RouteInfo -> RouteInfo Source #

Add route input to route info list of inputs

setOutputMedia :: MediaType -> RouteInfo -> RouteInfo Source #

Set output meida-type for the route

setMethod :: Method -> MediaType -> RouteInfo -> RouteInfo Source #

Set http-method of the route

emptyRouteInfo :: RouteInfo Source #

Default empty route info. We update it as we construct the route with type-safe DSL. Almost all values are derived from type signatures

describeInfoInputs :: [(Text, Text)] -> RouteInfo -> RouteInfo Source #

Appends descriptiton for the info special name request-body is dedicated to request body input nd raw-input is dedicated to raw input

api updates

addBodyInfo :: forall ty a. (ToMediaType ty, ToSchema a) => RouteInfo -> RouteInfo Source #

Adds request body to API schema

addHeaderInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo Source #

Adds required header info to API schema

addOptionalHeaderInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo Source #

Adds optional header info to API schema

addQueryInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo Source #

Adds required query info to API schema

addQueryFlagInfo :: forall sym. KnownSymbol sym => RouteInfo -> RouteInfo Source #

Adds query flag to API schema

addOptionalInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo Source #

Adds optional query info to API schema

addCaptureInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo Source #

Adds capture info to API schema

checks

routeHasQuery :: Text -> RouteInfo -> Bool Source #

Check that route has query with given name

routeHasOptionalQuery :: Text -> RouteInfo -> Bool Source #

Check that route has query with given name

routeHasQueryFlag :: Text -> RouteInfo -> Bool Source #

Check that route has query with given name

routeHasCapture :: Text -> RouteInfo -> Bool Source #

Check that route has query with given name