const { event, sequence, configuration } = require('../../../../lib/db'); const { transform } = require('../../../../lib/sse'); const render = require('../../../../lib/render'); const html = async function (req, res, next) { try { const query = req.query; query.sequence = req.params.sequence; const events = await event.list(req.params.project, query); const sequences = await sequence.list(req.params.project, query); const seis = transform(events, sequences, {projectId: req.params.project}); const templates = await configuration.get(req.params.project, "sse/templates"); const template = templates[0].template; const response = await render(seis, template); if ("download" in query || "d" in query) { const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.html`; res.set("Content-Disposition", `attachment; filename="${filename}"`); } res.status(200).send(response); next(); } catch (err) { if (err.message.startsWith("template")) { next({message: err.message}); } else { next(err); } } }; module.exports = html;