diff options
| author | Eugen Wissner <belka@caraus.de> | 2023-04-20 12:51:18 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2023-04-20 12:51:18 +0200 |
| commit | 4bd243b7ec9e564e82d53d1b5ab4076f33888d20 (patch) | |
| tree | 0668ede1e5f1f3045b9914e5b9c11d0e2928a3a8 /src/Language/GraphQL | |
| parent | 1b9d8af93210a4d1a49a03b660670ec35fbe052f (diff) | |
| download | graphql-spice-4bd243b7ec9e564e82d53d1b5ab4076f33888d20.tar.gz | |
Export resolver exceptions
Diffstat (limited to 'src/Language/GraphQL')
| -rw-r--r-- | src/Language/GraphQL/Resolver.hs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/Language/GraphQL/Resolver.hs b/src/Language/GraphQL/Resolver.hs index dbf9a6a..c3d6660 100644 --- a/src/Language/GraphQL/Resolver.hs +++ b/src/Language/GraphQL/Resolver.hs @@ -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 |
