{-# LANGUAGE NoImplicitPrelude #-} module Data.Morpheus.Client.Internal.Types ( ClientTypeDefinition (..), TypeNameTH (..), ClientDefinition (..), ClientConsD, ) where import Data.Morpheus.Types.Internal.AST ( ANY, ConsD (..), FieldDefinition, FieldName, TypeKind, TypeName, VALID, ) import Relude data TypeNameTH = TypeNameTH { TypeNameTH -> [FieldName] namespace :: [FieldName], TypeNameTH -> TypeName typename :: TypeName } deriving (Int -> TypeNameTH -> ShowS [TypeNameTH] -> ShowS TypeNameTH -> String (Int -> TypeNameTH -> ShowS) -> (TypeNameTH -> String) -> ([TypeNameTH] -> ShowS) -> Show TypeNameTH forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [TypeNameTH] -> ShowS $cshowList :: [TypeNameTH] -> ShowS show :: TypeNameTH -> String $cshow :: TypeNameTH -> String showsPrec :: Int -> TypeNameTH -> ShowS $cshowsPrec :: Int -> TypeNameTH -> ShowS Show) type ClientConsD c = ConsD (FieldDefinition c VALID) data ClientTypeDefinition = ClientTypeDefinition { ClientTypeDefinition -> TypeNameTH clientTypeName :: TypeNameTH, ClientTypeDefinition -> [ClientConsD ANY] clientCons :: [ClientConsD ANY], ClientTypeDefinition -> TypeKind clientKind :: TypeKind } deriving (Int -> ClientTypeDefinition -> ShowS [ClientTypeDefinition] -> ShowS ClientTypeDefinition -> String (Int -> ClientTypeDefinition -> ShowS) -> (ClientTypeDefinition -> String) -> ([ClientTypeDefinition] -> ShowS) -> Show ClientTypeDefinition forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ClientTypeDefinition] -> ShowS $cshowList :: [ClientTypeDefinition] -> ShowS show :: ClientTypeDefinition -> String $cshow :: ClientTypeDefinition -> String showsPrec :: Int -> ClientTypeDefinition -> ShowS $cshowsPrec :: Int -> ClientTypeDefinition -> ShowS Show) data ClientDefinition = ClientDefinition { ClientDefinition -> Maybe ClientTypeDefinition clientArguments :: Maybe ClientTypeDefinition, ClientDefinition -> [ClientTypeDefinition] clientTypes :: [ClientTypeDefinition] } deriving (Int -> ClientDefinition -> ShowS [ClientDefinition] -> ShowS ClientDefinition -> String (Int -> ClientDefinition -> ShowS) -> (ClientDefinition -> String) -> ([ClientDefinition] -> ShowS) -> Show ClientDefinition forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ClientDefinition] -> ShowS $cshowList :: [ClientDefinition] -> ShowS show :: ClientDefinition -> String $cshow :: ClientDefinition -> String showsPrec :: Int -> ClientDefinition -> ShowS $cshowsPrec :: Int -> ClientDefinition -> ShowS Show)