useS3VectorsWrapperInstance.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { useMemo } from 'react'
  2. import { getVectorBucketFDWName } from './VectorBuckets.utils'
  3. import {
  4. WRAPPER_HANDLERS,
  5. WRAPPERS,
  6. } from '@/components/interfaces/Integrations/Wrappers/Wrappers.constants'
  7. import { wrapperMetaComparator } from '@/components/interfaces/Integrations/Wrappers/Wrappers.utils'
  8. import { useFDWsQuery } from '@/data/fdw/fdws-query'
  9. import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
  10. export const useS3VectorsWrapperInstance = ({ bucketId }: { bucketId?: string }) => {
  11. const { data: project, isPending: isLoadingProject } = useSelectedProjectQuery()
  12. const { data, isPending: isLoadingFDWs } = useFDWsQuery(
  13. {
  14. projectRef: project?.ref,
  15. connectionString: project?.connectionString,
  16. },
  17. {
  18. enabled: !!bucketId,
  19. }
  20. )
  21. const s3VectorsWrapper = useMemo(() => {
  22. return data
  23. ?.filter((wrapper) =>
  24. wrapperMetaComparator(
  25. { handlerName: WRAPPER_HANDLERS.S3_VECTORS, server: { options: [] } },
  26. wrapper
  27. )
  28. )
  29. .find((w) => w.name === getVectorBucketFDWName(bucketId ?? ''))
  30. }, [data, bucketId])
  31. const s3VectorsWrapperMeta = WRAPPERS.find((w) => w.handlerName === WRAPPER_HANDLERS.S3_VECTORS)
  32. return {
  33. data: s3VectorsWrapper,
  34. meta: s3VectorsWrapperMeta!,
  35. isLoading: isLoadingProject || isLoadingFDWs,
  36. }
  37. }