12345678910111213141516171819202122232425262728293031323334353637 |
- const QueryBuilderOperation = require('./QueryBuilderOperation');
- class RangeOperation extends QueryBuilderOperation {
- constructor(name, opt) {
- super(name, opt);
- this.resultSizeBuilder = null;
- }
- onAdd(builder, args) {
- if (args.length === 2) {
- const start = args[0];
- const end = args[1];
- // Need to set these here instead of `onBuildKnex` so that they
- // don't end up in the resultSize query.
- builder.limit(end - start + 1).offset(start);
- }
- return true;
- }
- onBefore1(builder, result) {
- this.resultSizeBuilder = builder.clone();
- return super.onBefore1(builder, result);
- }
- onAfter3(builder, results) {
- return this.resultSizeBuilder.resultSize().then(resultSize => {
- return {
- results,
- total: parseInt(resultSize, 10)
- };
- });
- }
- }
- module.exports = RangeOperation;
|