@opengis/fastify-table
Version:
core-plugins
38 lines (37 loc) • 1.97 kB
JavaScript
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;
}
}