Move Core module out of AST

This commit is contained in:
Eugen Wissner 2020-06-30 10:28:10 +02:00
parent 705e506c13
commit 8b164c4844
8 changed files with 23 additions and 27 deletions

View File

@ -7,9 +7,15 @@ and this project adheres to
[Haskell Package Versioning Policy](https://pvp.haskell.org/). [Haskell Package Versioning Policy](https://pvp.haskell.org/).
## [Unreleased] ## [Unreleased]
## Added
- `AST` reexports `AST.Parser`.
## Changed ## Changed
- `Trans.ActionT` is renamed to `ResolverT`. Since `Type.Out.Resolver` has gone - `Trans.ActionT` is renamed to `ResolverT`. Since `Type.Out.Resolver` has gone
it is a better name for GraphQL resolvers. it is a better name for GraphQL resolvers.
- `AST.Core` contained only `Arguments` which was moved to `Type.Definition`.
`AST` provides now only functionality related to parsing and encoding, as it
should be.
## Removed ## Removed
- `Type.Out.Resolver`: It is an unneeded layer of complexity. Resolvers are a - `Type.Out.Resolver`: It is an unneeded layer of complexity. Resolvers are a

View File

@ -1,6 +1,8 @@
-- | Target AST for Parser. -- | Target AST for parser.
module Language.GraphQL.AST module Language.GraphQL.AST
( module Language.GraphQL.AST.Document ( module Language.GraphQL.AST.Document
, module Language.GraphQL.AST.Parser
) where ) where
import Language.GraphQL.AST.Document import Language.GraphQL.AST.Document
import Language.GraphQL.AST.Parser

View File

@ -1,19 +0,0 @@
-- | This is the AST meant to be executed.
module Language.GraphQL.AST.Core
( Arguments(..)
) where
import Data.HashMap.Strict (HashMap)
import Language.GraphQL.AST (Name)
import Language.GraphQL.Type.Definition
-- | Argument list.
newtype Arguments = Arguments (HashMap Name Value)
deriving (Eq, Show)
instance Semigroup Arguments where
(Arguments x) <> (Arguments y) = Arguments $ x <> y
instance Monoid Arguments where
mempty = Arguments mempty

View File

@ -19,7 +19,6 @@ import Data.Maybe (fromMaybe)
import Data.Sequence (Seq(..)) import Data.Sequence (Seq(..))
import Data.Text (Text) import Data.Text (Text)
import Language.GraphQL.AST (Name) import Language.GraphQL.AST (Name)
import Language.GraphQL.AST.Core
import Language.GraphQL.Error import Language.GraphQL.Error
import Language.GraphQL.Execute.Coerce import Language.GraphQL.Execute.Coerce
import qualified Language.GraphQL.Execute.Transform as Transform import qualified Language.GraphQL.Execute.Transform as Transform
@ -36,7 +35,7 @@ resolveFieldValue :: Monad m
-> ResolverT m a -> ResolverT m a
-> m (Either Text a) -> m (Either Text a)
resolveFieldValue result args = resolveFieldValue result args =
flip runReaderT (Context {arguments = Arguments args, values = result}) flip runReaderT (Context {arguments = Type.Arguments args, values = result})
. runExceptT . runExceptT
. runResolverT . runResolverT

View File

@ -44,7 +44,6 @@ import Data.Text (Text)
import qualified Data.Text as Text import qualified Data.Text as Text
import qualified Language.GraphQL.AST as Full import qualified Language.GraphQL.AST as Full
import Language.GraphQL.AST (Name) import Language.GraphQL.AST (Name)
import Language.GraphQL.AST.Core
import qualified Language.GraphQL.Execute.Coerce as Coerce import qualified Language.GraphQL.Execute.Coerce as Coerce
import Language.GraphQL.Type.Directive (Directive(..)) import Language.GraphQL.Type.Directive (Directive(..))
import qualified Language.GraphQL.Type.Directive as Directive import qualified Language.GraphQL.Type.Directive as Directive
@ -341,7 +340,7 @@ directives :: [Full.Directive] -> State (Replacement m) [Directive]
directives = traverse directive directives = traverse directive
where where
directive (Full.Directive directiveName directiveArguments) directive (Full.Directive directiveName directiveArguments)
= Directive directiveName . Arguments = Directive directiveName . Type.Arguments
<$> foldM go HashMap.empty directiveArguments <$> foldM go HashMap.empty directiveArguments
go arguments (Full.Argument name value') = do go arguments (Full.Argument name value') = do
substitutedValue <- value value' substitutedValue <- value value'

View File

@ -15,7 +15,6 @@ import qualified Data.HashMap.Strict as HashMap
import Data.Maybe (fromMaybe) import Data.Maybe (fromMaybe)
import Data.Text (Text) import Data.Text (Text)
import Language.GraphQL.AST (Name) import Language.GraphQL.AST (Name)
import Language.GraphQL.AST.Core
import Language.GraphQL.Type.Definition import Language.GraphQL.Type.Definition
import Prelude hiding (lookup) import Prelude hiding (lookup)

View File

@ -2,7 +2,8 @@
-- | Types that can be used as both input and output types. -- | Types that can be used as both input and output types.
module Language.GraphQL.Type.Definition module Language.GraphQL.Type.Definition
( EnumType(..) ( Arguments(..)
, EnumType(..)
, EnumValue(..) , EnumValue(..)
, ScalarType(..) , ScalarType(..)
, Subs , Subs
@ -40,6 +41,16 @@ instance IsString Value where
-- and the value is the variable value. -- and the value is the variable value.
type Subs = HashMap Name Value type Subs = HashMap Name Value
-- | Argument list.
newtype Arguments = Arguments (HashMap Name Value)
deriving (Eq, Show)
instance Semigroup Arguments where
(Arguments x) <> (Arguments y) = Arguments $ x <> y
instance Monoid Arguments where
mempty = Arguments mempty
-- | Scalar type definition. -- | Scalar type definition.
-- --
-- The leaf values of any request and input values to arguments are Scalars (or -- The leaf values of any request and input values to arguments are Scalars (or

View File

@ -7,7 +7,6 @@ module Language.GraphQL.Type.Directive
import qualified Data.HashMap.Strict as HashMap import qualified Data.HashMap.Strict as HashMap
import Language.GraphQL.AST (Name) import Language.GraphQL.AST (Name)
import Language.GraphQL.AST.Core
import Language.GraphQL.Type.Definition import Language.GraphQL.Type.Definition
-- | Directive. -- | Directive.