adonis-forge
Version:
Bundle utils for AdonisJS
61 lines (59 loc) • 1.69 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()];
};
var batchSerialize = (models, cherryPick) => {
return models.map((model) => model.serialize(cherryPick));
};
var keywordQuery = (query, keyword, search_keys) => {
query.where((q) => {
for (const key of search_keys) {
q.orWhere(key, "like", `%${keyword}%`);
}
});
};
export {
paginate,
getBetweenDates,
batchSerialize,
keywordQuery
};
//# sourceMappingURL=chunk-XPNES4SH.js.map