mirror of
https://github.com/supabase/supabase.git
synced 2026-05-08 18:00:20 -04:00
73 lines
2.4 KiB
TypeScript
73 lines
2.4 KiB
TypeScript
import { useParams } from 'common'
|
|
|
|
import { DestinationType } from './DestinationPanel/DestinationPanel.types'
|
|
import { getStatusName } from './Pipeline.utils'
|
|
import { getReplicationDestinationType } from './ReplicationDiagram/Nodes.utils'
|
|
import { useReplicationDestinationByIdQuery } from '@/data/replication/destination-by-id-query'
|
|
import { useReplicationPipelineStatusQuery } from '@/data/replication/pipeline-status-query'
|
|
import { useReplicationPipelinesQuery } from '@/data/replication/pipelines-query'
|
|
import { useReplicationSourcesQuery } from '@/data/replication/sources-query'
|
|
|
|
export const useDestinationInformation = ({ id }: { id?: number | null }) => {
|
|
const { ref: projectRef } = useParams()
|
|
|
|
const { data: sourcesData, isSuccess: isSourcesSuccess } = useReplicationSourcesQuery({
|
|
projectRef,
|
|
})
|
|
const sourceId = sourcesData?.sources.find((s) => s.name === projectRef)?.id
|
|
const replicationNotEnabled = isSourcesSuccess && !sourceId
|
|
|
|
const {
|
|
data: destination,
|
|
error: destinationError,
|
|
isPending: isDestinationPending,
|
|
isError: isDestinationError,
|
|
isSuccess: isDestinationSuccess,
|
|
} = useReplicationDestinationByIdQuery({
|
|
projectRef,
|
|
destinationId: id,
|
|
})
|
|
const destinationType: DestinationType | undefined = getReplicationDestinationType(
|
|
destination?.config as Record<string, unknown> | undefined
|
|
)
|
|
|
|
const {
|
|
data: pipelinesData,
|
|
error: pipelineError,
|
|
isPending: isPipelinePending,
|
|
isError: isPipelineError,
|
|
isSuccess: isPipelineSuccess,
|
|
} = useReplicationPipelinesQuery({ projectRef })
|
|
const pipeline = pipelinesData?.pipelines.find((p) => p.destination_id === id)
|
|
|
|
const { data: pipelineStatus } = useReplicationPipelineStatusQuery({
|
|
projectRef,
|
|
pipelineId: pipeline?.id,
|
|
})
|
|
const statusName = getStatusName(pipelineStatus?.status)
|
|
|
|
return {
|
|
sourceId,
|
|
destination,
|
|
pipeline,
|
|
pipelineStatus,
|
|
// Derivatives
|
|
statusName,
|
|
type: destinationType,
|
|
replicationNotEnabled,
|
|
// Data fetching status (Secondary information)
|
|
pipelineFetcher: {
|
|
error: pipelineError,
|
|
isPending: isPipelinePending,
|
|
isError: isPipelineError,
|
|
isSuccess: isPipelineSuccess,
|
|
},
|
|
destinationFetcher: {
|
|
error: destinationError,
|
|
isPending: isDestinationPending,
|
|
isError: isDestinationError,
|
|
isSuccess: isDestinationSuccess,
|
|
},
|
|
}
|
|
}
|