mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-22 22:52:58 +03:00
add support for sqlalchemy-utils ScalarListType
This commit is contained in:
parent
17ba01570a
commit
bdf57391f7
|
@ -1,20 +1,24 @@
|
|||
from graphql.type import GraphQLString
|
||||
from singledispatch import singledispatch
|
||||
from sqlalchemy import types
|
||||
from sqlalchemy.orm import interfaces
|
||||
from sqlalchemy.dialects import postgresql
|
||||
from sqlalchemy.orm import interfaces
|
||||
|
||||
from ...core.classtypes.enum import Enum
|
||||
from ...core.types.scalars import ID, Boolean, Float, Int, String
|
||||
from ...core.types.definitions import List
|
||||
from ...core.types.custom_scalars import JSONString
|
||||
from ...core.types.definitions import List
|
||||
from ...core.types.scalars import ID, Boolean, Float, Int, String
|
||||
from .fields import ConnectionOrListField, SQLAlchemyModelField
|
||||
|
||||
try:
|
||||
from sqlalchemy_utils.types.choice import ChoiceType
|
||||
from sqlalchemy_utils import ChoiceType, ScalarListType
|
||||
except ImportError:
|
||||
class ChoiceType(object):
|
||||
pass
|
||||
|
||||
class ScalarListType(object):
|
||||
pass
|
||||
|
||||
|
||||
def convert_sqlalchemy_relationship(relationship):
|
||||
direction = relationship.direction
|
||||
|
@ -78,6 +82,11 @@ def convert_column_to_enum(type, column):
|
|||
return Enum(name, type.choices, description=column.doc)
|
||||
|
||||
|
||||
@convert_sqlalchemy_type.register(ScalarListType)
|
||||
def convert_scalar_list_to_list(type, column):
|
||||
return List(GraphQLString, description=column.doc)
|
||||
|
||||
|
||||
@convert_sqlalchemy_type.register(postgresql.ARRAY)
|
||||
def convert_postgres_array_to_list(type, column):
|
||||
graphene_type = convert_sqlalchemy_type(column.type.item_type, column)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from py.test import raises
|
||||
from sqlalchemy import Column, Table, types
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy_utils.types.choice import ChoiceType
|
||||
from sqlalchemy_utils import ChoiceType, ScalarListType
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
import graphene
|
||||
|
@ -106,6 +106,10 @@ def test_should_choice_convert_enum():
|
|||
assert graphene_type.__enum__.__members__['en'].value == 'English'
|
||||
|
||||
|
||||
def test_should_scalar_list_convert_list():
|
||||
assert_column_conversion(ScalarListType(), graphene.List)
|
||||
|
||||
|
||||
def test_should_manytomany_convert_connectionorlist():
|
||||
graphene_type = convert_sqlalchemy_relationship(Reporter.pets.property)
|
||||
assert isinstance(graphene_type, ConnectionOrListField)
|
||||
|
|
Loading…
Reference in New Issue
Block a user