{-# 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