import { useParams } from 'common' import dayjs from 'dayjs' import Link from 'next/link' import { useRouter } from 'next/router' import { BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from 'ui' import { PageHeader, PageHeaderBreadcrumb, PageHeaderDescription, PageHeaderMeta, PageHeaderSummary, PageHeaderTitle, } from 'ui-patterns/PageHeader' import { QueueTab } from './QueueTab' import { useQueuesQuery } from '@/data/database-queues/database-queues-query' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' import { DATETIME_FORMAT } from '@/lib/constants' export const QueuePage = () => { const router = useRouter() const { ref, id, pageId, childId } = useParams() const childLabel = router?.query?.['child-label'] as string const { data: project } = useSelectedProjectQuery() const { data: queues } = useQueuesQuery({ projectRef: project?.ref, connectionString: project?.connectionString, }) // pgmq is case-insensitive when storing queue names — compare lowercased to be safe const currentQueue = queues?.find( (queue) => queue.queue_name.toLowerCase() === childId?.toLowerCase() ) const pageTitle = childLabel || childId || 'Queue' const getQueueType = (queue: typeof currentQueue) => { if (!queue) return 'Unknown' return queue.is_partitioned ? 'Partitioned' : queue.is_unlogged ? 'Unlogged' : 'Basic' } const pageSubtitle = currentQueue ? `${getQueueType(currentQueue)} queue created on ${dayjs(currentQueue.created_at).format(DATETIME_FORMAT)}` : undefined return ( <> Integrations Queues {childId} {pageTitle} {pageSubtitle && {pageSubtitle}} ) }