import { useQuery } from '@tanstack/react-query' import { components } from 'api-types' import { replicaKeys } from './keys' import { get, handleError } from '@/data/fetchers' import type { ResponseError, UseCustomQueryOptions } from '@/types' // [Joshen] Is it possible to import this from the code gen? // https://github.com/supabase/platform/blob/develop/api/src/routes/platform/projects/ref/databases-statuses.dto.ts#L7 export enum ReplicaInitializationStatus { 'InProgress' = 'in_progress', 'Completed' = 'completed', 'Failed' = 'failed', } export type DatabaseStatus = components['schemas']['DatabaseStatusResponse'] export type DatabaseInitEstimations = { baseBackupDownloadEstimateSeconds: number walArchiveReplayEstimateSeconds: number } export type ReadReplicasStatusesVariables = { projectRef?: string } export async function getReadReplicasStatuses( { projectRef }: ReadReplicasStatusesVariables, signal?: AbortSignal ) { if (!projectRef) throw new Error('Project ref is required') const { data, error } = await get(`/platform/projects/{ref}/databases-statuses`, { params: { path: { ref: projectRef } }, signal, }) if (error) handleError(error) return data } export type ReadReplicasStatusesData = Awaited> export type ReadReplicasStatusesError = ResponseError export const useReadReplicasStatusesQuery = ( { projectRef }: ReadReplicasStatusesVariables, { enabled = true, ...options }: UseCustomQueryOptions = {} ) => { return useQuery({ queryKey: replicaKeys.statuses(projectRef), queryFn: ({ signal }) => getReadReplicasStatuses({ projectRef }, signal), enabled: enabled && typeof projectRef !== 'undefined', ...options, }) }