{-# LANGUAGE NoImplicitPrelude #-} module Data.Morpheus.CodeGen.Internal.AST ( ModuleDefinition (..), CodeGenConfig (..), ServerTypeDefinition (..), GQLTypeDefinition (..), CONST, TypeKind (..), TypeName, TypeRef (..), TypeWrapper (..), unpackName, DerivingClass (..), FIELD_TYPE_WRAPPER (..), ServerConstructorDefinition (..), ServerFieldDefinition (..), Kind (..), ) where import Data.Morpheus.Types.Internal.AST ( CONST, Description, Directives, FieldName, TypeKind (..), TypeKind, TypeName, TypeName, TypeRef (..), TypeRef, TypeWrapper (..), Value, unpackName, ) import Relude data ModuleDefinition = ModuleDefinition { ModuleDefinition -> Text moduleName :: Text, ModuleDefinition -> [(Text, [Text])] imports :: [(Text, [Text])], ModuleDefinition -> [Text] extensions :: [Text], ModuleDefinition -> [ServerTypeDefinition] types :: [ServerTypeDefinition] } data FIELD_TYPE_WRAPPER = MONAD | SUBSCRIPTION | PARAMETRIZED | ARG TypeName | TAGGED_ARG FieldName TypeRef | GQL_WRAPPER TypeWrapper deriving (Int -> FIELD_TYPE_WRAPPER -> ShowS [FIELD_TYPE_WRAPPER] -> ShowS FIELD_TYPE_WRAPPER -> String (Int -> FIELD_TYPE_WRAPPER -> ShowS) -> (FIELD_TYPE_WRAPPER -> String) -> ([FIELD_TYPE_WRAPPER] -> ShowS) -> Show FIELD_TYPE_WRAPPER forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [FIELD_TYPE_WRAPPER] -> ShowS $cshowList :: [FIELD_TYPE_WRAPPER] -> ShowS show :: FIELD_TYPE_WRAPPER -> String $cshow :: FIELD_TYPE_WRAPPER -> String showsPrec :: Int -> FIELD_TYPE_WRAPPER -> ShowS $cshowsPrec :: Int -> FIELD_TYPE_WRAPPER -> ShowS Show) data DerivingClass = SHOW | GENERIC deriving (Int -> DerivingClass -> ShowS [DerivingClass] -> ShowS DerivingClass -> String (Int -> DerivingClass -> ShowS) -> (DerivingClass -> String) -> ([DerivingClass] -> ShowS) -> Show DerivingClass forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [DerivingClass] -> ShowS $cshowList :: [DerivingClass] -> ShowS show :: DerivingClass -> String $cshow :: DerivingClass -> String showsPrec :: Int -> DerivingClass -> ShowS $cshowsPrec :: Int -> DerivingClass -> ShowS Show) data ServerFieldDefinition = ServerFieldDefinition { ServerFieldDefinition -> Text fieldType :: Text, ServerFieldDefinition -> FieldName fieldName :: FieldName, ServerFieldDefinition -> [FIELD_TYPE_WRAPPER] wrappers :: [FIELD_TYPE_WRAPPER] } deriving (Int -> ServerFieldDefinition -> ShowS [ServerFieldDefinition] -> ShowS ServerFieldDefinition -> String (Int -> ServerFieldDefinition -> ShowS) -> (ServerFieldDefinition -> String) -> ([ServerFieldDefinition] -> ShowS) -> Show ServerFieldDefinition forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ServerFieldDefinition] -> ShowS $cshowList :: [ServerFieldDefinition] -> ShowS show :: ServerFieldDefinition -> String $cshow :: ServerFieldDefinition -> String showsPrec :: Int -> ServerFieldDefinition -> ShowS $cshowsPrec :: Int -> ServerFieldDefinition -> ShowS Show) data Kind = Scalar | Type deriving (Int -> Kind -> ShowS [Kind] -> ShowS Kind -> String (Int -> Kind -> ShowS) -> (Kind -> String) -> ([Kind] -> ShowS) -> Show Kind forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Kind] -> ShowS $cshowList :: [Kind] -> ShowS show :: Kind -> String $cshow :: Kind -> String showsPrec :: Int -> Kind -> ShowS $cshowsPrec :: Int -> Kind -> ShowS Show) data GQLTypeDefinition = GQLTypeDefinition { GQLTypeDefinition -> Kind gqlKind :: Kind, GQLTypeDefinition -> Maybe Text gqlTypeDescription :: Maybe Text, GQLTypeDefinition -> Map Text Text gqlTypeDescriptions :: Map Text Description, GQLTypeDefinition -> Map Text (Directives CONST) gqlTypeDirectives :: Map Text (Directives CONST), GQLTypeDefinition -> Map Text (Value CONST) gqlTypeDefaultValues :: Map Text (Value CONST) } deriving (Int -> GQLTypeDefinition -> ShowS [GQLTypeDefinition] -> ShowS GQLTypeDefinition -> String (Int -> GQLTypeDefinition -> ShowS) -> (GQLTypeDefinition -> String) -> ([GQLTypeDefinition] -> ShowS) -> Show GQLTypeDefinition forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [GQLTypeDefinition] -> ShowS $cshowList :: [GQLTypeDefinition] -> ShowS show :: GQLTypeDefinition -> String $cshow :: GQLTypeDefinition -> String showsPrec :: Int -> GQLTypeDefinition -> ShowS $cshowsPrec :: Int -> GQLTypeDefinition -> ShowS Show) data ServerConstructorDefinition = ServerConstructorDefinition { ServerConstructorDefinition -> TypeName constructorName :: TypeName, ServerConstructorDefinition -> [ServerFieldDefinition] constructorFields :: [ServerFieldDefinition] } deriving (Int -> ServerConstructorDefinition -> ShowS [ServerConstructorDefinition] -> ShowS ServerConstructorDefinition -> String (Int -> ServerConstructorDefinition -> ShowS) -> (ServerConstructorDefinition -> String) -> ([ServerConstructorDefinition] -> ShowS) -> Show ServerConstructorDefinition forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ServerConstructorDefinition] -> ShowS $cshowList :: [ServerConstructorDefinition] -> ShowS show :: ServerConstructorDefinition -> String $cshow :: ServerConstructorDefinition -> String showsPrec :: Int -> ServerConstructorDefinition -> ShowS $cshowsPrec :: Int -> ServerConstructorDefinition -> ShowS Show) data ServerTypeDefinition = ServerTypeDefinition { ServerTypeDefinition -> Text tName :: Text, ServerTypeDefinition -> [Text] typeParameters :: [Text], ServerTypeDefinition -> [ServerConstructorDefinition] tCons :: [ServerConstructorDefinition], ServerTypeDefinition -> TypeKind tKind :: TypeKind, ServerTypeDefinition -> [DerivingClass] derives :: [DerivingClass], ServerTypeDefinition -> Maybe GQLTypeDefinition gql :: Maybe GQLTypeDefinition } | ServerInterfaceDefinition TypeName TypeName TypeName deriving (Int -> ServerTypeDefinition -> ShowS [ServerTypeDefinition] -> ShowS ServerTypeDefinition -> String (Int -> ServerTypeDefinition -> ShowS) -> (ServerTypeDefinition -> String) -> ([ServerTypeDefinition] -> ShowS) -> Show ServerTypeDefinition forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ServerTypeDefinition] -> ShowS $cshowList :: [ServerTypeDefinition] -> ShowS show :: ServerTypeDefinition -> String $cshow :: ServerTypeDefinition -> String showsPrec :: Int -> ServerTypeDefinition -> ShowS $cshowsPrec :: Int -> ServerTypeDefinition -> ShowS Show) newtype CodeGenConfig = CodeGenConfig { CodeGenConfig -> Bool namespace :: Bool }