2023-06-29 14:31:25 +00:00
|
|
|
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<T>(cursor: FindCursor<T>) {
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-30 20:01:08 +00:00
|
|
|
export default function page() {
|
2023-06-29 14:31:25 +00:00
|
|
|
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);
|
|
|
|
});
|
|
|
|
}
|