import { DialogAction } from "@/components/shared/dialog-action"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { api } from "@/utils/api"; import { DatabaseBackup, Play, Trash2 } from "lucide-react"; import Link from "next/link"; import { toast } from "sonner"; import type { ServiceType } from "../../application/advanced/show-resources"; import { AddBackup } from "./add-backup"; import { UpdateBackup } from "./update-backup"; interface Props { id: string; type: Exclude; } export const ShowBackups = ({ id, type }: Props) => { const queryMap = { postgres: () => api.postgres.one.useQuery({ postgresId: id }, { enabled: !!id }), mysql: () => api.mysql.one.useQuery({ mysqlId: id }, { enabled: !!id }), mariadb: () => api.mariadb.one.useQuery({ mariadbId: id }, { enabled: !!id }), mongo: () => api.mongo.one.useQuery({ mongoId: id }, { enabled: !!id }), }; const { data } = api.destination.all.useQuery(); const { data: postgres, refetch } = queryMap[type] ? queryMap[type]() : api.mongo.one.useQuery({ mongoId: id }, { enabled: !!id }); const mutationMap = { postgres: () => api.backup.manualBackupPostgres.useMutation(), mysql: () => api.backup.manualBackupMySql.useMutation(), mariadb: () => api.backup.manualBackupMariadb.useMutation(), mongo: () => api.backup.manualBackupMongo.useMutation(), }; const { mutateAsync: manualBackup, isLoading: isManualBackup } = mutationMap[ type ] ? mutationMap[type]() : api.backup.manualBackupMongo.useMutation(); const { mutateAsync: deleteBackup, isLoading: isRemoving } = api.backup.remove.useMutation(); return (
Backups Add backups to your database to save the data to a different provider.
{postgres && postgres?.backups?.length > 0 && ( )}
{data?.length === 0 ? (
To create a backup it is required to set at least 1 provider. Please, go to{" "} S3 Destinations {" "} to do so.
) : (
{postgres?.backups.length === 0 ? (
No backups configured
) : (
{postgres?.backups.map((backup) => (
Destination {backup.destination.name}
Database {backup.database}
Scheduled {backup.schedule}
Prefix Storage {backup.prefix}
Enabled {backup.enabled ? "Yes" : "No"}
Keep Latest {backup.keepLatestCount || 'All'}
Run Manual Backup { await deleteBackup({ backupId: backup.backupId, }) .then(() => { refetch(); toast.success("Backup deleted successfully"); }) .catch(() => { toast.error("Error deleting backup"); }); }} >
))}
)}
)}
); };