mu-schema-0.3.1.0: src/Mu/Schema.hs
{-# language DataKinds #-}
{-|
Description : Schemas for Mu microservices
Definition and interpretation of schemas in
the vein of Avro, Protocol Buffers, or JSON Schema.
Each 'Schema' is made out of types (which in turn
be records or enumerations). A value which obbeys
such a schema is called a 'Term'. Conversion between
Haskell types and schema types is mediated by the
type classes 'ToSchema' and 'FromSchema'.
-}
module Mu.Schema (
-- * Schema definition
Schema, Schema'
, KnownName(..)
, TypeDef, TypeDefB(..)
, ChoiceDef(..)
, FieldDef, FieldDefB(..)
, FieldType, FieldTypeB(..)
-- ** Lookup type in schema
, (:/:)
-- * Interpretation of schemas
, Term(..), Field(..), FieldValue(..)
, NS(..), NP(..), Proxy(..)
-- * Conversion from types to schemas
, WithSchema(..), unWithSchema
, FromSchema(..), fromSchema'
, ToSchema(..), toSchema'
, CustomFieldMapping(..)
, Underlying(..), UnderlyingConversion(..)
-- ** Mappings between fields
, Mapping(..), Mappings, MappingRight, MappingLeft
-- ** Field annotations
, AnnotatedSchema, AnnotationDomain, Annotation(..)
) where
import Mu.Schema.Annotations
import Mu.Schema.Class
import Mu.Schema.Definition
import Mu.Schema.Interpretation