Connections
GraphGlue uses connections both for queries generated using the name parameter of the @DomainNode annotation and NodeSetProperty GraphGlue relationship properties.
The generated connections adhere mostly to the GraphQL Cursor Connections Specification, except:
In contrast to the specification, providing both first and last is not supported
Schema
The genrated connections have the following schema:
type Query {
types(
after: String,
before: String,
filter: TypeFilterInput,
first: Int,
last: Int,
orderBy: [TypeOrder]
): TypeConnection
}
type TypeConnection {
edges: [TypeEdge!]!
nodes: [Type!]!
pageInfo: PageInfo!
totalCount: Int!
}
type TypeEdge {
cursor: String!
node: Type!
}
type PageInfo {
endCursor: String
hasNextPage: Boolean!
hasPreviousPage: Boolean!
startCursor: String
}
type Type implements Node {
# ...
}
input TypeFilterInput {
and: [TypeFilterInput!]
or: [TypeFilterInput!]
not: TypeFilterInput
# ...
}
input TypeOrder {
direction: OrderDirection = ASC
field: TypeOrderField = ID
}
enum TypeOrderField {
ID
# ...
}
enum OrderDirection {
ASC
DESC
}
Inputs
after: cursor, only nodes after the cursor are returned.before: cursor, only nodes before the cursor are returned.filter: filters the returned nodes, for filter generation see Filtering.first: only the firstnnodes are returned, must not be present iflastis present.last: only the lastnnodes are returned, must not be present iffirstis present.orderBy: allows specifiying the order of the returned nodes (including the direction). Defaults to order ascending by ID. If a field other than id is specified, the id is used to guarantee strict total order, as the field may not be unique. For order field generation, see Ordering
If GrarphQL permission checking has been set up, connections are automatically filtered to only include nodes where the specified Permission is granted.
This is done before first or last is applied, meaning it is not possible to extract information this way.
Outputs
edges: all nodes, with their specific cursornodes: all nodestotalCount: total count of nodes after filtering, but before paginationpageInfo: allows checking if there are nodes after/before, and get the cursor for the first/last node returned
Cursors are ordering dependent and are meant to be used for pagination, they are not meant to be stored long-time.
totalCount is only fetched if specified, as it is rather expensive to fetch.