packages feed

hydra-ext-0.18.0: src/main/haskell/Hydra/Ext/Avro/Environment.hs

-- Note: this is an automatically generated file. Do not edit.

-- | Type definitions for the Avro code generation environment

module Hydra.Ext.Avro.Environment where

import qualified Hydra.Core.Coders as Coders
import qualified Hydra.Core.Errors as Errors
import qualified Hydra.Core.Json.Model as JsonModel
import qualified Hydra.Core.Model as Model
import qualified Hydra.Ext.Avro.Schema as Schema
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
import qualified Data.Scientific as Sci
import Data.Void
import qualified Data.Map as M

-- | Environment for Avro-to-Hydra code generation
data AvroEnvironment =
  AvroEnvironment {
    -- | Named adapters for previously processed schemas
    avroEnvironmentNamedAdapters :: (M.Map AvroQualifiedName (Coders.Adapter Schema.Schema Model.Type JsonModel.Value Model.Term Errors.Error)),
    -- | The current Avro namespace
    avroEnvironmentNamespace :: (Maybe String),
    -- | Generated Hydra elements
    avroEnvironmentElements :: (M.Map Model.Name Model.Binding)}

_AvroEnvironment = Model.Name "hydra.ext.avro.environment.AvroEnvironment"

_AvroEnvironment_namedAdapters = Model.Name "namedAdapters"

_AvroEnvironment_namespace = Model.Name "namespace"

_AvroEnvironment_elements = Model.Name "elements"

-- | An Avro foreign key annotation linking a field to another type
data AvroForeignKey =
  AvroForeignKey {
    -- | The Hydra type name referenced by this foreign key
    avroForeignKeyTypeName :: Model.Name,
    -- | A function which constructs element names from string values
    avroForeignKeyConstructor :: (String -> Model.Name)}

_AvroForeignKey = Model.Name "hydra.ext.avro.environment.AvroForeignKey"

_AvroForeignKey_typeName = Model.Name "typeName"

_AvroForeignKey_constructor = Model.Name "constructor"

-- | An Avro primary key annotation identifying the element name field
data AvroPrimaryKey =
  AvroPrimaryKey {
    -- | The name of the primary key field
    avroPrimaryKeyFieldName :: Model.Name,
    -- | A function which constructs element names from string values
    avroPrimaryKeyConstructor :: (String -> Model.Name)}

_AvroPrimaryKey = Model.Name "hydra.ext.avro.environment.AvroPrimaryKey"

_AvroPrimaryKey_fieldName = Model.Name "fieldName"

_AvroPrimaryKey_constructor = Model.Name "constructor"

-- | An Avro qualified name with optional namespace
data AvroQualifiedName =
  AvroQualifiedName {
    -- | The optional namespace
    avroQualifiedNameNamespace :: (Maybe String),
    -- | The local name
    avroQualifiedNameName :: String}
  deriving (Eq, Ord, Read, Show)

_AvroQualifiedName = Model.Name "hydra.ext.avro.environment.AvroQualifiedName"

_AvroQualifiedName_namespace = Model.Name "namespace"

_AvroQualifiedName_name = Model.Name "name"

-- | Environment for Hydra-to-Avro encoding, tracking which named types have been emitted
data EncodeEnvironment =
  EncodeEnvironment {
    -- | All named types available for reference
    encodeEnvironmentTypeMap :: (M.Map Model.Name Model.Type),
    -- | Adapters for types that have already been fully emitted (emit references for these)
    encodeEnvironmentEmitted :: (M.Map Model.Name (Coders.Adapter Model.Type Schema.Schema Model.Term JsonModel.Value Errors.Error))}

_EncodeEnvironment = Model.Name "hydra.ext.avro.environment.EncodeEnvironment"

_EncodeEnvironment_typeMap = Model.Name "typeMap"

_EncodeEnvironment_emitted = Model.Name "emitted"