forked from OSS/graphql-spice
Export resolver exceptions
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user