dedicated-pooler-logs.tsx47 lines · main
1import { useParams } from 'common'
2import { useRouter } from 'next/router'
3import { useEffect } from 'react'
4import { LogoLoader } from 'ui'
5
6import { LogsTableName } from '@/components/interfaces/Settings/Logs/Logs.constants'
7import { LogsPreviewer } from '@/components/interfaces/Settings/Logs/LogsPreviewer'
8import DefaultLayout from '@/components/layouts/DefaultLayout'
9import LogsLayout from '@/components/layouts/LogsLayout/LogsLayout'
10import { useCheckEntitlements } from '@/hooks/misc/useCheckEntitlements'
11import type { NextPageWithLayout } from '@/types'
12
13export const LogPage: NextPageWithLayout = () => {
14 const router = useRouter()
15 const { ref } = useParams()
16 const { hasAccess: hasDedicatedPooler, isLoading: isLoadingEntitlement } =
17 useCheckEntitlements('dedicated_pooler')
18
19 useEffect(() => {
20 // Redirect to pooler logs if org is not entitled to dedicated pooler
21 if (!isLoadingEntitlement && !hasDedicatedPooler) {
22 router.push(`/project/${ref}/logs/pooler-logs`)
23 }
24 }, [hasDedicatedPooler, isLoadingEntitlement, ref, router])
25
26 // Prevent showing logs while checking entitlement
27 if (isLoadingEntitlement || !hasDedicatedPooler) {
28 return <LogoLoader />
29 }
30
31 return (
32 <LogsPreviewer
33 projectRef={ref as string}
34 condensedLayout={true}
35 tableName={LogsTableName.PGBOUNCER}
36 queryType={'pgbouncer'}
37 />
38 )
39}
40
41LogPage.getLayout = (page) => (
42 <DefaultLayout>
43 <LogsLayout title="Dedicated Pooler Logs">{page}</LogsLayout>
44 </DefaultLayout>
45)
46
47export default LogPage