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;