Added possibility to enable / disable tasks.
This commit is contained in:
parent
8f8d78d1df
commit
53a0ecd366
7 changed files with 109 additions and 46 deletions
server/resources
|
@ -17,10 +17,61 @@ angular.module('ffffng').factory('TaskResource', function (
|
|||
name: task.name,
|
||||
schedule: task.schedule,
|
||||
runningSince: task.runningSince && task.runningSince.unix(),
|
||||
lastRunStarted: task.lastRunStarted && task.lastRunStarted.unix()
|
||||
lastRunStarted: task.lastRunStarted && task.lastRunStarted.unix(),
|
||||
state: task.state,
|
||||
enabled: task.enabled
|
||||
};
|
||||
}
|
||||
|
||||
function withValidTaskId(req, res, callback) {
|
||||
var id = Strings.normalizeString(Resources.getData(req).id);
|
||||
|
||||
if (!isValidId(id)) {
|
||||
return callback({data: 'Invalid task id.', type: ErrorTypes.badRequest});
|
||||
}
|
||||
|
||||
callback(null, id);
|
||||
}
|
||||
|
||||
function getTask(id, callback) {
|
||||
var tasks = Scheduler.getTasks();
|
||||
var task = tasks[id];
|
||||
|
||||
if (!task) {
|
||||
return callback({data: 'Task not found.', type: ErrorTypes.notFound});
|
||||
}
|
||||
|
||||
callback(null, task);
|
||||
}
|
||||
|
||||
function withTask(req, res, callback) {
|
||||
withValidTaskId(req, res, function (err, id) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
getTask(id, function (err, task) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
callback(null, id, task);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function setTaskEnabled(req, res, enable) {
|
||||
withTask(req, res, function (err, id, task) {
|
||||
if (err) {
|
||||
return Resources.error(res, err);
|
||||
}
|
||||
|
||||
task.enabled = !!enable; // ensure boolean
|
||||
|
||||
return Resources.success(res, toExternalTask(task, id));
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
getAll: function (req, res) {
|
||||
var tasks = Scheduler.getTasks();
|
||||
|
@ -28,26 +79,27 @@ angular.module('ffffng').factory('TaskResource', function (
|
|||
},
|
||||
|
||||
run: function (req, res) {
|
||||
var id = Strings.normalizeString(Resources.getData(req).id);
|
||||
withTask(req, res, function (err, id, task) {
|
||||
if (err) {
|
||||
return Resources.error(res, err);
|
||||
}
|
||||
|
||||
if (!isValidId(id)) {
|
||||
return Resources.error(res, {data: 'Invalid task id.', type: ErrorTypes.badRequest});
|
||||
}
|
||||
if (task.runningSince) {
|
||||
return Resources.error(res, {data: 'Task already running.', type: ErrorTypes.conflict});
|
||||
}
|
||||
|
||||
var tasks = Scheduler.getTasks();
|
||||
var task = tasks[id];
|
||||
task.run();
|
||||
|
||||
if (!task) {
|
||||
return Resources.error(res, {data: 'Task not found.', type: ErrorTypes.notFound});
|
||||
}
|
||||
return Resources.success(res, toExternalTask(task, id));
|
||||
});
|
||||
},
|
||||
|
||||
if (task.runningSince) {
|
||||
return Resources.error(res, {data: 'Task already running.', type: ErrorTypes.conflict});
|
||||
}
|
||||
enable: function (req, res) {
|
||||
setTaskEnabled(req, res, true);
|
||||
},
|
||||
|
||||
task.run();
|
||||
|
||||
return Resources.success(res, toExternalTask(task, id));
|
||||
disable: function (req, res) {
|
||||
setTaskEnabled(req, res, false);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue