UNPKG

@opengis/fastify-table

Version:

core-plugins

44 lines (40 loc) 1.88 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) || '[]'); 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.error({ name: 'export/table', filePath, colmodel, domain, rows: rows.length, error: err.toString(), }); Object.assign(resp, { error: err.toString(), status: 500 }); return null; } }