import { LoadingOverlay, Typography } from '@tidbcloud/uikit'
import { ProTable } from '@tidbcloud/uikit/biz'
import { observer } from 'mobx-react'

import { useOrgProjectClusterIds } from 'dbaas/features/Common'
import {
  useTidbServiceGetBackupSetting,
  useTidbServiceListBackupPolicies
} from 'dbaas/services/api-clients/v2025/tidb-management/v1beta2'

function _BackupSettingLegacy({ tidbId }: { tidbId: string }) {
  const { orgId, projectId } = useOrgProjectClusterIds()
  const { data: backupSetting, isFetching } = useTidbServiceGetBackupSetting(
    tidbId,
    { orgId, projectId },
    {
      query: {
        refetchOnWindowFocus: false
      }
    }
  )
  const { data: backupPoliciesData, isLoading: isLoadingPolicies } = useTidbServiceListBackupPolicies(
    tidbId,
    { orgId, projectId },
    {
      query: {
        refetchOnWindowFocus: false,
        enabled: !!orgId && !!projectId && !!tidbId && !!backupSetting?.backupPolicy
      }
    }
  )

  const policy = backupPoliciesData?.backupPolicies?.find((item) => item.name === backupSetting?.backupPolicy)
  const pitrRetention = policy?.pitr?.retentionDays ?? 0
  const hourlyRetention = policy?.hourlyBackup?.retentionDays ?? 0
  const dailyRetention = policy?.dailyBackup?.retentionDays ?? 0

  return (
    <div data-testid="legacy-backup-settings">
      <LoadingOverlay visible={isFetching || isLoadingPolicies} overlayProps={{ blur: 10 }} />
      <ProTable
        mantineTableProps={{ highlightOnHover: false }}
        columns={[
          {
            header: 'Feature',
            Header: () => <Typography ml={8}>Feature</Typography>,
            accessorFn: (row) => <Typography ml={8}>{row.feature}</Typography>
          },
          { header: 'Retention', accessorKey: 'retention', maxSize: 80 },
          { header: 'Restore Detail', accessorKey: 'description' }
        ]}
        data={[
          {
            feature: 'PITR',
            retention: `${pitrRetention} days`,
            description: `Allows restoration to any specific moment within the ${pitrRetention}-day retention period.`
          },
          {
            feature: 'Hourly Backup Snapshot',
            retention: `${hourlyRetention} days`,
            description: `Regular restoration available for each hourly snapshot for ${hourlyRetention} days.`
          },
          {
            feature: 'Daily Backup Snapshot',
            retention: `${dailyRetention} days`,
            description: `Daily snapshot(0:00 UTC) restoration available for the ${dailyRetention}-day retention period.`
          }
        ]}
      />
    </div>
  )
}

export const BackupSettingLegacy = observer(_BackupSettingLegacy)
