{-# LANGUAGE NoImplicitPrelude #-}
module Data.Morpheus.Server.Types.Internal
( TypeData (..),
mkTypeData,
stripConstructorNamespace,
stripFieldNamespace,
)
where
import Data.Char (toLower)
import Data.Morpheus.Server.Types.TypeName (TypeFingerprint (..))
import Data.Morpheus.Types.Internal.AST
( TypeName,
TypeWrapper (..),
mkBaseType,
)
import Data.Text (length)
import Relude hiding (Seq, Undefined, intercalate, length)
data TypeData = TypeData
{ TypeData -> TypeName
gqlTypeName :: TypeName,
TypeData -> TypeWrapper
gqlWrappers :: TypeWrapper,
TypeData -> TypeFingerprint
gqlFingerprint :: TypeFingerprint
}
deriving (Int -> TypeData -> ShowS
[TypeData] -> ShowS
TypeData -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TypeData] -> ShowS
$cshowList :: [TypeData] -> ShowS
show :: TypeData -> String
$cshow :: TypeData -> String
showsPrec :: Int -> TypeData -> ShowS
$cshowsPrec :: Int -> TypeData -> ShowS
Show)
mkTypeData :: TypeName -> a -> TypeData
mkTypeData :: forall a. TypeName -> a -> TypeData
mkTypeData TypeName
name a
_ =
TypeData
{ gqlTypeName :: TypeName
gqlTypeName = TypeName
name,
gqlFingerprint :: TypeFingerprint
gqlFingerprint = TypeName -> TypeFingerprint
InternalFingerprint TypeName
name,
gqlWrappers :: TypeWrapper
gqlWrappers = TypeWrapper
mkBaseType
}
dropPrefix :: Text -> String -> String
dropPrefix :: Text -> ShowS
dropPrefix Text
name = forall a. Int -> [a] -> [a]
drop (Text -> Int
length Text
name)
stripConstructorNamespace :: Text -> String -> String
stripConstructorNamespace :: Text -> ShowS
stripConstructorNamespace = Text -> ShowS
dropPrefix
stripFieldNamespace :: Text -> String -> String
stripFieldNamespace :: Text -> ShowS
stripFieldNamespace Text
prefix = ShowS
__uncapitalize forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ShowS
dropPrefix Text
prefix
where
__uncapitalize :: ShowS
__uncapitalize [] = []
__uncapitalize (Char
x : String
xs) = Char -> Char
toLower Char
x forall a. a -> [a] -> [a]
: String
xs