1
0
mirror of https://github.com/mgerb/mywebsite synced 2026-01-11 18:32:50 +00:00
Files

109 lines
2.7 KiB
JavaScript

'use strict';
var bson = require('../bson');
var routes = function(config) {
var exp = {};
exp.viewDocument = function(req, res) {
var ctx = {
title: 'Viewing Document: ' + req.document._id,
editorTheme: config.options.editorTheme,
docString: bson.toString(req.document),
};
res.render('document', ctx);
};
exp.checkValid = function(req, res) {
var doc = req.body.document;
try {
bson.toBSON(doc);
} catch (err) {
console.error(err);
return res.send('Invalid');
}
res.send('Valid');
};
exp.addDocument = function(req, res) {
var doc = req.body.document;
if (doc === undefined || doc.length === 0) {
req.session.error = 'You forgot to enter a document!';
return res.redirect('back');
}
var docBSON;
try {
docBSON = bson.toBSON(doc);
} catch (err) {
req.session.error = 'That document is not valid!';
console.error(err);
return res.redirect('back');
}
req.collection.insert(docBSON, {safe: true}, function(err) {
if (err) {
req.session.error = 'Something went wrong: ' + err;
console.error(err);
return res.redirect('back');
}
req.session.success = 'Document added!';
res.redirect(res.locals.baseHref + 'db/' + req.dbName + '/' + req.collectionName);
});
};
exp.updateDocument = function(req, res) {
var doc = req.body.document;
if (doc === undefined || doc.length === 0) {
req.session.error = 'You forgot to enter a document!';
return res.redirect('back');
}
var docBSON;
try {
docBSON = bson.toBSON(doc);
} catch (err) {
req.session.error = 'That document is not valid!';
console.error(err);
return res.redirect('back');
}
docBSON._id = req.document._id;
req.collection.update(req.document, docBSON, {safe: true}, function(err) {
if (err) {
//document was not saved
req.session.error = 'Something went wrong: ' + err;
console.error(err);
return res.redirect('back');
}
req.session.success = 'Document updated!';
res.redirect(res.locals.baseHref + 'db/' + req.dbName + '/' + req.collectionName);
});
};
exp.deleteDocument = function(req, res) {
req.collection.remove(req.document, {safe: true}, function(err) {
if (err) {
req.session.error = 'Something went wrong! ' + err;
console.error(err);
return res.redirect('back');
}
req.session.success = 'Document deleted!';
res.redirect(res.locals.baseHref + 'db/' + req.dbName + '/' + req.collectionName);
});
};
return exp;
};
module.exports = routes;