morpheus-graphql-core-0.12.0: src/Data/Morpheus/Schema/Directives.hs
{-# LANGUAGE OverloadedStrings #-}
module Data.Morpheus.Schema.Directives (defaultDirectives) where
import Data.Morpheus.Internal.Utils
( singleton,
)
import Data.Morpheus.Types.Internal.AST
( ArgumentsDefinition (..),
DirectiveDefinition (..),
DirectiveLocation (..),
TypeWrapper (..),
createField,
)
defaultDirectives :: [DirectiveDefinition]
defaultDirectives =
[ DirectiveDefinition
{ directiveDefinitionName = "skip",
directiveDefinitionDescription = Just "Directs the executor to skip this field or fragment when the `if` argument is true.",
directiveDefinitionLocations = [FIELD, FRAGMENT_SPREAD, INLINE_FRAGMENT],
directiveDefinitionArgs = argumentsIf
},
DirectiveDefinition
{ directiveDefinitionName = "include",
directiveDefinitionDescription = Just "Directs the executor to include this field or fragment only when the `if` argument is true.",
directiveDefinitionLocations = [FIELD, FRAGMENT_SPREAD, INLINE_FRAGMENT],
directiveDefinitionArgs = argumentsIf
},
DirectiveDefinition
{ directiveDefinitionName = "deprecated",
directiveDefinitionDescription = Just "Marks an element of a GraphQL schema as no longer supported.",
directiveDefinitionLocations = [FIELD_DEFINITION, ENUM_VALUE],
directiveDefinitionArgs =
singleton $
createField
NoArguments
"reason"
([TypeMaybe], "String")
}
]
argumentsIf :: ArgumentsDefinition
argumentsIf = singleton $ createField NoArguments "if" ([], "Boolean")