import { Handle, Position } from '@xyflow/react' import { useParams } from 'common' import { PropsWithChildren } from 'react' import { AWS_REGIONS } from 'shared-data' import { cn, Tooltip, TooltipContent, TooltipTrigger } from 'ui' import { DestinationLogo } from '../DestinationLogo' import { getStatusName } from '../Pipeline.utils' import { getReplicationDestinationType } from './Nodes.utils' import { RegionFlag } from '@/components/ui/RegionFlag' import { useReplicationDestinationsQuery } from '@/data/replication/destinations-query' import { useReplicationPipelineStatusQuery } from '@/data/replication/pipeline-status-query' import { useReplicationPipelinesQuery } from '@/data/replication/pipelines-query' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' export const NODE_WIDTH = 480 const NodeContainer = ({ className, children }: PropsWithChildren<{ className?: string }>) => { return (
{children}
) } export const PrimaryDatabaseNode = () => { const { ref: projectRef } = useParams() const { data: project } = useSelectedProjectQuery() const { data: destinationsData } = useReplicationDestinationsQuery({ projectRef }) const hasDestinations = (destinationsData?.destinations ?? []).length > 0 const region = Object.values(AWS_REGIONS).find((x) => x.code === project?.region) return (

Primary Database

{region?.displayName}

{region?.code}

{!!project && }
) } export const ReplicationNode = ({ id }: { id: string }) => { const { ref: projectRef } = useParams() const { data: destinationsData } = useReplicationDestinationsQuery({ projectRef }) const destination = (destinationsData?.destinations ?? []).find((x) => x.id.toString() === id) const { data: pipelinesData } = useReplicationPipelinesQuery({ projectRef, }) const pipeline = (pipelinesData?.pipelines ?? []).find((x) => x.destination_id.toString() === id) const { data: pipelineStatusData } = useReplicationPipelineStatusQuery({ projectRef, pipelineId: pipeline?.id, }) const statusName = getStatusName(pipelineStatusData?.status) const type = getReplicationDestinationType(destination?.config) return (

{type}

{(statusName === 'started' || statusName === 'failed') && (
{statusName} )}

{destination?.name}

ID: {destination?.id}

{type ? : null} ) }