From 06c5e1e4f8c6cf83dfdd56dcc7f3b6f439e88c52 Mon Sep 17 00:00:00 2001 From: M Aswin Kishore <60577077+mak626@users.noreply.github.com> Date: Fri, 22 Mar 2024 15:10:29 +0530 Subject: [PATCH] feat: Added type conversion when using @requires --- examples/inaccessible.py | 8 +++++--- examples/override.py | 7 +++---- graphene_federation/entity.py | 8 +++++++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/examples/inaccessible.py b/examples/inaccessible.py index 07ebc98..aac4f16 100644 --- a/examples/inaccessible.py +++ b/examples/inaccessible.py @@ -1,12 +1,12 @@ import graphene from graphene_federation import ( - LATEST_VERSION, inaccessible, + LATEST_VERSION, + inaccessible, external, provides, key, override, - shareable, ) from graphene_federation import build_schema @@ -64,7 +64,9 @@ class Query(graphene.ObjectType): schema = build_schema( - Query, federation_version=LATEST_VERSION, types=(ReviewInterface, SearchResult, Review) + Query, + federation_version=LATEST_VERSION, + types=(ReviewInterface, SearchResult, Review), ) query = """ diff --git a/examples/override.py b/examples/override.py index b076d35..0c9bf67 100644 --- a/examples/override.py +++ b/examples/override.py @@ -1,12 +1,11 @@ import graphene from graphene_federation import ( - LATEST_VERSION, build_schema, - shareable, - external, + LATEST_VERSION, + build_schema, + inaccessible, key, override, - inaccessible, ) diff --git a/graphene_federation/entity.py b/graphene_federation/entity.py index 38322cb..74330d7 100644 --- a/graphene_federation/entity.py +++ b/graphene_federation/entity.py @@ -3,7 +3,7 @@ from typing import Any from typing import Dict, Type -from graphene import Field, List, NonNull, ObjectType, Union +from graphene import Enum, Field, List, NonNull, ObjectType, Scalar, Union from graphene.types.schema import TypeMap from graphene_directives import Schema from graphene_directives.utils import has_non_field_attribute @@ -123,6 +123,12 @@ def resolve_entities(self, info, representations, sub_field_resolution=False): model_arguments[model_field] = EntityQuery.resolve_entities( self, info, representations=value, sub_field_resolution=True ) + elif isinstance(field, Scalar) and getattr( + field, "parse_value", None + ): + model_arguments[model_field] = field.parse_value(value) + elif isinstance(field, Enum): + model_arguments[model_field] = field._meta.enum[value] # noqa model_instance = model(**model_arguments)