packages feed

hydra-ext-0.17.4: src/main/haskell/Hydra/Protobuf/Proto3.hs

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

-- | A model for Protocol Buffers v3 enum and message types, designed as a target for transformations.This model is loosely based on https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/type.proto, as well as the proto3 reference documentation

module Hydra.Protobuf.Proto3 where

import qualified Hydra.Core as Core
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci

-- | A top-level Protobuf definition, either an enum or a message type
data Definition =
  DefinitionEnum EnumDefinition |
  DefinitionMessage MessageDefinition
  deriving (Eq, Ord, Read, Show)

_Definition = Core.Name "hydra.protobuf.proto3.Definition"

_Definition_enum = Core.Name "enum"

_Definition_message = Core.Name "message"

-- | Enum type definition
data EnumDefinition =
  EnumDefinition {
    -- | Enum type name
    enumDefinitionName :: TypeName,
    -- | Enum value definitions
    enumDefinitionValues :: [EnumValue],
    -- | Protocol buffer options
    enumDefinitionOptions :: [Option]}
  deriving (Eq, Ord, Read, Show)

_EnumDefinition = Core.Name "hydra.protobuf.proto3.EnumDefinition"

_EnumDefinition_name = Core.Name "name"

_EnumDefinition_values = Core.Name "values"

_EnumDefinition_options = Core.Name "options"

-- | Enum value definition
data EnumValue =
  EnumValue {
    -- | Enum value name
    enumValueName :: EnumValueName,
    -- | Enum value number
    enumValueNumber :: Int,
    -- | Protocol buffer options
    enumValueOptions :: [Option]}
  deriving (Eq, Ord, Read, Show)

_EnumValue = Core.Name "hydra.protobuf.proto3.EnumValue"

_EnumValue_name = Core.Name "name"

_EnumValue_number = Core.Name "number"

_EnumValue_options = Core.Name "options"

-- | The name of an enum value, conventionally an upper-snake-case identifier
newtype EnumValueName =
  EnumValueName {
    unEnumValueName :: String}
  deriving (Eq, Ord, Read, Show)

_EnumValueName = Core.Name "hydra.protobuf.proto3.EnumValueName"

-- | A single field of a message type
data Field =
  Field {
    -- | The field name
    fieldName :: FieldName,
    -- | The field JSON name
    fieldJsonName :: (Maybe String),
    -- | The datatype of the field
    fieldType :: FieldType,
    -- | The field number
    fieldNumber :: Int,
    -- | The protocol buffer options
    fieldOptions :: [Option]}
  deriving (Eq, Ord, Read, Show)

_Field = Core.Name "hydra.protobuf.proto3.Field"

_Field_name = Core.Name "name"

_Field_jsonName = Core.Name "jsonName"

_Field_type = Core.Name "type"

_Field_number = Core.Name "number"

_Field_options = Core.Name "options"

-- | The name of a field
newtype FieldName =
  FieldName {
    unFieldName :: String}
  deriving (Eq, Ord, Read, Show)

_FieldName = Core.Name "hydra.protobuf.proto3.FieldName"

-- | The type of a message field: a map, a oneof group, a repeated field, or a simple field
data FieldType =
  FieldTypeMap MapType |
  FieldTypeOneof [Field] |
  FieldTypeRepeated SimpleType |
  FieldTypeSimple SimpleType
  deriving (Eq, Ord, Read, Show)

_FieldType = Core.Name "hydra.protobuf.proto3.FieldType"

_FieldType_map = Core.Name "map"

_FieldType_oneof = Core.Name "oneof"

_FieldType_repeated = Core.Name "repeated"

_FieldType_simple = Core.Name "simple"

-- | A path to a .proto file, as used in import statements
newtype FileReference =
  FileReference {
    unFileReference :: String}
  deriving (Eq, Ord, Read, Show)

_FileReference = Core.Name "hydra.protobuf.proto3.FileReference"

-- | The key and value types of a proto3 map field
data MapType =
  MapType {
    mapTypeKeys :: SimpleType,
    mapTypeValues :: SimpleType}
  deriving (Eq, Ord, Read, Show)

_MapType = Core.Name "hydra.protobuf.proto3.MapType"

_MapType_keys = Core.Name "keys"

_MapType_values = Core.Name "values"

-- | A protocol buffer message type
data MessageDefinition =
  MessageDefinition {
    -- | The fully qualified message name
    messageDefinitionName :: TypeName,
    -- | The list of fields
    messageDefinitionFields :: [Field],
    -- | The protocol buffer options
    messageDefinitionOptions :: [Option]}
  deriving (Eq, Ord, Read, Show)

