import { Query } from '@supabase/pg-meta/src/query' import { useQuery } from '@tanstack/react-query' import type { UseCustomQueryOptions, VaultSecret } from 'types' import { executeSql, ExecuteSqlError } from '../sql/execute-sql-query' import { vaultSecretsKeys } from './keys' export const getVaultSecretsSql = () => { const sql = new Query() .from('secrets', 'vault') .select('id,name,description,secret,created_at,updated_at') .toSql() return sql } export type VaultSecretsVariables = { projectRef?: string connectionString?: string | null } export async function getVaultSecrets( { projectRef, connectionString }: VaultSecretsVariables, signal?: AbortSignal ) { const sql = getVaultSecretsSql() const { result } = await executeSql( { projectRef, connectionString, sql, queryKey: ['vault-secrets'] }, signal ) return result as VaultSecret[] } export type VaultSecretsData = Awaited> export type VaultSecretsError = ExecuteSqlError export const useVaultSecretsQuery = ( { projectRef, connectionString }: VaultSecretsVariables, { enabled = true, ...options }: UseCustomQueryOptions = {} ) => useQuery({ queryKey: vaultSecretsKeys.list(projectRef), queryFn: ({ signal }) => getVaultSecrets({ projectRef, connectionString }, signal), enabled: enabled && typeof projectRef !== 'undefined', ...options, })