Skip to content

Commit 75abf0b

Browse files
authored
feat: Add support for UUIDs in @hybrid_property-ies (#363)
1 parent 0a765a1 commit 75abf0b

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

graphene_sqlalchemy/converter.py

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datetime
22
import sys
33
import typing
4+
import uuid
45
import warnings
56
from decimal import Decimal
67
from functools import singledispatch
@@ -398,6 +399,11 @@ def convert_sqlalchemy_hybrid_property_type_time(arg):
398399
return graphene.Time
399400

400401

402+
@convert_sqlalchemy_hybrid_property_type.register(value_equals(uuid.UUID))
403+
def convert_sqlalchemy_hybrid_property_type_uuid(arg):
404+
return graphene.UUID
405+
406+
401407
def is_union(arg) -> bool:
402408
if sys.version_info >= (3, 10):
403409
from types import UnionType

graphene_sqlalchemy/tests/models.py

+16
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import datetime
44
import enum
5+
import uuid
56
from decimal import Decimal
67
from typing import List, Optional, Tuple
78

@@ -267,6 +268,21 @@ def hybrid_prop_self_referential_list(self) -> List["ShoppingCart"]:
267268
def hybrid_prop_optional_self_referential(self) -> Optional["ShoppingCart"]:
268269
return None
269270

271+
# UUIDS
272+
@hybrid_property
273+
def hybrid_prop_uuid(self) -> uuid.UUID:
274+
return uuid.uuid4()
275+
276+
@hybrid_property
277+
def hybrid_prop_uuid_list(self) -> List[uuid.UUID]:
278+
return [
279+
uuid.uuid4(),
280+
]
281+
282+
@hybrid_property
283+
def hybrid_prop_optional_uuid(self) -> Optional[uuid.UUID]:
284+
return None
285+
270286

271287
class KeyedModel(Base):
272288
__tablename__ = "test330"

graphene_sqlalchemy/tests/test_converter.py

+4
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,10 @@ class Meta:
673673
"hybrid_prop_self_referential_list": graphene.List(ShoppingCartType),
674674
# Optionals
675675
"hybrid_prop_optional_self_referential": ShoppingCartType,
676+
# UUIDs
677+
"hybrid_prop_uuid": graphene.UUID,
678+
"hybrid_prop_optional_uuid": graphene.UUID,
679+
"hybrid_prop_uuid_list": graphene.List(graphene.UUID),
676680
}
677681

678682
assert sorted(list(ShoppingCartType._meta.fields.keys())) == sorted(

0 commit comments

Comments
 (0)