morpheus-graphql-0.2.0: src/Data/Morpheus/Schema/EnumValue.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
module Data.Morpheus.Schema.EnumValue
( EnumValue(..)
, createEnumValue
, isEnumOf
) where
import Data.Aeson (FromJSON (..))
import Data.Morpheus.Kind (OBJECT)
import Data.Morpheus.Types.GQLType (GQLType (KIND, __typeName, __typeVisibility))
import Data.Text (Text)
import GHC.Generics
instance GQLType EnumValue where
type KIND EnumValue = OBJECT
__typeName = const "__EnumValue"
__typeVisibility = const False
data EnumValue = EnumValue
{ name :: Text
, description :: Maybe Text
, isDeprecated :: Bool
, deprecationReason :: Maybe Text
} deriving (Show, Generic, FromJSON)
createEnumValue :: Text -> EnumValue
createEnumValue enumName =
EnumValue {name = enumName, description = Nothing, isDeprecated = False, deprecationReason = Nothing}
isEnumValue :: Text -> EnumValue -> Bool
isEnumValue inpName enum = inpName == name enum
isEnumOf :: Text -> [EnumValue] -> Bool
isEnumOf enumName enumValues =
case filter (isEnumValue enumName) enumValues of
[] -> False
_ -> True