import Link from 'next/link' import { toast } from 'sonner' import { useParams } from 'common' import { DocsButton } from 'components/ui/DocsButton' import { useDatabaseExtensionEnableMutation } from 'data/database-extensions/database-extension-enable-mutation' import { useDatabaseExtensionsQuery } from 'data/database-extensions/database-extensions-query' import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject' import { AlertDescription_Shadcn_, AlertTitle_Shadcn_, Alert_Shadcn_, Button } from 'ui' import { Markdown } from '../Markdown' import { getIndexAdvisorExtensions } from './index-advisor.utils' export const IndexAdvisorDisabledState = () => { const { ref } = useParams() const { data: project } = useSelectedProjectQuery() const { data: extensions } = useDatabaseExtensionsQuery({ projectRef: project?.ref, connectionString: project?.connectionString, }) const { hypopg, indexAdvisor } = getIndexAdvisorExtensions(extensions) const { mutateAsync: enableExtension, isLoading: isEnablingExtension } = useDatabaseExtensionEnableMutation() const onEnableIndexAdvisor = async () => { if (project === undefined) return console.error('Project is required') try { if (hypopg?.installed_version === null) { await enableExtension({ projectRef: project?.ref, connectionString: project?.connectionString, name: hypopg.name, schema: hypopg?.schema ?? 'extensions', version: hypopg.default_version, }) } if (indexAdvisor?.installed_version === null) { await enableExtension({ projectRef: project?.ref, connectionString: project?.connectionString, name: indexAdvisor.name, schema: indexAdvisor?.schema ?? 'extensions', version: indexAdvisor.default_version, }) } toast.success('Successfully enabled index advisor!') } catch (error: any) { toast.error(`Failed to enable index advisor: ${error.message}`) } } return (
{indexAdvisor === undefined ? ( ) : ( )}
) }