module Language.GraphQL
( graphql
, graphqlSubs
) where
import qualified Data.Aeson as Aeson
import Data.HashMap.Strict (HashMap)
import Data.Text (Text)
import Language.GraphQL.AST.Document
import Language.GraphQL.AST.Parser
import Language.GraphQL.Error
import Language.GraphQL.Execute
import Language.GraphQL.Execute.Coerce
import Language.GraphQL.Type.Schema
import Text.Megaparsec (parse)
graphql :: Monad m
=> Schema m
-> Text
-> m Aeson.Value
graphql = flip graphqlSubs (mempty :: Aeson.Object)
graphqlSubs :: (Monad m, VariableValue a)
=> Schema m
-> HashMap Name a
-> Text
-> m Aeson.Value
graphqlSubs schema f
= either parseError (execute schema f)
. parse document ""