Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Types that describe route info. We use it to derive OpenApi schema or clients.
Synopsis
- data RouteInfo = RouteInfo {
- method :: Maybe Method
- inputs :: [Describe RouteInput]
- output :: RouteOutput
- tags :: [Text]
- description :: Text
- summary :: Text
- data RouteInput
- data Describe a = Describe {
- description :: Maybe Text
- content :: a
- noDescription :: a -> Describe a
- getInputType :: RouteInfo -> Maybe MediaType
- data RouteOutput = RouteOutput {}
- newtype IsRequired = IsRequired Bool
- type OutputSchema = SchemaDefs
- type InputSchema = SchemaDefs
- data SchemaDefs = SchemaDefs {
- defs :: Definitions Schema
- ref :: Maybe (Referenced Schema)
- emptySchemaDefs :: SchemaDefs
- toSchemaDefs :: forall a. ToSchema a => SchemaDefs
- addRouteInput :: RouteInput -> RouteInfo -> RouteInfo
- setOutputMedia :: MediaType -> RouteInfo -> RouteInfo
- setMethod :: Method -> MediaType -> RouteInfo -> RouteInfo
- emptyRouteInfo :: RouteInfo
- describeInfoInputs :: [(Text, Text)] -> RouteInfo -> RouteInfo
- addBodyInfo :: forall ty a. (ToMediaType ty, ToSchema a) => RouteInfo -> RouteInfo
- addHeaderInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo
- addOptionalHeaderInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo
- addQueryInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo
- addQueryFlagInfo :: forall sym. KnownSymbol sym => RouteInfo -> RouteInfo
- addOptionalInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo
- addCaptureInfo :: forall sym a. (KnownSymbol sym, ToParamSchema a) => RouteInfo -> RouteInfo
- routeHasQuery :: Text -> RouteInfo -> Bool
- routeHasOptionalQuery :: Text -> RouteInfo -> Bool
- routeHasQueryFlag :: Text -> RouteInfo -> Bool
- routeHasCapture :: Text -> RouteInfo -> Bool
Documentation
Information on route
RouteInfo | |
|
Instances
data RouteInput Source #
Route inputs
ReqBodyInput MediaType SchemaDefs | |
RawBodyInput | |
CaptureInput Text Schema | |
QueryInput IsRequired Text Schema | |
QueryFlagInput Text | |
HeaderInput IsRequired Text Schema |
Instances
Show RouteInput Source # | |
Defined in Mig.Core.Types.Info showsPrec :: Int -> RouteInput -> ShowS # show :: RouteInput -> String # showList :: [RouteInput] -> ShowS # | |
Eq RouteInput Source # | |
Defined in Mig.Core.Types.Info (==) :: RouteInput -> RouteInput -> Bool # (/=) :: RouteInput -> RouteInput -> Bool # |
Values which have human-readable description.
Describe | |
|
noDescription :: a -> Describe a Source #
no description provided
data RouteOutput Source #
Route output
Instances
Show RouteOutput Source # | |
Defined in Mig.Core.Types.Info showsPrec :: Int -> RouteOutput -> ShowS # show :: RouteOutput -> String # showList :: [RouteOutput] -> ShowS # | |
Eq RouteOutput Source # | |
Defined in Mig.Core.Types.Info (==) :: RouteOutput -> RouteOutput -> Bool # (/=) :: RouteOutput -> RouteOutput -> Bool # |
newtype IsRequired Source #
Instances
Show IsRequired Source # | |
Defined in Mig.Core.Types.Info showsPrec :: Int -> IsRequired -> ShowS # show :: IsRequired -> String # showList :: [IsRequired] -> ShowS # | |
Eq IsRequired Source # | |
Defined in Mig.Core.Types.Info (==) :: IsRequired -> IsRequired -> Bool # (/=) :: IsRequired -> IsRequired -> Bool # |
type OutputSchema = SchemaDefs Source #
Output schema
type InputSchema = SchemaDefs Source #
Input schema
data SchemaDefs Source #
Schem definition with references to the used sub-values
SchemaDefs | |
|
Instances
Show SchemaDefs Source # | |
Defined in Mig.Core.Types.Info showsPrec :: Int -> SchemaDefs -> ShowS # show :: SchemaDefs -> String # showList :: [SchemaDefs] -> ShowS # | |
Eq SchemaDefs Source # | |
Defined in Mig.Core.Types.Info (==) :: SchemaDefs -> SchemaDefs -> Bool # (/=) :: SchemaDefs -> SchemaDefs -> Bool # |
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
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