{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TypeOperators #-} module Data.Morpheus.Schema.Type ( Type(..) , DeprecationArgs(..) ) where import Data.Data (Data) import Data.Morpheus.Schema.EnumValue (EnumValue) import qualified Data.Morpheus.Schema.Field as F (Field (..)) import qualified Data.Morpheus.Schema.InputValue as I (InputValue (..)) import Data.Morpheus.Schema.TypeKind (TypeKind) import Data.Morpheus.Types.Describer (EnumOf, WithDeprecationArgs (..)) import Data.Text (Text) import GHC.Generics (Generic) data Type = Type { kind :: EnumOf TypeKind , name :: Maybe Text , description :: Maybe Text , fields :: Maybe (WithDeprecationArgs [F.Field Type]) , ofType :: Maybe Type , interfaces :: Maybe [Type] , possibleTypes :: Maybe [Type] , enumValues :: Maybe (WithDeprecationArgs [EnumValue]) , inputFields :: Maybe [I.InputValue Type] } deriving (Show, Data, Generic) newtype DeprecationArgs = DeprecationArgs { includeDeprecated :: Maybe Bool } deriving (Show, Data, Generic)