UNPKG

adonis-forge

Version:

Bundle utils for AdonisJS

61 lines (59 loc) 1.69 kB
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