"use client"; import {ColumnDef} from "@tanstack/react-table"; import {StatusBadge} from "@/components/common/status-badge"; import {Backup, BackupWith, DatabaseWith} from "@/db/schema/07_database"; import {Setting} from "@/db/schema/01_setting"; import {cn} from "@/lib/utils"; import {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from "@/components/ui/tooltip"; import {MemberWithUser} from "@/db/schema/03_organization"; import {formatLocalizedDate} from "@/utils/date-formatting"; import {formatBytes, formatDuration} from "@/utils/text"; import {DatabaseActionsCell} from "@/features/database/backup-actions-cell"; import { Badge as BadgeC } from "@/components/ui/badge"; import {backupOnly} from "@/features/database/database-tabs"; import {LogsModalTrigger} from "@/features/logs/logs-modal-trigger"; export function backupColumns( isAlreadyRestore: boolean, settings: Setting, database: DatabaseWith, activeMember: MemberWithUser ): ColumnDef[] { const isBackupOnly = backupOnly.some((type) => database.dbms === type) return [ { id: "availability", cell: ({row}) => { const statusColors: Record = { waiting: "bg-gray-400 border-gray-600", ongoing: "bg-orange-400 border-orange-600", success: "bg-green-400 border-green-600", }; const colorStatus = row.original.deletedAt != null ? "bg-red-400 border-red-600" : statusColors[row.original.status] ?? "bg-gray-400 border-gray-600"; return (
{row.original.deletedAt != null && (

{formatLocalizedDate(row.original.deletedAt)}

)} ) }, }, { accessorKey: "id", header: "Reference", cell: ({row}) => { const reference = row.original.id const isImported = row.original.imported const isMigrated = row.original.migrated return (
{reference} {isImported && ( Imported )} {isMigrated && ( Migrated )}
) }, }, { accessorKey: "fileSize", header: "Size", cell: ({row}) => { return formatBytes(row.getValue("fileSize")) }, }, { accessorKey: "durationMs", header: "Duration", cell: ({row}) => { const durationMs = row.getValue("durationMs"); return durationMs ? formatDuration(row.getValue("durationMs")) : "-" }, }, { accessorKey: "createdAt", header: "Created At", cell: ({row}) => { return formatLocalizedDate(row.getValue("createdAt")) }, }, { accessorKey: "status", header: "Status", cell: ({row}) => { return ; }, }, { accessorKey: "logs", header: "Logs", cell: ({row}) => { const logs = row.original.logs ?? []; return ; }, }, { id: "actions", cell: ({row}) => , }, ]; }