3
3
from singledispatch import singledispatch
4
4
from sqlalchemy import inspect , types
5
5
from sqlalchemy .dialects import postgresql
6
- from sqlalchemy .ext .associationproxy import AssociationProxy
7
6
from sqlalchemy .ext .hybrid import hybrid_property
8
7
from sqlalchemy .orm import (ColumnProperty , CompositeProperty ,
9
8
interfaces , RelationshipProperty ,
@@ -46,34 +45,18 @@ def convert_sqlalchemy_association_proxy(association_prop, obj_type, registry, c
46
45
attr = inspect (attr ).property
47
46
48
47
def dynamic_type ():
49
- if isinstance (attr , AssociationProxy ):
50
- return convert_sqlalchemy_association_proxy (
48
+ if isinstance (attr , ColumnProperty ):
49
+ field = convert_sqlalchemy_column (
51
50
attr ,
52
- obj_type ,
53
51
registry ,
54
- connection_field_factory ,
55
- batching ,
56
52
resolver ,
57
53
** field_kwargs
58
54
)
59
- elif isinstance (attr , ColumnProperty ):
60
- # similar to convert_sqlalchemy_column, but supports lists
61
- column = attr .columns [0 ]
62
- type_ = field_kwargs .pop ('type' , convert_sqlalchemy_type (getattr (column , "type" , None ), column , registry ))
63
- field_kwargs .setdefault ('required' , not is_column_nullable (column ))
64
- field_kwargs .setdefault ('description' , get_column_doc (column ))
65
-
66
- return Field (
67
- type_ if association_prop .scalar else List (type_ ),
68
- resolver = resolver ,
69
- ** field_kwargs
70
- )
71
- elif isinstance (attr , CompositeProperty ):
72
- return convert_sqlalchemy_composite (
73
- attr ,
74
- registry ,
75
- resolver
76
- )
55
+ if not association_prop .scalar :
56
+ # repackage as List
57
+ field .__dict__ ['_type' ] = List (field .type )
58
+
59
+ return field
77
60
elif isinstance (attr , RelationshipProperty ):
78
61
batching_ = field_kwargs .pop ('batching' , batching )
79
62
return convert_sqlalchemy_relationship (
@@ -85,12 +68,6 @@ def dynamic_type():
85
68
** field_kwargs
86
69
# resolve Dynamic type
87
70
).get_type ()
88
- elif isinstance (attr , hybrid_property ):
89
- return convert_sqlalchemy_hybrid_method (
90
- attr ,
91
- resolver ,
92
- ** field_kwargs
93
- )
94
71
95
72
raise NotImplementedError (attr )
96
73
0 commit comments