feat: Оптимизация маршрутов для получения данных из S3 с использованием вспомогательных функций getS3JsonWithHeaders и getS3TextWithHeaders для улучшения читаемости и обработки ошибок. Упрощение кода и улучшение обработки конфигураций серверов и фильтров.
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m34s

This commit is contained in:
2025-10-03 02:08:23 +07:00
parent b80bd402a2
commit a4bd1ab1d4
10 changed files with 922 additions and 190 deletions
+58
View File
@@ -0,0 +1,58 @@
/**
* Утилиты для экспорта данных в CSV/TXT
* Устраняют дублирование кода экспорта
*/
/**
* Экспорт массива объектов в CSV
* @param {Array} items - Массив данных
* @param {Array} headers - Массив заголовков ['field1', 'field2']
* @param {string} filename - Имя файла
*/
export function exportToCSV(items, headers, filename) {
const csvContent = [
headers,
...items.map(item => headers.map(h => item[h] || ''))
]
.map(row => row.map(cell => `"${String(cell || '').replace(/"/g, '""')}"`).join(','))
.join('\n');
downloadFile(csvContent, filename, 'text/csv;charset=utf-8;');
}
/**
* Экспорт данных в текстовый файл
* @param {string} content - Текстовое содержимое
* @param {string} filename - Имя файла
*/
export function exportToText(content, filename) {
downloadFile(content, filename, 'text/plain;charset=utf-8;');
}
/**
* Скачивание файла
* @param {string} content - Содержимое
* @param {string} filename - Имя файла
* @param {string} mimeType - MIME тип
*/
function downloadFile(content, filename, mimeType) {
const blob = new Blob([content], { type: mimeType });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
a.click();
URL.revokeObjectURL(url);
}
/**
* Генерация имени файла с датой
* @param {string} prefix - Префикс имени файла
* @param {string} extension - Расширение файла
* @returns {string} Имя файла с датой
*/
export function generateFilename(prefix, extension = 'csv') {
const date = new Date().toISOString().split('T')[0];
return `${prefix}_${date}.${extension}`;
}