mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-27 16:26:16 +08:00
3afec8a10f
Four improvements to the database backup mechanism: 1. Auto backup before schema migration - creates a snapshot when upgrading from an older database version, providing a safety net beyond the existing SAVEPOINT rollback mechanism. 2. Periodic startup backup - checks on app launch whether the latest backup is older than 24 hours and creates a new one if needed, ensuring all users have recent backups regardless of usage patterns. 3. Backfill failure notification - switch now returns SwitchResult with warnings instead of silently ignoring backfill errors, so users are informed when their manual config changes may not have been saved. 4. Backup management UI - new BackupListSection in Settings > Data Management showing all backup snapshots with restore capability, including a confirmation dialog and automatic safety backup before restore.
33 lines
820 B
TypeScript
33 lines
820 B
TypeScript
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
|
|
import { backupsApi } from "@/lib/api";
|
|
|
|
export function useBackupManager() {
|
|
const queryClient = useQueryClient();
|
|
|
|
const {
|
|
data: backups = [],
|
|
isLoading,
|
|
refetch,
|
|
} = useQuery({
|
|
queryKey: ["db-backups"],
|
|
queryFn: () => backupsApi.listDbBackups(),
|
|
});
|
|
|
|
const restoreMutation = useMutation({
|
|
mutationFn: (filename: string) => backupsApi.restoreDbBackup(filename),
|
|
onSuccess: async () => {
|
|
// Invalidate all queries to refresh data from restored database
|
|
await queryClient.invalidateQueries();
|
|
// Refetch backup list
|
|
await refetch();
|
|
},
|
|
});
|
|
|
|
return {
|
|
backups,
|
|
isLoading,
|
|
restore: restoreMutation.mutateAsync,
|
|
isRestoring: restoreMutation.isPending,
|
|
};
|
|
}
|