| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { useQuery } from '@tanstack/react-query'
- import { LOGS_TABLES } from '@/components/interfaces/Settings/Logs/Logs.constants'
- import type {
- LogData,
- Logs,
- LogsEndpointParams,
- QueryType,
- } from '@/components/interfaces/Settings/Logs/Logs.types'
- import { genSingleLogQuery } from '@/components/interfaces/Settings/Logs/Logs.utils'
- import { get } from '@/data/fetchers'
- import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
- interface SingleLogHook {
- data: LogData | undefined
- error: string | Object | null
- isLoading: boolean
- refresh: () => void
- }
- type SingleLogParams = {
- id?: string
- projectRef: string
- queryType?: QueryType
- paramsToMerge?: Partial<LogsEndpointParams>
- }
- function useSingleLog({
- projectRef,
- id,
- queryType,
- paramsToMerge,
- }: SingleLogParams): SingleLogHook {
- const table = queryType ? LOGS_TABLES[queryType] : undefined
- const sql = id && table ? genSingleLogQuery(table, id) : ''
- const params: LogsEndpointParams = { ...paramsToMerge, sql }
- const enabled = Boolean(id && table)
- const { logsMetadata } = useIsFeatureEnabled(['logs:metadata'])
- const {
- data,
- error: rcError,
- isPending,
- isRefetching,
- refetch,
- } = useQuery({
- queryKey: ['projects', projectRef, 'single-log', id, queryType],
- queryFn: async ({ signal }) => {
- const { data, error } = await get(`/platform/projects/{ref}/analytics/endpoints/logs.all`, {
- params: {
- path: { ref: projectRef },
- query: params,
- },
- signal,
- })
- if (error) {
- throw error
- }
- return data as unknown as Logs
- },
- enabled,
- refetchOnWindowFocus: false,
- refetchOnMount: false,
- refetchOnReconnect: false,
- })
- let error: null | string | object = rcError ? (rcError as any).message : null
- const result = data?.result ? data.result[0] : undefined
- return {
- data: !!result
- ? { ...result, metadata: logsMetadata ? result?.metadata : undefined }
- : undefined,
- isLoading: (enabled && isPending) || isRefetching,
- error,
- refresh: () => refetch(),
- }
- }
- export default useSingleLog
|