| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 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 (
- <>
- <PageHeader size="full" className="pb-6">
- <PageHeaderBreadcrumb>
- <BreadcrumbList>
- <BreadcrumbItem>
- <BreadcrumbLink asChild>
- <Link href={`/project/${ref}/integrations`}>Integrations</Link>
- </BreadcrumbLink>
- </BreadcrumbItem>
- <BreadcrumbSeparator />
- <BreadcrumbItem>
- <BreadcrumbLink asChild>
- <Link
- href={
- pageId
- ? `/project/${ref}/integrations/${id}/${pageId}`
- : `/project/${ref}/integrations/${id}`
- }
- >
- Queues
- </Link>
- </BreadcrumbLink>
- </BreadcrumbItem>
- <BreadcrumbSeparator />
- <BreadcrumbItem>
- <BreadcrumbPage>{childId}</BreadcrumbPage>
- </BreadcrumbItem>
- </BreadcrumbList>
- </PageHeaderBreadcrumb>
- <PageHeaderMeta>
- <PageHeaderSummary>
- <PageHeaderTitle>{pageTitle}</PageHeaderTitle>
- {pageSubtitle && <PageHeaderDescription>{pageSubtitle}</PageHeaderDescription>}
- </PageHeaderSummary>
- </PageHeaderMeta>
- </PageHeader>
- <QueueTab />
- </>
- )
- }
|