import { ExternalLink } from 'lucide-react' import Link from 'next/link' import toast from 'react-hot-toast' import { useParams } from 'common' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import { useDatabaseExtensionEnableMutation } from 'data/database-extensions/database-extension-enable-mutation' import { useDatabaseExtensionsQuery } from 'data/database-extensions/database-extensions-query' import { AlertDescription_Shadcn_, AlertTitle_Shadcn_, Alert_Shadcn_, Button } from 'ui' import { Markdown } from '../Markdown' export const IndexAdvisorDisabledState = () => { const { ref } = useParams() const { project } = useProjectContext() const { data: extensions } = useDatabaseExtensionsQuery({ projectRef: project?.ref, connectionString: project?.connectionString, }) const hypopgExtension = (extensions ?? []).find((ext) => ext.name === 'hypopg') const indexAdvisorExtension = (extensions ?? []).find((ext) => ext.name === 'index_advisor') const { mutateAsync: enableExtension, isLoading: isEnablingExtension } = useDatabaseExtensionEnableMutation() const onEnableIndexAdvisor = async () => { if (project === undefined) return console.error('Project is required') try { if (hypopgExtension?.installed_version === null) { await enableExtension({ projectRef: project?.ref, connectionString: project?.connectionString, name: hypopgExtension.name, schema: hypopgExtension?.schema ?? 'extensions', version: hypopgExtension.default_version, }) } if (indexAdvisorExtension?.installed_version === null) { await enableExtension({ projectRef: project?.ref, connectionString: project?.connectionString, name: indexAdvisorExtension.name, schema: indexAdvisorExtension?.schema ?? 'extensions', version: indexAdvisorExtension.default_version, }) } toast.success('Successfully enabled index advisor!') } catch (error: any) { toast.error(`Failed to enable index advisor: ${error.message}`) } } return (
{indexAdvisorExtension === undefined ? ( ) : ( )}
) }