swagger2-1.1.1: Swagger 2.0 data model

Safe HaskellNone
LanguageHaskell2010

Data.Swagger.Internal.ParamSchema

Synopsis

Documentation

class ToParamSchema a where Source

Convert a type into a plain ParamSchema.

An example type and instance:

{-# LANGUAGE OverloadedStrings #-}   -- allows to write Text literals

import Control.Lens

data Direction = Up | Down

instance ToParamSchema Direction where
  toParamSchema = mempty
     & schemaType .~ SwaggerString
     & schemaEnum .~ [ "Up", "Down" ]

Instead of manually writing your ToParamSchema instance you can use a default generic implementation of toParamSchema.

To do that, simply add deriving Generic clause to your datatype and declare a ToParamSchema instance for your datatype without giving definition for toParamSchema.

For instance, the previous example can be simplified into this:

{-# LANGUAGE DeriveGeneric #-}

import GHC.Generics (Generic)

data Direction = Up | Down deriving Generic

instance ToParamSchema Direction

Minimal complete definition

Nothing

Methods

toParamSchema :: proxy a -> ParamSchema t Source

Convert a type into a plain parameter schema.

>>> encode $ toParamSchema (Proxy :: Proxy Integer)
"{\"type\":\"integer\"}"

Instances

ToParamSchema Bool Source 
ToParamSchema Char Source 
ToParamSchema Double Source 
ToParamSchema Float Source 
ToParamSchema Int Source 
ToParamSchema Int8 Source 
ToParamSchema Int16 Source 
ToParamSchema Int32 Source 
ToParamSchema Int64 Source 
ToParamSchema Integer Source 
ToParamSchema Word Source 
ToParamSchema Word8 Source 
ToParamSchema Word16 Source 
ToParamSchema Word32 Source 
ToParamSchema Word64 Source 
ToParamSchema String Source 
ToParamSchema () Source
>>> encode $ toParamSchema (Proxy :: Proxy ())
"{\"type\":\"string\",\"enum\":[\"_\"]}"
ToParamSchema Scientific Source 
ToParamSchema Text Source 
ToParamSchema UTCTime Source
>>> toParamSchema (Proxy :: Proxy UTCTime) ^. schemaFormat
Just "yyyy-mm-ddThh:MM:ssZ"
ToParamSchema Text Source 
ToParamSchema All Source 
ToParamSchema Any Source 
ToParamSchema LocalTime Source
>>> toParamSchema (Proxy :: Proxy LocalTime) ^. schemaFormat
Just "yyyy-mm-ddThh:MM:ss"
ToParamSchema ZonedTime Source
>>> toParamSchema (Proxy :: Proxy ZonedTime) ^. schemaFormat
Just "yyyy-mm-ddThh:MM:ss+hhMM"
ToParamSchema NominalDiffTime Source 
ToParamSchema Day Source

Format "date" corresponds to yyyy-mm-dd format.

ToParamSchema a => ToParamSchema [a] Source 
ToParamSchema a => ToParamSchema (Dual a) Source 
ToParamSchema a => ToParamSchema (Sum a) Source 
ToParamSchema a => ToParamSchema (Product a) Source 
ToParamSchema a => ToParamSchema (First a) Source 
ToParamSchema a => ToParamSchema (Last a) Source 
ToParamSchema a => ToParamSchema (Set a) Source 
ToParamSchema a => ToParamSchema (HashSet a) Source 

toParamSchemaBoundedIntegral :: forall proxy a t. (Bounded a, Integral a) => proxy a -> ParamSchema t Source

Default plain schema for Bounded, Integral types.

>>> encode $ toParamSchemaBoundedIntegral (Proxy :: Proxy Int8)
"{\"maximum\":127,\"minimum\":-128,\"type\":\"integer\"}"

genericToParamSchema :: forall proxy a t. (Generic a, GToParamSchema (Rep a)) => SchemaOptions -> proxy a -> ParamSchema t Source

A configurable generic ParamSchema creator.

>>> :set -XDeriveGeneric
>>> data Color = Red | Blue deriving Generic
>>> encode $ genericToParamSchema defaultSchemaOptions (Proxy :: Proxy Color)
"{\"type\":\"string\",\"enum\":[\"Red\",\"Blue\"]}"

data Proxy3 a b c Source

Constructors

Proxy3