mirror of
https://github.com/wassname/talk.git
synced 2026-06-29 22:18:15 +08:00
63 lines
1.4 KiB
JavaScript
63 lines
1.4 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const casual = require('casual');
|
|
const { ErrNotFound } = require('../../errors');
|
|
const Asset = require('../../models/asset');
|
|
|
|
router.get('/id/:asset_id', async (req, res, next) => {
|
|
try {
|
|
const asset = await Asset.findOne({ id: req.params.asset_id });
|
|
if (asset === null) {
|
|
throw new ErrNotFound();
|
|
}
|
|
|
|
res.render('dev/article', {
|
|
title: asset.title,
|
|
asset_id: asset.id,
|
|
asset_url: asset.url,
|
|
});
|
|
} catch (err) {
|
|
return next(err);
|
|
}
|
|
});
|
|
|
|
router.get('/random', (req, res) => {
|
|
const title = casual.title;
|
|
|
|
res.redirect(`./title/${title.replace(/ /g, '-')}`);
|
|
});
|
|
|
|
router.get('/title/:asset_title', (req, res) => {
|
|
res.render('dev/article', {
|
|
title: req.params.asset_title.split('-').join(' '),
|
|
asset_url: '',
|
|
asset_id: null,
|
|
});
|
|
});
|
|
|
|
router.get('/', async (req, res, next) => {
|
|
try {
|
|
const skip = req.query.skip ? parseInt(req.query.skip) : 0;
|
|
const limit = req.query.limit ? parseInt(req.query.limit) : 6;
|
|
|
|
const [assets, count] = await Promise.all([
|
|
Asset.find({})
|
|
.sort({ created_at: 1 })
|
|
.limit(limit)
|
|
.skip(skip),
|
|
Asset.count(),
|
|
]);
|
|
|
|
res.render('dev/articles', {
|
|
skip,
|
|
limit,
|
|
count,
|
|
assets,
|
|
});
|
|
} catch (err) {
|
|
return next(err);
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|