| 12345678910111213141516171819202122232425262728 |
- import { getIndexAdvisorExtensions } from '@/components/interfaces/QueryPerformance/IndexAdvisor/index-advisor.utils'
- import { useDatabaseExtensionsQuery } from '@/data/database-extensions/database-extensions-query'
- import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
- /**
- * Hook to get both index advisor availability and enabled status
- *
- * available if the index_advisor and hypopg extensions are available
- * enabled if the index_advisor and hypopg extensions are installed (their versions are not null)
- */
- export function useIndexAdvisorStatus() {
- const { data: project } = useSelectedProjectQuery()
- const { data: extensions } = useDatabaseExtensionsQuery({
- projectRef: project?.ref,
- connectionString: project?.connectionString,
- })
- const { hypopg, indexAdvisor } = getIndexAdvisorExtensions(extensions ?? [])
- const isIndexAdvisorAvailable = !!hypopg && !!indexAdvisor
- const isIndexAdvisorEnabled =
- isIndexAdvisorAvailable &&
- hypopg.installed_version !== null &&
- indexAdvisor.installed_version !== null
- return { isIndexAdvisorAvailable, isIndexAdvisorEnabled }
- }
|