From 8f9d233d8c2c957562ce764d21c0ea1e9f5d805e Mon Sep 17 00:00:00 2001 From: ValueOn AG Date: Wed, 27 May 2026 18:07:04 +0200 Subject: [PATCH] fixed db export --- src/pages/admin/AdminDatabaseHealthPage.tsx | 29 ++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/pages/admin/AdminDatabaseHealthPage.tsx b/src/pages/admin/AdminDatabaseHealthPage.tsx index f34ca63..4508727 100644 --- a/src/pages/admin/AdminDatabaseHealthPage.tsx +++ b/src/pages/admin/AdminDatabaseHealthPage.tsx @@ -888,19 +888,24 @@ const MigrationTab: React.FC = () => { const scope = isFullExport ? 'full' : 'partial'; const filename = `db_backup_${instanceLabel}_${scope}_${ts}.json`; - const exportData = { - meta: { - exportedAt: new Date().toISOString(), - version: '1.0', - databaseCount: Object.keys(collectedDatabases).length, - totalTables, - totalRecords, - }, - databases: collectedDatabases, - }; + const meta = JSON.stringify({ + exportedAt: new Date().toISOString(), + version: '1.0', + databaseCount: Object.keys(collectedDatabases).length, + totalTables, + totalRecords, + }); - const content = JSON.stringify(exportData, null, 0); - const blob = new Blob([content], { type: 'application/json' }); + const chunks: string[] = ['{"meta":', meta, ',"databases":{']; + const dbEntries = Object.entries(collectedDatabases); + for (let i = 0; i < dbEntries.length; i++) { + const [dbName, dbData] = dbEntries[i]; + if (i > 0) chunks.push(','); + chunks.push(JSON.stringify(dbName), ':', JSON.stringify(dbData)); + } + chunks.push('}}'); + + const blob = new Blob(chunks, { type: 'application/json' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url;