avro-0.3.3.0: Avro serialization support for Haskell

Safe HaskellNone
LanguageHaskell2010

Data.Avro.Deriving

Contents

Synopsis

Deriving options

data DeriveOptions Source #

Derives Avro from a given schema file. Generates data types, FromAvro and ToAvro instances.

Constructors

DeriveOptions 

Fields

defaultDeriveOptions :: DeriveOptions Source #

Default deriving options

defaultDeriveOptions = DeriveOptions
  { fieldNameBuilder = mkPrefixedFieldName
  , fieldStrictness  = mkLazyField
  }

mkPrefixedFieldName :: TypeName -> Field -> Text Source #

Generates a field name that is prefixed with the type name.

For example, if the schema defines type Person that has a field firstName, then the generated Haskell type will be like

Person { personFirstName :: Text }

mkAsIsFieldName :: TypeName -> Field -> Text Source #

Generates a field name that matches the field name in schema (sanitised for Haskell, so first letter is lower cased)

For example, if the schema defines type Person that has a field firstName, then the generated Haskell type will be like

Person { firstName :: Text }

You may want to enable DuplicateRecordFields if you want to use this method.

mkLazyField :: TypeName -> Field -> (FieldStrictness, FieldUnpackedness) Source #

Marks any field as non-strict in the generated data types.

mkStrictPrimitiveField :: TypeName -> Field -> (FieldStrictness, FieldUnpackedness) Source #

Make a field strict and unpacked if it has a primitive representation. Primitive types are types which GHC has either a static or an unlifted representation: `()`, Boolean, Int32, Int64, Float, Double.

Deriving Haskell types from Avro schema

makeSchema :: FilePath -> Q Exp Source #

Generates the value of type Schema that it can later be used with deriveAvro' or deriveAvroWithOptions'.

mySchema :: Schema
mySchema = $(makeSchema "schemas/my-schema.avsc")

deriveAvroWithOptions :: DeriveOptions -> FilePath -> Q [Dec] Source #

Generates Haskell classes and FromAvro and ToAvro instances given the Avro schema file

deriveAvroWithOptions' :: DeriveOptions -> Schema -> Q [Dec] Source #

Generates Haskell classes and FromAvro and ToAvro instances given the Avro schema

deriveFromAvroWithOptions :: DeriveOptions -> FilePath -> Q [Dec] Source #

Derives "read only" Avro from a given schema file. Generates data types and FromAvro.

deriveAvro :: FilePath -> Q [Dec] Source #

Same as deriveAvroWithOptions but uses defaultDeriveOptions

deriveAvro' = deriveAvroWithOptions' defaultDeriveOptions

deriveFromAvro :: FilePath -> Q [Dec] Source #

Derives "read only" Avro from a given schema file. Generates data types and FromAvro.