import dayjs from 'dayjs' import { includes, sortBy } from 'lodash' import { Check, ChevronRight, Loader2, X } from 'lucide-react' import { useRouter } from 'next/router' import { pgmqQueueTable } from './Queues.utils' import Table from '@/components/to-be-cleaned/Table' import { useQueuesMetricsQuery } from '@/data/database-queues/database-queues-metrics-query' import { PostgresQueue } from '@/data/database-queues/database-queues-query' import { useTablesQuery } from '@/data/tables/tables-query' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' import { DATETIME_FORMAT } from '@/lib/constants' interface QueuesRowsProps { queues: PostgresQueue[] filterString: string } const QueueRow = ({ queue }: { queue: PostgresQueue }) => { const router = useRouter() const { data: selectedProject } = useSelectedProjectQuery() const { data: queueTables } = useTablesQuery({ projectRef: selectedProject?.ref, connectionString: selectedProject?.connectionString, schema: 'pgmq', }) const queueTable = queueTables?.find((x) => x.name === pgmqQueueTable(queue.queue_name)) const isRlsEnabled = !!queueTable?.rls_enabled const { data: metrics, isPending: isLoading } = useQueuesMetricsQuery( { queueName: queue.queue_name, projectRef: selectedProject?.ref, connectionString: selectedProject?.connectionString, }, { staleTime: 30 * 1000, // 30 seconds, talk with Oli whether this is ok to call every minute } ) const type = queue.is_partitioned ? 'Partitioned' : queue.is_unlogged ? 'Unlogged' : 'Basic' return (
{queue.queue_name}
{type}
{dayjs(queue.created_at).format(DATETIME_FORMAT)}
{metrics?.queue_length} {metrics?.method === 'estimated' ? '(Approximate)' : null}
)}No results found
Your search for "{filterString}" did not return any results