---|main| Initial commit
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
var router = require('express').Router(),
|
||||
mongoose = require('mongoose'),
|
||||
Metal = mongoose.model('Metal');
|
||||
const auth = require('../auth');
|
||||
|
||||
// Preload metal objects on routes with ':code'
|
||||
router.param('code', function (req, res, next, code) {
|
||||
Metal.findOne({ code: code })
|
||||
.then(function (metal) {
|
||||
if (!metal) {
|
||||
return res.sendStatus(404);
|
||||
}
|
||||
req.metal = metal;
|
||||
return next();
|
||||
}).catch(next);
|
||||
});
|
||||
|
||||
router.get('/', auth.required, function (req, res, next) {
|
||||
var query = {};
|
||||
var limit = 20;
|
||||
var offset = 0;
|
||||
if (typeof req.query.limit !== 'undefined') {
|
||||
limit = req.query.limit;
|
||||
}
|
||||
if (typeof req.query.offset !== 'undefined') {
|
||||
offset = req.query.offset;
|
||||
}
|
||||
if (typeof req.query.code !== 'undefined') {
|
||||
query.code = req.query.code;
|
||||
}
|
||||
if (typeof req.query.color !== 'undefined') {
|
||||
query.color = req.query.color;
|
||||
}
|
||||
if (typeof req.query.ordering !== 'undefined') {
|
||||
query.ordering = req.query.ordering;
|
||||
}
|
||||
if (typeof req.query.title !== 'undefined') {
|
||||
query.title = req.query.title;
|
||||
}
|
||||
Promise.all([
|
||||
Metal.find(query)
|
||||
.limit(Number(limit))
|
||||
.skip(Number(offset))
|
||||
.exec(),
|
||||
Metal.count(query).exec()
|
||||
]).then(function (results) {
|
||||
var metals = results[0];
|
||||
var metalsCount = results[1];
|
||||
|
||||
return res.json({
|
||||
metals: metals.map(function (metal) {
|
||||
return metal.toJSONFor();
|
||||
}),
|
||||
metalsCount: metalsCount
|
||||
});
|
||||
}).catch(next);
|
||||
});
|
||||
|
||||
// return a metal
|
||||
router.get('/:code', auth.required, function (req, res, next) {
|
||||
return res.json({ metal: req.metal.toJSONFor() });
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user