fix(settings): восстанавливать базу транзакционно и сохранять результат операции

This commit is contained in:
Denozordec committed 2026-10-03 14:45:51 +07:00
1 parent ff8b04bddf
commit af5dbb0519
12 files changed
+86 -40

No files matched your search

+5 -2
View File
@@ -77,7 +77,7 @@ function DatabaseRestoreConfirm({
<AlertDialogAction
variant="destructive"
disabled={busy}
onClick={onConfirm}
onClick={event => { event.preventDefault(); onConfirm() }}
>
{busy ? <LoaderCircleIcon className="size-4 animate-spin" /> : null}
{busy ? "Восстановление…" : "Восстановить"}
@@ -124,8 +124,9 @@ export default function SettingsPage() {
if (!dbRestoreFile || !systemDbAvailable) return
setDbRestoreBusy(true)
try {
await restoreSystemDatabaseBackup(backendUrl, dbRestoreFile)
const receipt = await restoreSystemDatabaseBackup(backendUrl, dbRestoreFile)
toast.success("База приложения восстановлена")
for (const warning of [receipt.eventError,receipt.listenerError,receipt.schedulerError,receipt.cleanupError]) if (warning) toast.warning(warning)
setDbRestoreFile(null)
} catch (e) {
toast.error(e instanceof Error ? e.message : "Не удалось восстановить базу")
@@ -347,6 +348,8 @@ export default function SettingsPage() {
open={dbRestoreDialogOpen}
onOpenChange={setDbRestoreDialogOpen}
title="Восстановление базы данных"
actionLabel="Продолжить"
successMessage={null}
description="Выберите файл pg_dump custom (.dump) — текущая база будет полностью заменена"
accept=".dump,.backup,application/octet-stream"
onImport={async (files) => {