mirror of
https://github.com/graphql-python/graphene.git
synced 2024-11-11 12:16:58 +03:00
Improved relay connections
This commit is contained in:
parent
66c375bfe3
commit
a9e09dcee8
|
@ -1,12 +1,9 @@
|
|||
import re
|
||||
import copy
|
||||
from functools import partial
|
||||
from collections import Iterable
|
||||
import six
|
||||
from graphql_relay import connection_definitions
|
||||
from graphql_relay import connection_definitions, connection_from_list
|
||||
|
||||
from ..types.field import Field
|
||||
from ..types.mutation import Mutation, MutationMeta
|
||||
from ..types.interface import GrapheneInterfaceType, Interface, InterfaceTypeMeta
|
||||
from ..types.objecttype import ObjectType, ObjectTypeMeta
|
||||
|
||||
from ..utils.props import props
|
||||
|
@ -47,14 +44,36 @@ class ConnectionMeta(ObjectTypeMeta):
|
|||
edge_fields=edge_fields,
|
||||
connection_fields=local_fields,
|
||||
)
|
||||
cls.Edge = type(edge.name, (ObjectType, ), {'Meta': type('Meta', (object,), {'graphql_type': edge})})
|
||||
cls._meta.graphql_type = connection
|
||||
return cls
|
||||
|
||||
|
||||
|
||||
class Connection(six.with_metaclass(ConnectionMeta, ObjectType)):
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
resolve_node = None
|
||||
resolve_cursor = None
|
||||
|
||||
|
||||
class IterableConnectionField(Field):
|
||||
# def __init__(self, type, *args, **kwargs):
|
||||
# if
|
||||
|
||||
def resolver(self, root, args, context, info):
|
||||
iterable = super(ConnectionField, self).resolver(root, args, context, info)
|
||||
# if isinstance(resolved, self.type.graphene)
|
||||
assert isinstance(
|
||||
iterable, Iterable), 'Resolved value from the connection field have to be iterable'
|
||||
connection = connection_from_list(
|
||||
iterable,
|
||||
args,
|
||||
connection_type=None,
|
||||
edge_type=None,
|
||||
pageinfo_type=None
|
||||
)
|
||||
return connection
|
||||
|
||||
|
||||
ConnectionField = IterableConnectionField
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
from functools import partial
|
||||
import copy
|
||||
import six
|
||||
from graphql_relay import mutation_with_client_mutation_id
|
||||
|
||||
from ..types.mutation import Mutation, MutationMeta
|
||||
from ..types.inputobjecttype import GrapheneInputObjectType, InputObjectType
|
||||
from ..types.objecttype import GrapheneObjectType
|
||||
from ..types.field import Field, InputField
|
||||
from ..types.inputobjecttype import InputObjectType
|
||||
from ..types.field import Field
|
||||
|
||||
from ..utils.props import props
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
import copy
|
||||
from functools import partial
|
||||
import six
|
||||
from graphql_relay import node_definitions, from_global_id, to_global_id
|
||||
|
||||
from ..types.field import Field
|
||||
from ..types.objecttype import ObjectTypeMeta
|
||||
from ..types.interface import GrapheneInterfaceType, Interface, InterfaceTypeMeta
|
||||
from ..types.interface import Interface
|
||||
|
||||
|
||||
class NodeMeta(ObjectTypeMeta):
|
||||
|
|
Loading…
Reference in New Issue
Block a user