| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import { INTEGRATIONS } from '@/components/interfaces/Integrations/Landing/Integrations.constants'
- import {
- DatabaseExtension,
- useDatabaseExtensionsQuery,
- } from '@/data/database-extensions/database-extensions-query'
- import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
- export const useS3VectorsWrapperExtension = (): {
- extension: DatabaseExtension | undefined
- state: 'not-found' | 'loading' | 'installed' | 'needs-upgrade' | 'not-installed'
- } => {
- const { data: project } = useSelectedProjectQuery()
- const { data: extensionsData, isPending: isExtensionsLoading } = useDatabaseExtensionsQuery({
- projectRef: project?.ref,
- connectionString: project?.connectionString,
- })
- const integration = INTEGRATIONS.find((i) => i.id === 's3_vectors_wrapper')
- if (!integration || integration.type !== 'wrapper') {
- // This should never happen
- return { extension: undefined, state: 'not-found' as const }
- }
- const wrapperMeta = integration.meta
- const wrappersExtension = extensionsData?.find((ext) => ext.name === 'wrappers')
- const isWrappersExtensionInstalled = !!wrappersExtension?.installed_version
- const hasRequiredVersion =
- (wrappersExtension?.installed_version ?? '') >= (wrapperMeta?.minimumExtensionVersion ?? '')
- const state: 'not-found' | 'loading' | 'installed' | 'needs-upgrade' | 'not-installed' =
- isExtensionsLoading
- ? 'loading'
- : isWrappersExtensionInstalled
- ? hasRequiredVersion
- ? 'installed'
- : 'needs-upgrade'
- : 'not-installed'
- return { extension: wrappersExtension, state }
- }
|