diff --git a/server/admin.api.js b/server/admin.api.js index b9b2afbd7..0884ca03f 100644 --- a/server/admin.api.js +++ b/server/admin.api.js @@ -55,15 +55,28 @@ router.post('/admin/cleanup', mw.adminOnly, (req, res)=>{ }); /* Searches for matching edit or share id, also attempts to partial match */ -router.get('/admin/lookup/:id', mw.adminOnly, (req, res, next)=>{ - HomebrewModel.findOne({ $or : [ - { editId: { '$regex': req.params.id, '$options': 'i' } }, - { shareId: { '$regex': req.params.id, '$options': 'i' } }, - ] }).exec((err, brew)=>{ - return res.json(brew); - }); -}); +router.get('/admin/lookup/:id', mw.adminOnly, async (req, res, next) => { + try { + const brew = await HomebrewModel.findOne({ + $or: [ + { editId: { $regex: req.params.id, $options: 'i' } }, + { shareId: { $regex: req.params.id, $options: 'i' } }, + ] + }).exec(); + + if (!brew) { + // No document found + return res.status(404).json({ error: 'Document not found' }); + } + + return res.json(brew); + } catch (error) { + console.error(error); + return res.status(500).json({ error: 'Internal Server Error' }); + } +}); + /* Find 50 brews that aren't compressed yet */ router.get('/admin/finduncompressed', mw.adminOnly, (req, res)=>{ uncompressedBrewQuery.exec((err, objs)=>{ @@ -91,13 +104,36 @@ router.put('/admin/compress/:id', (req, res)=>{ }); }); -router.get('/admin/stats', mw.adminOnly, (req, res)=>{ - HomebrewModel.count({}, (err, count)=>{ - return res.json({ - totalBrews : count - }); - }); +router.get('/admin/stats', mw.adminOnly, async (req, res) => { + try { + const totalBrewsCount = await HomebrewModel.countDocuments({}); + const publishedBrewsCount = await HomebrewModel.countDocuments({ published: true }); + + return res.json({ + totalBrews: totalBrewsCount, + totalPublishedBrews: publishedBrewsCount + }); + } catch (error) { + console.error(error); + return res.status(500).json({ error: 'Internal Server Error' }); + } }); + + + +/* +router.get('/admin/stats', mw.adminOnly, async (req, res) => { + try { + const count = await HomebrewModel.countDocuments({}); + return res.json({ + totalBrews: count + }); + } catch (error) { + console.error(error); + return res.status(500).json({ error: 'Internal Server Error' }); + } +}); +*/ router.get('/admin', mw.adminOnly, (req, res)=>{ templateFn('admin', {