import { safeSql } from '@supabase/pg-meta/src/pg-format' import { useQuery } from '@tanstack/react-query' import { databaseQueuesKeys } from './keys' import { executeSql } from '@/data/sql/execute-sql-mutation' import type { ResponseError, UseCustomQueryOptions } from '@/types' export type DatabaseQueuesVariables = { projectRef?: string connectionString?: string | null } export type PostgresQueue = { queue_name: string is_partitioned: boolean is_unlogged: boolean created_at: string } const queueSqlQuery = safeSql`select * from pgmq.list_queues();` export async function getDatabaseQueues({ projectRef, connectionString }: DatabaseQueuesVariables) { if (!projectRef) throw new Error('Project ref is required') const { result } = await executeSql({ projectRef, connectionString, sql: queueSqlQuery, }) return result } export type DatabaseQueueData = PostgresQueue[] export type DatabaseQueueError = ResponseError export const useQueuesQuery = ( { projectRef, connectionString }: DatabaseQueuesVariables, { enabled = true, ...options }: UseCustomQueryOptions = {} ) => useQuery({ queryKey: databaseQueuesKeys.list(projectRef), queryFn: () => getDatabaseQueues({ projectRef, connectionString }), enabled: enabled && typeof projectRef !== 'undefined', ...options, })