ticketman
Version:
A simple pull-based job/ticket system contians a centeral ticket dispatcher and distributed workers. This system is written in NodeJS, runing on MongoDB
77 lines (69 loc) • 1.89 kB
JavaScript
// Generated by CoffeeScript 1.12.5
(function() {
var Worker, mongoose;
mongoose = require('mongoose');
Worker = mongoose.model('Worker');
exports.index = function(req, res, next) {
Worker.find(function(err, workers) {
if (err != null) {
return next(err);
}
res.render('workers/index', {
workers: workers
});
});
};
exports.create = function(req, res, next) {
var ticket;
ticket = new Worker(req.body);
ticket.save((function(_this) {
return function(err) {
if (err != null) {
return next(err);
}
switch (req.params.format) {
case 'json':
res.json(ticket);
break;
default:
res.redirect("/workers");
}
};
})(this));
};
exports.updateAt = function(req, res, next) {
var signature, update, workerId;
signature = req.headers['ticketman-authenticate'];
if (!((signature != null) && signature.indexOf("Ticketman") === 0)) {
return next(new Error("signature checking failed"));
}
workerId = (signature.match(/Ticketman ([^:]+)/) || EMPTY_ARRAY)[1];
update = {
updated_at: Date.now()
};
return Worker.findByIdAndUpdate(workerId, update, function(err, worker) {
if (err != null) {
return next(err);
}
return next();
});
};
exports.trashed = function(req, res, next) {
var workerId;
workerId = req.body.worker_id;
return Worker.findById(workerId, function(err, worker) {
if (err != null) {
return next(err);
}
if (!worker) {
return next(404);
}
return worker[worker.trashed_at != null ? "untrash" : "trash"](function(err) {
if (err != null) {
return next(err);
}
return res.redirect("/workers");
});
});
};
}).call(this);