Skip to content

Instantly share code, notes, and snippets.

@slacktracer
Last active January 15, 2017 14:57
Show Gist options
  • Save slacktracer/028e444febaa6978d76e234d93f3e8a7 to your computer and use it in GitHub Desktop.
Save slacktracer/028e444febaa6978d76e234d93f3e8a7 to your computer and use it in GitHub Desktop.
import action from "./controller";
router.get("/:user/status/", authenticate, function(request, response) {
const user = request.params.user;
action(user)
.then(value => response.json(value))
.catch(reason => response.json({ data: reason, status: 500 }));
});
function authenticate(request, response, next) {
next();
}
// controller.js
import model from "./model";
const controller = {
action(user, status) {
return model
.setStatus({ user, status })
.then(model.recalculate)
.then(model.transmogrify);
}
};
export controller;
// model.js
import db from "./database";
function setStatus(data) {
return db.update({ id: data.user, info: { status: data.status } });
}
function recalculate(user) {
user.iteration += 1;
return user.save();
}
function transmogrify(user) {
db
.get(user - 1)
.then(function(previousUser) {
return user.compare(user, previousUser);
})
.then(function(result) {
if (result.winner === user.id) {
return user.save({ victories: user.victories += 1 });
}
return { victories: false };
});
}
export { setStatus, recalculate, transmogrify };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment