module Language.GraphQL
( graphql
, graphqlSubs
) where
import qualified Data.Aeson as Aeson
import Data.List.NonEmpty (NonEmpty)
import Data.HashMap.Strict (HashMap)
import Data.Text (Text)
import Language.GraphQL.Error
import Language.GraphQL.Execute
import Language.GraphQL.AST.Parser
import qualified Language.GraphQL.Schema as Schema
import Text.Megaparsec (parse)
graphql :: Monad m
=> HashMap Text (NonEmpty (Schema.Resolver m))
-> Text
-> m Aeson.Value
graphql = flip graphqlSubs mempty
graphqlSubs :: Monad m
=> HashMap Text (NonEmpty (Schema.Resolver m))
-> Schema.Subs
-> Text
-> m Aeson.Value
graphqlSubs schema f
= either parseError (execute schema f)
. parse document ""