diff --git a/graphene/relay/connection.py b/graphene/relay/connection.py index be77700d..274bf722 100644 --- a/graphene/relay/connection.py +++ b/graphene/relay/connection.py @@ -82,8 +82,13 @@ class ConnectionMeta(ObjectTypeMeta): class ConnectionBase(AbstractType): page_info = Field(PageInfo, name='pageInfo', required=True) + total_count = Int(name='totalCount', required=True) edges = NonNull(List(edge)) + @staticmethod + def resolve_total_count(root, args, context, info): + return root.length + bases = (ConnectionBase, ) + bases attrs = dict(attrs, _meta=options, Edge=edge) return ObjectTypeMeta.__new__(cls, name, bases, attrs) diff --git a/graphene/relay/tests/test_connection.py b/graphene/relay/tests/test_connection.py index 87f937ae..8deb8447 100644 --- a/graphene/relay/tests/test_connection.py +++ b/graphene/relay/tests/test_connection.py @@ -23,7 +23,7 @@ def test_connection(): assert MyObjectConnection._meta.name == 'MyObjectConnection' fields = MyObjectConnection._meta.fields - assert list(fields.keys()) == ['page_info', 'edges', 'extra'] + assert list(fields.keys()) == ['page_info', 'total_count', 'edges', 'extra'] edge_field = fields['edges'] pageinfo_field = fields['page_info'] @@ -48,7 +48,7 @@ def test_connection_inherit_abstracttype(): assert MyObjectConnection._meta.name == 'MyObjectConnection' fields = MyObjectConnection._meta.fields - assert list(fields.keys()) == ['page_info', 'edges', 'extra'] + assert list(fields.keys()) == ['page_info', 'total_count', 'edges', 'extra'] def test_edge():