From a6e6b8e5539421e28ea7e32dc0baf1f6a9034db4 Mon Sep 17 00:00:00 2001 From: Erik Wrede Date: Thu, 9 Jun 2022 16:37:01 +0200 Subject: [PATCH] BREAKING: Date&Time now convert to their corresponding graphene scalars instead of String. Signed-off-by: Erik Wrede --- graphene_sqlalchemy/converter.py | 15 +++++++++++++-- graphene_sqlalchemy/tests/test_converter.py | 13 ++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/graphene_sqlalchemy/converter.py b/graphene_sqlalchemy/converter.py index 93c2b95d..50ff82f9 100644 --- a/graphene_sqlalchemy/converter.py +++ b/graphene_sqlalchemy/converter.py @@ -195,8 +195,6 @@ def convert_sqlalchemy_type(type, column, registry=None): ) -@convert_sqlalchemy_type.register(types.Date) -@convert_sqlalchemy_type.register(types.Time) @convert_sqlalchemy_type.register(types.String) @convert_sqlalchemy_type.register(types.Text) @convert_sqlalchemy_type.register(types.Unicode) @@ -215,6 +213,18 @@ def convert_column_to_datetime(type, column, registry=None): return DateTime +@convert_sqlalchemy_type.register(types.Time) +def convert_column_to_datetime(type, column, registry=None): + from graphene.types.datetime import Time + return Time + + +@convert_sqlalchemy_type.register(types.Date) +def convert_column_to_datetime(type, column, registry=None): + from graphene.types.datetime import Date + return Date + + @convert_sqlalchemy_type.register(types.SmallInteger) @convert_sqlalchemy_type.register(types.Integer) def convert_column_to_int_or_id(type, column, registry=None): @@ -283,6 +293,7 @@ def convert_json_type_to_string(type, column, registry=None): def convert_variant_to_impl_type(type, column, registry=None): return convert_sqlalchemy_type(type.impl, column, registry=registry) + @singledispatchbymatchfunction def convert_sqlalchemy_hybrid_property_type(arg: Any): existing_graphql_type = get_global_registry().get_type_for_model(arg) diff --git a/graphene_sqlalchemy/tests/test_converter.py b/graphene_sqlalchemy/tests/test_converter.py index 0398cbae..bb074a96 100644 --- a/graphene_sqlalchemy/tests/test_converter.py +++ b/graphene_sqlalchemy/tests/test_converter.py @@ -58,16 +58,16 @@ def test_should_unknown_sqlalchemy_field_raise_exception(): get_field(getattr(types, 'LargeBinary', types.BINARY)()) -def test_should_date_convert_string(): - assert get_field(types.Date()).type == graphene.String +def test_should_datetime_convert_datetime(): + assert get_field(types.DateTime()).type == graphene.DateTime -def test_should_datetime_convert_datetime(): - assert get_field(types.DateTime()).type == DateTime +def test_should_time_convert_time(): + assert get_field(types.Time()).type == graphene.Time -def test_should_time_convert_string(): - assert get_field(types.Time()).type == graphene.String +def test_should_date_convert_date(): + assert get_field(types.Date()).type == graphene.Date def test_should_string_convert_string(): @@ -203,7 +203,6 @@ def test_should_variant_string_convert_string(): assert get_field(types.Variant(types.String(), {})).type == graphene.String - def test_should_manytomany_convert_connectionorlist(): class A(SQLAlchemyObjectType): class Meta: