@opengis/fastify-table
Version:
core-plugins
44 lines (40 loc) • 1.88 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) || '[]');
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;
}
}