morpheus-graphql-0.0.1: src/Data/Morpheus/Parser/Mutation.hs
{-# LANGUAGE OverloadedStrings #-}
module Data.Morpheus.Parser.Mutation
( mutation
) where
import Control.Applicative ((<|>))
import Data.Attoparsec.Text (Parser, skipSpace, string, try)
import Data.Morpheus.Parser.Body (entries)
import Data.Morpheus.Parser.Primitive (getPosition, token)
import Data.Morpheus.Parser.RootHead (rootHeadArguments)
import Data.Morpheus.Types.Query.Operator (Operator (..), RawOperator)
mutation :: Parser RawOperator
mutation = do
pos <- getPosition
_ <- string "mutation "
skipSpace
name <- token
variables <- try (skipSpace *> rootHeadArguments) <|> pure []
skipSpace
sel <- entries
pure $ Mutation name variables sel pos