_MessageDefinition = Core.Name "hydra.protobuf.proto3.MessageDefinition"

_MessageDefinition_name = Core.Name "name"

_MessageDefinition_fields = Core.Name "fields"

_MessageDefinition_options = Core.Name "options"

-- | A protocol buffer option, which can be attached to a message, field, enumeration, etc
data Option =
  Option {
    -- | The option's name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, `"map_entry"`. For custom options, it should be the fully-qualified name. For example, `"google.api.http"`.
    optionName :: String,
    -- | The option's value
    optionValue :: Value}
  deriving (Eq, Ord, Read, Show)

_Option = Core.Name "hydra.protobuf.proto3.Option"

_Option_name = Core.Name "name"

_Option_value = Core.Name "value"

-- | A Protobuf package name, i.e. the value of a package declaration
newtype PackageName =
  PackageName {
    unPackageName :: String}
  deriving (Eq, Ord, Read, Show)

_PackageName = Core.Name "hydra.protobuf.proto3.PackageName"

-- | A .proto file, usually containing one or more enum or message type definitions
data ProtoFile =
  ProtoFile {
    protoFilePackage :: PackageName,
    protoFileImports :: [FileReference],
    protoFileTypes :: [Definition],
    protoFileOptions :: [Option]}
  deriving (Eq, Ord, Read, Show)

_ProtoFile = Core.Name "hydra.protobuf.proto3.ProtoFile"

_ProtoFile_package = Core.Name "package"

_ProtoFile_imports = Core.Name "imports"

_ProtoFile_types = Core.Name "types"

_ProtoFile_options = Core.Name "options"

-- | One of several Proto3 scalar types
data ScalarType =
  ScalarTypeBool |
  ScalarTypeBytes |
  ScalarTypeDouble |
  ScalarTypeFixed32 |
  ScalarTypeFixed64 |
  ScalarTypeFloat |
  ScalarTypeInt32 |
  ScalarTypeInt64 |
  ScalarTypeSfixed32 |
  ScalarTypeSfixed64 |
  ScalarTypeSint32 |
  ScalarTypeSint64 |
  ScalarTypeString |
  ScalarTypeUint32 |
  ScalarTypeUint64
  deriving (Eq, Ord, Read, Show)

_ScalarType = Core.Name "hydra.protobuf.proto3.ScalarType"

_ScalarType_bool = Core.Name "bool"

_ScalarType_bytes = Core.Name "bytes"

_ScalarType_double = Core.Name "double"

_ScalarType_fixed32 = Core.Name "fixed32"

_ScalarType_fixed64 = Core.Name "fixed64"

_ScalarType_float = Core.Name "float"

_ScalarType_int32 = Core.Name "int32"

_ScalarType_int64 = Core.Name "int64"

_ScalarType_sfixed32 = Core.Name "sfixed32"

_ScalarType_sfixed64 = Core.Name "sfixed64"

_ScalarType_sint32 = Core.Name "sint32"

_ScalarType_sint64 = Core.Name "sint64"

_ScalarType_string = Core.Name "string"

_ScalarType_uint32 = Core.Name "uint32"

_ScalarType_uint64 = Core.Name "uint64"

-- | A scalar type or a reference to an enum type or message type
data SimpleType =
  SimpleTypeReference TypeName |
  SimpleTypeScalar ScalarType
  deriving (Eq, Ord, Read, Show)

_SimpleType = Core.Name "hydra.protobuf.proto3.SimpleType"

_SimpleType_reference = Core.Name "reference"

_SimpleType_scalar = Core.Name "scalar"

-- | The local name of an enum type or message type
newtype TypeName =
  TypeName {
    unTypeName :: String}
  deriving (Eq, Ord, Read, Show)

_TypeName = Core.Name "hydra.protobuf.proto3.TypeName"

-- | A reference to an enum type or message type
newtype TypeReference =
  TypeReference {
    unTypeReference :: String}
  deriving (Eq, Ord, Read, Show)

_TypeReference = Core.Name "hydra.protobuf.proto3.TypeReference"

-- | A scalar value
data Value =
  ValueBoolean Bool |
  ValueString String
  deriving (Eq, Ord, Read, Show)

_Value = Core.Name "hydra.protobuf.proto3.Value"

_Value_boolean = Core.Name "boolean"

_Value_string = Core.Name "string"