cityssm/lottery-licence-manager

View on GitHub
handlers/reports-get/reportName.js

Summary

Maintainability
A
0 mins
Test Coverage
B
88%
import * as configFunctions from "../../helpers/functions.config.js";
import * as licencesDB from "../../helpers/licencesDB.js";
import { rawToCSV } from "@cityssm/expressjs-server-js/stringFns.js";
import { reportDefinitions } from "../../helpers/reportDefinitions/reportDefinitions.js";
const urlPrefix = configFunctions.getProperty("reverseProxy.urlPrefix");
export const handler = (request, response) => {
    const reportName = request.params.reportName;
    if (!reportDefinitions[reportName]) {
        response.redirect(urlPrefix + "/reports/?error=reportNotFound");
        return;
    }
    const definition = reportDefinitions[reportName];
    const sql = definition.sql;
    const parameters = definition.params
        ? definition.params(request)
        : [];
    const functions = definition.functions
        ? definition.functions()
        : new Map();
    const rowsColumnsObject = licencesDB.getRawRowsColumns(sql, parameters, functions);
    const csv = rawToCSV(rowsColumnsObject);
    response.setHeader("Content-Disposition", "attachment; filename=" + reportName + "-" + Date.now().toString() + ".csv");
    response.setHeader("Content-Type", "text/csv");
    response.send(csv);
};
export default handler;