import { makeParameterModifier } from "../Router.ts"; import { FindCursor } from "https://deno.land/x/mongo@v0.31.2/src/collection/commands/find.ts"; export class Page { public size?: number; public index?: number; public apply(cursor: FindCursor) { let res = cursor; if (this.size !== undefined) { if (this.index !== undefined) res = res.skip(this.index * this.size); res = res.limit(this.size); } return res; } public constructor(size?: number); public constructor(size: number, index?: number); public constructor(size?: number, index?: number) { this.size = size; this.index = index; } } export default function page() { return makeParameterModifier(req => { let n: number | undefined = Number.parseInt(req.params.n); let i: number | undefined = Number.parseInt(req.params.i); if (isNaN(n) || n < 1) n = undefined; if (isNaN(i) || i < 0) i = undefined; if (n === undefined) return new Page(); else if (i === undefined) return new Page(n); else return new Page(n, i); }); }