Export resolver exceptions

This commit is contained in:
2023-04-20 12:51:18 +02:00
parent 1b9d8af932
commit 4bd243b7ec
4 changed files with 9 additions and 8 deletions

View File

@ -6,13 +6,14 @@
-- | Helper functions and exceptions to write resolvers.
module Language.GraphQL.Resolver
( argument
( ServerException(..)
, argument
, defaultResolver
) where
import Control.Monad.Catch (Exception(..), MonadCatch(..), MonadThrow(..))
import Control.Monad.Trans.Reader (ReaderT, asks)
import Data.HashMap.Strict ((!))
import qualified Data.HashMap.Strict as HashMap
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Typeable (cast)
@ -49,7 +50,8 @@ defaultResolver :: MonadCatch m => Name -> Type.Resolve m
defaultResolver fieldName = do
values' <- asks Type.values
case values' of
Type.Object objectValue -> pure $ objectValue ! fieldName
Type.Object objectValue
| Just result <- HashMap.lookup fieldName objectValue -> pure result
_nonObject -> throwM $ FieldNotResolvedException fieldName
-- | Takes an argument name, validates that the argument exists, and optionally