adonis-forge
Version:
Bundle utils for AdonisJS
49 lines (47 loc) • 1.37 kB
JavaScript
import {
InternalServerErrorException
} from "./chunk-H4CO3Y77.js";
// src/utils/model.ts
import { HttpContext } from "@adonisjs/core/http";
import { DateTime } from "luxon";
var paginate = (model, queryCallback, options) => {
const { context, maxPageSize = 100 } = options || {};
let pageSize = 10;
let current = 1;
let desc = "id";
let asc = "id";
let isDesc = true;
const ctx = context || HttpContext.get();
if (!ctx) {
throw new InternalServerErrorException();
}
const query = model.query();
const qs = ctx.request.qs();
if (qs.current) current = Number(qs.current || qs.page || 1);
if (qs.pageSize) pageSize = Number(qs.pageSize || qs.size || 10);
if (qs.descend) {
desc = qs.descend;
} else if (qs.ascend) {
asc = qs.ascend;
isDesc = false;
}
if (qs.start_time && qs.end_time) {
query.whereBetween("created_at", [qs.start_time, qs.end_time]);
}
if (pageSize > maxPageSize) pageSize = maxPageSize;
if (current < 1) current = 1;
query.orderBy(isDesc ? desc : asc, isDesc ? "desc" : "asc");
if (queryCallback) {
queryCallback(query);
}
return query.paginate(current, pageSize);
};
var getBetweenDates = (day) => {
const now = DateTime.now();
return [now.minus({ days: day }).toJSDate(), now.toJSDate()];
};
export {
paginate,
getBetweenDates
};
//# sourceMappingURL=chunk-54IWDZBF.js.map