Files
supabase/apps/studio/pages/project/[ref]/database/functions.tsx
Saxon Fletcher 61b032751a Database page components (#40509)
* database page components

* fixes

* fixes
2025-11-19 12:06:38 +10:00

61 lines
1.9 KiB
TypeScript

import { PermissionAction } from '@supabase/shared-types/out/constants'
import FunctionsList from 'components/interfaces/Database/Functions/FunctionsList/FunctionsList'
import DatabaseLayout from 'components/layouts/DatabaseLayout/DatabaseLayout'
import DefaultLayout from 'components/layouts/DefaultLayout'
import { DocsButton } from 'components/ui/DocsButton'
import NoPermission from 'components/ui/NoPermission'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { DOCS_URL } from 'lib/constants'
import type { NextPageWithLayout } from 'types'
import { PageContainer } from 'ui-patterns/PageContainer'
import {
PageHeader,
PageHeaderAside,
PageHeaderMeta,
PageHeaderSummary,
PageHeaderTitle,
} from 'ui-patterns/PageHeader'
import { PageSection, PageSectionContent } from 'ui-patterns/PageSection'
const DatabaseFunctionsPage: NextPageWithLayout = () => {
const { can: canReadFunctions, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
PermissionAction.TENANT_SQL_ADMIN_READ,
'functions'
)
if (isPermissionsLoaded && !canReadFunctions) {
return <NoPermission isFullPage resourceText="view database functions" />
}
return (
<>
<PageHeader size="large">
<PageHeaderMeta>
<PageHeaderSummary>
<PageHeaderTitle>Database Functions</PageHeaderTitle>
</PageHeaderSummary>
<PageHeaderAside>
<DocsButton href={`${DOCS_URL}/guides/database/functions`} />
</PageHeaderAside>
</PageHeaderMeta>
</PageHeader>
<PageContainer size="large">
<PageSection>
<PageSectionContent>
<FunctionsList />
</PageSectionContent>
</PageSection>
</PageContainer>
</>
)
}
DatabaseFunctionsPage.getLayout = (page) => (
<DefaultLayout>
<DatabaseLayout title="Database">{page}</DatabaseLayout>
</DefaultLayout>
)
export default DatabaseFunctionsPage