UNPKG

@opengis/fastify-table

Version:

core-plugins

38 lines (37 loc) 1.97 kB
import path from "node:path"; import { mkdir, readFile, writeFile } from "node:fs/promises"; import logger from "../../../../plugins/logger/getLogger.js"; import grpc from "../../../../plugins/grpc/grpc.js"; const { jsonToXls } = grpc(); export default async function convertJSONToXls({ filePath, send = () => { }, colmodel, domain, source, resp = {}, }) { const rows = JSON.parse((await readFile(filePath, "utf8")) || "[]"); send("Конвертація файлу..."); try { // const titles = colmodel.reduce((acc, curr) => Object.assign(acc, { [curr.name]: curr.title || curr.ua }), {}); // rows.unshift(titles); const { result } = await jsonToXls({ json: JSON.stringify(rows), header: source, subheader: `Завантажено з порталу ${domain} - ${new Date().toLocaleDateString()}. Всього: ${rows.length}`, colmodel: JSON.stringify(colmodel), }); send("Конвертація успішно завершена. Формування файлу..."); await mkdir(path.dirname(filePath), { recursive: true }); await writeFile(filePath.replace(".json", ".xlsx"), result, "base64"); // send('Файл успішно сформовано. Оновіть сторінку або натисніть кнопку ще раз для завантаження. ', 1); // return { message: 'Файл успішно сформовано. Натистіть кнопку ще раз для завантаження даних', status: 200 }; return null; } catch (err) { send(`jsonToXLS err: ${err.toString()}`, 1); logger.file("export/table/error", { filePath, colmodel, domain, rows: rows.length, error: err.toString(), }); Object.assign(resp, { error: err.toString(), status: 500 }); return null; } }