diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-06-29 13:14:23 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-06-29 13:14:23 +0200 |
| commit | 705e506c13b6c0f67ddf0195fa0d3256e7e4f9c3 (patch) | |
| tree | 58e41bdbd246fc5b947a848283d6688c7ddf636b /src/Language/GraphQL/Type | |
| parent | 9798b08b4c25685e92a7f537f68f35994a5a4899 (diff) | |
| download | graphql-705e506c13b6c0f67ddf0195fa0d3256e7e4f9c3.tar.gz | |
Combine Resolver and ActionT in ResolverT
Diffstat (limited to 'src/Language/GraphQL/Type')
| -rw-r--r-- | src/Language/GraphQL/Type/Out.hs | 17 | ||||
| -rw-r--r-- | src/Language/GraphQL/Type/Schema.hs | 6 |
2 files changed, 6 insertions, 17 deletions
diff --git a/src/Language/GraphQL/Type/Out.hs b/src/Language/GraphQL/Type/Out.hs index 856c4f8..0f14ce8 100644 --- a/src/Language/GraphQL/Type/Out.hs +++ b/src/Language/GraphQL/Type/Out.hs @@ -10,7 +10,6 @@ module Language.GraphQL.Type.Out ( Field(..) , InterfaceType(..) , ObjectType(..) - , Resolver(..) , Type(..) , UnionType(..) , isNonNullType @@ -29,21 +28,12 @@ import Language.GraphQL.Trans import Language.GraphQL.Type.Definition import qualified Language.GraphQL.Type.In as In --- | Resolves a 'Field' into an @Aeson.@'Data.Aeson.Types.Object' with error --- information (if an error has occurred). @m@ is an arbitrary monad, usually --- 'IO'. --- --- Resolving a field can result in a leaf value or an object, which is --- represented as a list of nested resolvers, used to resolve the fields of that --- object. -data Resolver m = Resolver (Field m) (ActionT m Value) - -- | Object type definition. -- --- Almost all of the GraphQL types you define will be object types. Object --- types have a name, but most importantly describe their fields. +-- Almost all of the GraphQL types you define will be object types. Object +-- types have a name, but most importantly describe their fields. data ObjectType m = ObjectType - Name (Maybe Text) [InterfaceType m] (HashMap Name (Resolver m)) + Name (Maybe Text) [InterfaceType m] (HashMap Name (Field m)) instance forall a. Eq (ObjectType a) where (ObjectType this _ _ _) == (ObjectType that _ _ _) = this == that @@ -73,6 +63,7 @@ data Field m = Field (Maybe Text) -- ^ Description. (Type m) -- ^ Field type. (HashMap Name In.Argument) -- ^ Arguments. + (ResolverT m Value) -- ^ Resolver. -- | These types may be used as output types as the result of fields. -- diff --git a/src/Language/GraphQL/Type/Schema.hs b/src/Language/GraphQL/Type/Schema.hs index 4d7b9eb..4420cbb 100644 --- a/src/Language/GraphQL/Type/Schema.hs +++ b/src/Language/GraphQL/Type/Schema.hs @@ -61,7 +61,7 @@ collectReferencedTypes schema = collect traverser typeName element foundTypes | HashMap.member typeName foundTypes = foundTypes | otherwise = traverser $ HashMap.insert typeName element foundTypes - visitFields (Out.Field _ outputType arguments) foundTypes + visitFields (Out.Field _ outputType arguments _) foundTypes = traverseOutputType outputType $ foldr visitArguments foundTypes arguments visitArguments (In.Argument _ inputType _) = traverseInputType inputType @@ -96,9 +96,8 @@ collectReferencedTypes schema = let (Definition.EnumType typeName _ _) = enumType in collect Prelude.id typeName (EnumType enumType) traverseObjectType objectType foundTypes = - let (Out.ObjectType typeName _ interfaces resolvers) = objectType + let (Out.ObjectType typeName _ interfaces fields) = objectType element = ObjectType objectType - fields = extractObjectField <$> resolvers traverser = polymorphicTraverser interfaces fields in collect traverser typeName element foundTypes traverseInterfaceType interfaceType foundTypes = @@ -109,4 +108,3 @@ collectReferencedTypes schema = polymorphicTraverser interfaces fields = flip (foldr visitFields) fields . flip (foldr traverseInterfaceType) interfaces - extractObjectField (Out.Resolver field _) = field |
