Skip to content

Sequelize model decorator which provides cursor based pagination queries

Notifications You must be signed in to change notification settings

didacte/sequelize-cursor-pagination

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sequelize Cursor Pagination

Build Status

Sequelize model decorator which provides cursor based pagination queries. Some motivation and background.

Install

yarn add sequelize-cursor-pagination

How to use

Define a sequelize model:

// ...
const withPagination = require('sequelize-cursor-pagination');

const Counter = sequelize.define('counter', {
  id: { type:  Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
  value: Sequelize.INTEGER,
});

const options = {
  methodName: 'paginate',
  primaryKeyField: 'id',
};

withPagination(options)(Counter);

The withPagination function has the following options:

  • methodName, the name of the pagination method. The default value is paginate.
  • primaryKeyField, the primary key field of the model. The default value is id.

Call the paginate (default method name) method:

// ...
Counter.paginate({
  where: { value: { $gt: 2 } },
  limit: 10,
});

The paginate method returns an object with following properties:

  • results, the results of the query
  • cursors, object containing the cursors' related data
    • cursors.before, the first record in the result serialized
    • cursors.after, the last record in the result serialized
    • cursors.hasNext, true or false depending on whether there are records after the after cursor
    • cursors.hasPrevious, true or false depending on whether there are records before the before 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
  • 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.

Run tests

yarn test

About

Sequelize model decorator which provides cursor based pagination queries

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%