// sidebar.js // Copyright (C) 2021 Digital Telepresence, LLC // License: Apache-2.0 'use strict'; const { SiteService } = require('../../lib/site-lib'); class SidebarService extends SiteService { constructor (dtp) { super(dtp, module.exports); } middleware ( ) { return async (req, res, next) => { const { link: linkService, user: userService } = this.dtp.services; try { res.locals.popularLinks = await linkService.getPopular(3); res.locals.recentLinks = await linkService.getRecent(3); res.locals.recentUsers = await userService.getRecent(3); return next(); } catch (error) { this.log.error('failed to populate sidebar', { error }); return next(error); } }; } } module.exports = { slug: 'sidebar', name: 'sidebar', create: (dtp) => { return new SidebarService(dtp); }, };