import * as Tooltip from '@radix-ui/react-tooltip' import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import dayjs from 'dayjs' import { AlertCircle } from 'lucide-react' import { FormPanel } from 'components/ui/Forms/FormPanel' import { useBackupsQuery } from 'data/database/backups-query' import { useReadReplicasQuery } from 'data/read-replicas/replicas-query' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { Button } from 'ui' import type { Timezone } from './PITR.types' import { TimezoneSelection } from './TimezoneSelection' interface PITRStatusProps { selectedTimezone: Timezone onUpdateTimezone: (timezone: Timezone) => void onSetConfiguration: () => void } const PITRStatus = ({ selectedTimezone, onUpdateTimezone, onSetConfiguration, }: PITRStatusProps) => { const { ref } = useParams() const { data: backups } = useBackupsQuery({ projectRef: ref }) const { data: databases } = useReadReplicasQuery({ projectRef: ref }) const hasReadReplicas = (databases ?? []).length > 1 const { earliestPhysicalBackupDateUnix, latestPhysicalBackupDateUnix } = backups?.physicalBackupData ?? {} const earliestAvailableBackup = dayjs .unix(earliestPhysicalBackupDateUnix ?? 0) .tz(selectedTimezone?.utc[0]) .format('DD MMM YYYY, HH:mm:ss') const latestAvailableBackup = dayjs .unix(latestPhysicalBackupDateUnix ?? 0) .tz(selectedTimezone?.utc[0]) .format('DD MMM YYYY, HH:mm:ss') const canTriggerPhysicalBackup = useCheckPermissions( PermissionAction.INFRA_EXECUTE, 'queue_job.walg.prepare_restore' ) return ( <>
You'll be able to pick the right date and time when you begin
{hasReadReplicas || (!canTriggerPhysicalBackup && (
{hasReadReplicas ? 'You will need to remove all read replicas first to trigger a PITR recovery' : !canTriggerPhysicalBackup ? 'You need additional permissions to trigger a PITR recovery' : null}
))}
} >

Database restore available from

{earliestAvailableBackup}

Latest restore available at

{latestAvailableBackup}

) } export default PITRStatus