diff --git a/routes/assets/index.js b/routes/assets/index.js index 46ad378e5..e8c508b52 100644 --- a/routes/assets/index.js +++ b/routes/assets/index.js @@ -9,6 +9,9 @@ router.get('/id/:asset_id', (req, res, next) => { return Assets.findById(req.params.asset_id) .then(asset => { + if (asset === null) { + return res.json({'message': 'Asset not found'}); + } res.render('article', { title: asset.title, asset_url: asset.url, @@ -28,4 +31,17 @@ router.get('/title/:asset_title', (req, res) => { }); }); +router.get('/', (req, res, next) => { + let skip = req.query.skip ? parseInt(req.query.skip) : 0; + let limit = req.query.limit ? parseInt(req.query.limit) : 25; + + return Assets.all(skip, limit) + .then(assets => { + res.render('articles', { + assets: assets + }); + }) + .catch(err => next(err)); +}); + module.exports = router; diff --git a/services/assets.js b/services/assets.js index 569c7ee2d..de105b811 100644 --- a/services/assets.js +++ b/services/assets.js @@ -88,9 +88,9 @@ module.exports = class AssetsService { * @param {String} value string to search by. * @return {Promise} */ - static search(value) { + static search(value = '', skip = null, limit = null) { if (value.length === 0) { - return AssetsService.all(); + return AssetsService.all(skip, limit); } else { return AssetModel.find({ $text: { @@ -110,7 +110,10 @@ module.exports = class AssetsService { return AssetModel.find(query); } - static all() { - return AssetModel.find({}); + static all(skip = null, limit = null) { + return AssetModel + .find({}) + .skip(skip) + .limit(limit); } }; diff --git a/views/articles.ejs b/views/articles.ejs new file mode 100644 index 000000000..688fa85bb --- /dev/null +++ b/views/articles.ejs @@ -0,0 +1,20 @@ + + + Asset list + + +

+ Clicking on an asset below will bring you to its comment stream. +

+

+ You may paginate manually using skip and limit query params. (aka, ?skip=100&limit=25) +

+

+ This is intended for developer use only. +

+<% assets.forEach(function (asset) { %> + <%= asset.url %>
+<% }) %> + + +