Sequelize model decorator which provides relay cursor based pagination queries. For more information on the original project see Some motivation and background.
switch to branch 'relay-sequelize' and append this repository to your package.json dependencies.
Define a sequelize model:
// ...
import { Pagination, Model } from 'sequelize-relay-pagination';
import { Table } from 'sequelize-typescript';
@Pagination({
primaryKeyField: 'id',
})
@Table
class Counter extends Model {
// ...
}
The Pagination
decorator has the following options:
- primaryKeyField, the primary key field of the model. The default value is
id
.
Important note: remember to extend your class to the Pager Model as seen in the example above.
Call the paginate
method:
await Counter.paginate({
where: { value: { $gt: 2 } },
limit: 10,
});
The paginate
method returns an object with following properties:
- edges, the results of the query
- edges.$.node, the payload item of the query
- edges.$.cursor, an opaque string for the paging
- pageInfo, object containing the cursors' related data
- pageInfo.startCursor, the first record in the result serialized
- pageInfo.endCursor, the last record in the result serialized
- pageInfo.hasNextPage,
true
orfalse
depending on whether there are records after theafter
cursor - pageInfo.hasPreviousPage,
true
orfalse
depending on whether there are records before thebefore
cursor
The paginate
method has the following options:
- where, the query applied to findAll call
- attributes, the query applied to findAll and select only some attributes
- include, applied to
findAll
for eager loading - limit, limit the number of records returned
- order, Custom ordering attributes,
- desc, whether to sort in descending order. The default value is
false
. - before, the before cursor
- after, the after cursor
- paginationField, the field to be used for the pagination. The default value is the
primaryKeyField
option value. - raw, whether the query will return Sequelize Models or raw data. The default is
false
. - paranoid, whether the query will return deleted models if the model is set to
paranoid: true
. The default istrue
.
Other options passed to the paginate
method will be directly passed to the model's findAll
method. Use them at your own risk.
tests is in progress!