mirror of
https://github.com/supabase/supabase.git
synced 2026-07-04 02:54:28 +08:00
* add basic feature * rename to datasource * rename elements in left sidebar * update copy in titles in left sidebar * Add optional 'enabled' parameter in useLogsQuery hook * Update warehouse query state and components * add template selector for warehouse query builder * update deprecated input compo * fix create token and console warnings * fix type errors * fix dupped import * update endpoints and add missing permissions * update queries with new api path * fix type errors * undo last commit * undo missing file * fix imports in logs page * import fixes * add settings link like in storage menu * sort imports, fix form submit * rename access tokens settings section * align dropdwn * add overflow to templates dropdown * add name as defaultvalue to udpate form * update rm collection dialog * capitalize * Update apps/studio/pages/project/[ref]/logs/explorer/index.tsx Co-authored-by: Joshen Lim <joshenlimek@gmail.com> * fix typo --------- Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
88 lines
2.3 KiB
TypeScript
88 lines
2.3 KiB
TypeScript
import { useQuery } from '@tanstack/react-query'
|
|
import { Dispatch, SetStateAction, useState } from 'react'
|
|
|
|
import {
|
|
EXPLORER_DATEPICKER_HELPERS,
|
|
genQueryParams,
|
|
getDefaultHelper,
|
|
} from 'components/interfaces/Settings/Logs/Logs.constants'
|
|
import type {
|
|
LogData,
|
|
Logs,
|
|
LogsEndpointParams,
|
|
} from 'components/interfaces/Settings/Logs/Logs.types'
|
|
import { get, isResponseOk } from 'lib/common/fetch'
|
|
import { API_URL } from 'lib/constants'
|
|
|
|
export interface LogsQueryHook {
|
|
params: LogsEndpointParams
|
|
isLoading: boolean
|
|
logData: LogData[]
|
|
data?: never
|
|
error: string | Object | null
|
|
changeQuery: (newQuery?: string) => void
|
|
runQuery: () => void
|
|
setParams: Dispatch<SetStateAction<LogsEndpointParams>>
|
|
enabled?: boolean
|
|
}
|
|
|
|
const useLogsQuery = (
|
|
projectRef: string,
|
|
initialParams: Partial<LogsEndpointParams> = {},
|
|
enabled = true
|
|
): LogsQueryHook => {
|
|
const defaultHelper = getDefaultHelper(EXPLORER_DATEPICKER_HELPERS)
|
|
const [params, setParams] = useState<LogsEndpointParams>({
|
|
sql: initialParams?.sql || '',
|
|
project: projectRef,
|
|
iso_timestamp_start: initialParams.iso_timestamp_start
|
|
? initialParams.iso_timestamp_start
|
|
: defaultHelper.calcFrom(),
|
|
iso_timestamp_end: initialParams.iso_timestamp_end
|
|
? initialParams.iso_timestamp_end
|
|
: defaultHelper.calcTo(),
|
|
})
|
|
|
|
const _enabled = enabled && typeof projectRef !== 'undefined' && Boolean(params.sql)
|
|
|
|
const queryParams = genQueryParams(params as any)
|
|
|
|
const {
|
|
data,
|
|
error: rqError,
|
|
isLoading,
|
|
isRefetching,
|
|
refetch,
|
|
} = useQuery(
|
|
['projects', projectRef, 'logs', queryParams],
|
|
({ signal }) =>
|
|
get<Logs>(`${API_URL}/projects/${projectRef}/analytics/endpoints/logs.all?${queryParams}`, {
|
|
signal,
|
|
}),
|
|
{
|
|
enabled: _enabled,
|
|
refetchOnWindowFocus: false,
|
|
}
|
|
)
|
|
|
|
let error: null | string | object = rqError ? (rqError as any).message : null
|
|
|
|
if (!error && data?.error) {
|
|
error = data?.error
|
|
}
|
|
const changeQuery = (newQuery = '') => {
|
|
setParams((prev) => ({ ...prev, sql: newQuery }))
|
|
}
|
|
|
|
return {
|
|
params,
|
|
isLoading: (_enabled && isLoading) || isRefetching,
|
|
logData: isResponseOk(data) && data.result ? data.result : [],
|
|
error,
|
|
changeQuery,
|
|
runQuery: () => refetch(),
|
|
setParams,
|
|
}
|
|
}
|
|
export default useLogsQuery
|