agenda-admin
Version:
A dashboard for agenda.js
48 lines (47 loc) • 2.04 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getJobs = void 0;
const agenda_instance_1 = require("../agenda-instance");
const options_1 = require("../options");
const build_get_jobs_query_1 = require("../utils/build-get-jobs-query");
const getJobs = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
const page = req.query.page || 1;
const query = (0, build_get_jobs_query_1.buildGetJobsQuery)(req.query);
const { itemsPerPage } = (0, options_1.getOptions)();
const data = yield (0, agenda_instance_1.getAgendaInstance)()
._collection.aggregate([
...query,
{
$facet: {
pages: [
{ $count: 'itemsCount' },
{
$project: {
pagesCount: {
$ceil: { $divide: ['$itemsCount', itemsPerPage] },
},
itemsCount: '$itemsCount',
},
},
],
jobs: [
{ $skip: itemsPerPage * (page - 1) },
{ $limit: itemsPerPage },
],
},
},
])
.toArray();
res.locals = data;
next();
});
exports.getJobs = getJobs;