Relay¶
graphene-sqlalchemy
comes with pre-defined
connection fields to quickly create a functioning relay API.
Using the SQLAlchemyConnectionField
, you have access to relay pagination,
sorting and filtering (filtering is coming soon!).
To be used in a relay connection, your SQLAlchemyObjectType
must implement
the Node
interface from graphene.relay
. This handles the creation of
the Connection
and Edge
types automatically.
The following example creates a relay-paginated connection:
class Pet(Base):
__tablename__ = 'pets'
id = Column(Integer(), primary_key=True)
name = Column(String(30))
pet_kind = Column(Enum('cat', 'dog', name='pet_kind'), nullable=False)
class PetNode(SQLAlchemyObjectType):
class Meta:
model = Pet
interfaces=(Node,)
class Query(ObjectType):
all_pets = SQLAlchemyConnectionField(PetNode.connection)
To disable sorting on the connection, you can set sort
to None
the
SQLAlchemyConnectionField
:
class Query(ObjectType):
all_pets = SQLAlchemyConnectionField(PetNode.connection, sort=None)