agenda-admin
Version:
A dashboard for agenda.js
33 lines (32 loc) • 902 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildJobQuery = void 0;
const mongodb_1 = require("mongodb");
const buildJobQuery = ({ name, property, value, status, sortBy, sortType, }) => {
const query = {};
if (name) {
query.name = name;
}
if (property && value) {
if (property.endsWith('_id')) {
query[property] = new mongodb_1.ObjectId(value);
}
else {
query[property] = /^\d+$/.test(value) ? +value : value;
}
}
else if (property) {
query[property] = { $exists: true };
}
const statusFilter = {};
if (status) {
statusFilter[`status.${status}`] = true;
}
return {
query,
statusFilter,
sortBy: sortBy || 'lastRunAt',
sortType: sortType === 'asc' ? 1 : -1,
};
};
exports.buildJobQuery = buildJobQuery;