aeson-schemas-1.3.3: Easily consume JSON data on-demand with type-safety
MaintainerBrandon Chinn <brandon@leapyear.io>
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.Aeson.Schema.Type

Description

Defines SchemaType, the AST that defines a JSON schema.

Synopsis

Documentation

data Schema' s ty Source #

The schema definition for a JSON object.

Constructors

Schema (SchemaObjectMap' s ty) 

Instances

Instances details
(Eq s, Eq ty) => Eq (Schema' s ty) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

Methods

(==) :: Schema' s ty -> Schema' s ty -> Bool #

(/=) :: Schema' s ty -> Schema' s ty -> Bool #

(Show s, Show ty) => Show (Schema' s ty) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

Methods

showsPrec :: Int -> Schema' s ty -> ShowS #

show :: Schema' s ty -> String #

showList :: [Schema' s ty] -> ShowS #

IsSchemaObjectMap (FromSchema schema) => IsSchemaType ('SchemaInclude ('Right schema :: Either Type Schema)) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

IsSchema schema => HasSchemaResult ('SchemaInclude ('Right schema :: Either Type Schema)) Source # 
Instance details

Defined in Data.Aeson.Schema.Internal

data SchemaType' s ty Source #

The AST defining a JSON schema.

Constructors

SchemaScalar ty 
SchemaMaybe (SchemaType' s ty) 
SchemaTry (SchemaType' s ty)

@since v1.2.0

SchemaList (SchemaType' s ty) 
SchemaUnion [SchemaType' s ty]

@since v1.1.0

SchemaObject (SchemaObjectMap' s ty) 
SchemaInclude (Either ty (Schema' s ty))

An optimization for including schemas.

Will always be Left when used in a value-level schema and Right when used in a type-level schema. We can't use a type parameter for this because type synonyms can't be recursive (e.g. `type Schema = Schema' Symbol Type Schema`).

@since v1.3.2

Instances

Instances details
ParseSumType ('[] :: [SchemaType]) Source # 
Instance details

Defined in Data.Aeson.Schema.Internal

(Eq ty, Eq s) => Eq (SchemaType' s ty) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

Methods

(==) :: SchemaType' s ty -> SchemaType' s ty -> Bool #

(/=) :: SchemaType' s ty -> SchemaType' s ty -> Bool #

(Show ty, Show s) => Show (SchemaType' s ty) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

Methods

showsPrec :: Int -> SchemaType' s ty -> ShowS #

show :: SchemaType' s ty -> String #

showList :: [SchemaType' s ty] -> ShowS #

(HasSchemaResult schema, ParseSumType schemas) => ParseSumType (schema ': schemas) Source # 
Instance details

Defined in Data.Aeson.Schema.Internal

Methods

parseSumType :: [Text] -> Value -> Parser (SumType (SchemaResultList (schema ': schemas))) Source #

(IsSchemaKey key, HasSchemaResult inner, Typeable (SchemaResult inner)) => HasSchemaResultPair '(key, inner) Source # 
Instance details

Defined in Data.Aeson.Schema.Internal

Methods

parseValuePair :: Proxy '(key, inner) -> [Text] -> Object -> Parser (Text, Dynamic) Source #

toValuePair :: forall (schema :: Schema). Proxy '(key, inner) -> Object schema -> Object Source #

showValuePair :: forall (schema :: Schema). Proxy '(key, inner) -> Object schema -> (String, ShowS) Source #

type SchemaObjectMapV = SchemaObjectMap' String NameLike Source #

showSchemaV :: SchemaV -> String Source #

Show the given schema, as "{ key: Schema, ... }"

showSchemaTypeV :: SchemaTypeV -> String Source #

Pretty show the given SchemaType.

type Schema = Schema' Symbol Type Source #

The kind of schemas that may be used with Object; e.g.

data Payload (schema :: Schema) = Payload
  { getPayload :: Object schema
  , timestamp  :: UTCTime
  }

type family ToSchemaObject (schema :: Schema) :: SchemaType where ... Source #

Equations

ToSchemaObject ('Schema schema) = 'SchemaObject schema 

type family FromSchema (schema :: Schema) :: SchemaObjectMap where ... Source #

Equations

FromSchema ('Schema schema) = schema 

class IsSchemaType (schemaType :: SchemaType) where Source #

Methods

toSchemaTypeV :: Proxy schemaType -> SchemaTypeV Source #

Instances

Instances details
Typeable inner => IsSchemaType ('SchemaScalar inner :: SchemaType' Symbol Type) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

IsSchemaType inner => IsSchemaType ('SchemaMaybe inner) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

IsSchemaType inner => IsSchemaType ('SchemaTry inner) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

IsSchemaType inner => IsSchemaType ('SchemaList inner) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

All IsSchemaType schemas => IsSchemaType ('SchemaUnion schemas) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

IsSchemaObjectMap pairs => IsSchemaType ('SchemaObject pairs) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

IsSchemaObjectMap (FromSchema schema) => IsSchemaType ('SchemaInclude ('Right schema :: Either Type Schema)) Source # 
Instance details

Defined in Data.Aeson.Schema.Type

type IsSchemaObjectMap (pairs :: SchemaObjectMap) = All IsSchemaObjectPair pairs Source #

toSchemaV :: forall schema. IsSchemaObjectMap (FromSchema schema) => Proxy schema -> SchemaV Source #