ah-resque-ui
Version:
A resque administration website for actionhero
348 lines (347 loc) • 11.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResqueRunDelayed = exports.ResqueDelDelayed = exports.ResqueDelayedJobs = exports.ResqueDelLock = exports.ResqueLocks = exports.ResqueRetryAndRemoveAllFailed = exports.ResqueRetryAndRemoveFailed = exports.ResqueRemoveAllFailed = exports.ResqueRemoveFailed = exports.ResqueResqueFailed = exports.ResqueDelQueue = exports.ResqueQueued = exports.ResqueFailedCount = exports.ResqueForceCleanWorker = exports.ResqueLoadWorkerQueues = exports.ResqueResqueDetails = exports.ResqueRedisInfo = void 0;
const os = require("os");
const actionhero_1 = require("actionhero");
// A helper class
class ResqueAction extends actionhero_1.Action {
constructor() {
super();
this.middleware = ["ah-resque-ui-proxy-middleware"];
this.logLevel = "debug";
this.toDocument = false;
}
}
class ResqueRedisInfo extends ResqueAction {
constructor() {
super();
this.name = "resque:redisInfo";
this.description = "I return the results of redis info";
this.inputs = {};
}
async run() {
const redisInfo = await actionhero_1.api.resque.queue.connection.redis.info();
if (redisInfo) {
return { redisInfo: redisInfo.split(os.EOL) };
}
}
}
exports.ResqueRedisInfo = ResqueRedisInfo;
class ResqueResqueDetails extends ResqueAction {
constructor() {
super();
this.name = "resque:resqueDetails";
this.description = "I return the results of api.tasks.details";
this.inputs = {};
}
async run() {
return { resqueDetails: await actionhero_1.task.details() };
}
}
exports.ResqueResqueDetails = ResqueResqueDetails;
class ResqueLoadWorkerQueues extends ResqueAction {
constructor() {
super();
this.name = "resque:loadWorkerQueues";
this.description = "I return the results of api.tasks.workers";
this.inputs = {};
}
async run() {
return { workerQueues: await actionhero_1.task.workers() };
}
}
exports.ResqueLoadWorkerQueues = ResqueLoadWorkerQueues;
class ResqueForceCleanWorker extends ResqueAction {
constructor() {
super();
this.name = "resque:forceCleanWorker";
this.description = "I remove a worker from resque";
this.inputs = {
workerName: { required: true },
};
}
async run({ params }) {
return {
generatedErrorPayload: await actionhero_1.api.resque.queue.forceCleanWorker(params.workerName),
};
}
}
exports.ResqueForceCleanWorker = ResqueForceCleanWorker;
class ResqueFailedCount extends ResqueAction {
constructor() {
super();
this.name = "resque:resqueFailedCount";
this.description = "I return a count of failed jobs";
this.inputs = {};
}
async run() {
return { failedCount: await actionhero_1.task.failedCount() };
}
}
exports.ResqueFailedCount = ResqueFailedCount;
class ResqueQueued extends ResqueAction {
constructor() {
super();
this.name = "resque:queued";
this.description = "I list enqueued jobs";
this.inputs = {
queue: {
required: true,
},
start: {
required: true,
formatter: parseInt,
default: 0,
},
stop: {
required: true,
formatter: parseInt,
default: 99,
},
};
}
async run({ params }) {
return {
queueLength: await actionhero_1.api.resque.queue.length(params.queue),
jobs: await actionhero_1.task.queued(params.queue, params.start, params.stop),
};
}
}
exports.ResqueQueued = ResqueQueued;
class ResqueDelQueue extends ResqueAction {
constructor() {
super();
this.name = "resque:delQueue";
this.description = "I delete a queue";
this.inputs = {
queue: { required: true },
};
}
async run({ params }) {
return { deleted: await actionhero_1.task.delQueue(params.queue) };
}
}
exports.ResqueDelQueue = ResqueDelQueue;
class ResqueResqueFailed extends ResqueAction {
constructor() {
super();
this.name = "resque:resqueFailed";
this.description = "I return failed jobs";
this.inputs = {
start: {
required: true,
formatter: parseInt,
default: 0,
},
stop: {
required: true,
formatter: parseInt,
default: 99,
},
};
}
async run({ params }) {
return { failed: await actionhero_1.task.failed(params.start, params.stop) };
}
}
exports.ResqueResqueFailed = ResqueResqueFailed;
class ResqueRemoveFailed extends ResqueAction {
constructor() {
super();
this.name = "resque:removeFailed";
this.description = "I remove a failed job";
this.inputs = {
id: {
required: true,
formatter: parseInt,
},
};
}
async run({ params }) {
const failed = await actionhero_1.task.failed(params.id, params.id);
if (!failed) {
throw Error("failed job not found");
}
return { removed: await actionhero_1.task.removeFailed(failed[0]) };
}
}
exports.ResqueRemoveFailed = ResqueRemoveFailed;
class ResqueRemoveAllFailed extends ResqueAction {
constructor() {
super();
this.name = "resque:removeAllFailed";
this.description = "I remove all failed jobs";
this.inputs = {};
}
async run() {
let removed = 0;
const failed = await actionhero_1.task.failed(0, 0);
if (failed && failed.length > 0) {
const failedJob = failed[0];
removed += await actionhero_1.task.removeFailed(failedJob);
await this.run();
}
return { removed };
}
}
exports.ResqueRemoveAllFailed = ResqueRemoveAllFailed;
class ResqueRetryAndRemoveFailed extends ResqueAction {
constructor() {
super();
this.name = "resque:retryAndRemoveFailed";
this.description = "I retry a failed job";
this.inputs = {
id: {
required: true,
formatter: parseInt,
},
};
}
async run({ params }) {
const failed = await actionhero_1.task.failed(params.id, params.id);
if (!failed) {
throw new Error("failed job not found");
}
return { retried: actionhero_1.task.retryAndRemoveFailed(failed[0]) };
}
}
exports.ResqueRetryAndRemoveFailed = ResqueRetryAndRemoveFailed;
class ResqueRetryAndRemoveAllFailed extends ResqueAction {
constructor() {
super();
this.name = "resque:retryAndRemoveAllFailed";
this.description = "I retry all failed jobs";
this.inputs = {};
}
async run() {
let retried = 0;
const failed = await actionhero_1.task.failed(0, 0);
if (failed && failed.length > 0) {
const failedJob = failed[0];
retried += (await actionhero_1.task.retryAndRemoveFailed(failedJob)) ? 1 : 0;
await this.run();
}
return { retried };
}
}
exports.ResqueRetryAndRemoveAllFailed = ResqueRetryAndRemoveAllFailed;
class ResqueLocks extends ResqueAction {
constructor() {
super();
this.name = "resque:locks";
this.description = "I return all locks";
this.inputs = {};
}
async run() {
return { locks: await actionhero_1.task.locks() };
}
}
exports.ResqueLocks = ResqueLocks;
class ResqueDelLock extends ResqueAction {
constructor() {
super();
this.name = "resque:delLock";
this.description = "I delete a lock";
this.inputs = {
lock: { required: true },
};
}
async run({ params }) {
return { count: await actionhero_1.task.delLock(params.lock) };
}
}
exports.ResqueDelLock = ResqueDelLock;
class ResqueDelayedJobs extends ResqueAction {
constructor() {
super();
this.name = "resque:delayedjobs";
this.description = "I return paginated lists of delayedjobs";
this.inputs = {
start: {
required: true,
formatter: parseInt,
default: 0,
},
stop: {
required: true,
formatter: parseInt,
default: 99,
},
};
}
async run({ params }) {
const timestamps = [];
const delayedjobs = {};
let timestampsCount = 0;
const allTimestamps = await actionhero_1.task.timestamps();
if (allTimestamps.length > 0) {
timestampsCount = allTimestamps.length;
for (let i = 0; i < allTimestamps.length; i++) {
if (i >= params.start && i <= params.stop) {
timestamps.push(allTimestamps[i]);
}
}
for (const j in timestamps) {
const timestamp = timestamps[j];
delayedjobs[timestamp] = await actionhero_1.task.delayedAt(timestamp);
}
}
return { delayedjobs, timestampsCount };
}
}
exports.ResqueDelayedJobs = ResqueDelayedJobs;
class ResqueDelDelayed extends ResqueAction {
constructor() {
super();
this.name = "resque:delDelayed";
this.description = "I delete a delayed job";
this.inputs = {
timestamp: {
required: true,
formatter: parseInt,
},
count: {
required: true,
formatter: parseInt,
},
};
}
async run({ params }) {
const delayed = await actionhero_1.task.delayedAt(params.timestamp);
if (delayed.tasks.length === 0 || !delayed.tasks[params.count]) {
throw new Error("delayed job not found");
}
const job = delayed.tasks[params.count];
return {
timestamps: await actionhero_1.task.delDelayed(job.queue, job.class, job.args),
};
}
}
exports.ResqueDelDelayed = ResqueDelDelayed;
class ResqueRunDelayed extends ResqueAction {
constructor() {
super();
this.name = "resque:runDelayed";
this.description = "I run a delayed job now";
this.inputs = {
timestamp: {
required: true,
formatter: parseInt,
},
count: {
required: true,
formatter: parseInt,
},
};
}
async run({ params }) {
const delayed = await actionhero_1.task.delayedAt(params.timestamp);
if (delayed.tasks.length === 0 || !delayed.tasks[params.count]) {
throw new Error("delayed job not found");
}
const job = delayed.tasks[params.count];
await actionhero_1.task.delDelayed(job.queue, job.class, job.args);
await actionhero_1.task.enqueue(job.class, job.args, job.queue);
}
}
exports.ResqueRunDelayed = ResqueRunDelayed;