mirror of
https://github.com/supabase/supabase.git
synced 2026-10-17 23:29:08 +03:00
* Auto open date time picker, add set to null CTA for nullable date time fields * Add dropdown option instead * Small fix * Add docs Url for database functions and triggers, fix space-x-2 in database/tables * Some fixes
75 lines
2.6 KiB
TypeScript
75 lines
2.6 KiB
TypeScript
import { PermissionAction } from '@supabase/shared-types/out/constants'
|
|
import { useState } from 'react'
|
|
|
|
import { CreateFunction, DeleteFunction } from 'components/interfaces/Database'
|
|
import FunctionsList from 'components/interfaces/Database/Functions/FunctionsList/FunctionsList'
|
|
import DatabaseLayout from 'components/layouts/DatabaseLayout/DatabaseLayout'
|
|
import { ScaffoldContainer, ScaffoldSection } from 'components/layouts/Scaffold'
|
|
import { FormHeader } from 'components/ui/Forms/FormHeader'
|
|
import NoPermission from 'components/ui/NoPermission'
|
|
import { DatabaseFunction } from 'data/database-functions/database-functions-query'
|
|
import { useCheckPermissions, usePermissionsLoaded } from 'hooks/misc/useCheckPermissions'
|
|
import type { NextPageWithLayout } from 'types'
|
|
|
|
const FunctionsPage: NextPageWithLayout = () => {
|
|
const [selectedFunction, setSelectedFunction] = useState<DatabaseFunction | undefined>()
|
|
const [showCreateFunctionForm, setShowCreateFunctionForm] = useState(false)
|
|
const [showDeleteFunctionForm, setShowDeleteFunctionForm] = useState(false)
|
|
|
|
const canReadFunctions = useCheckPermissions(PermissionAction.TENANT_SQL_ADMIN_READ, 'functions')
|
|
const isPermissionsLoaded = usePermissionsLoaded()
|
|
|
|
const createFunction = () => {
|
|
setSelectedFunction(undefined)
|
|
setShowCreateFunctionForm(true)
|
|
}
|
|
|
|
const editFunction = (fn: any) => {
|
|
setSelectedFunction(fn)
|
|
setShowCreateFunctionForm(true)
|
|
}
|
|
|
|
const deleteFunction = (fn: any) => {
|
|
setSelectedFunction(fn)
|
|
setShowDeleteFunctionForm(true)
|
|
}
|
|
|
|
if (isPermissionsLoaded && !canReadFunctions) {
|
|
return <NoPermission isFullPage resourceText="view database functions" />
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<ScaffoldContainer>
|
|
<ScaffoldSection>
|
|
<div className="col-span-12">
|
|
<FormHeader
|
|
title="Database Functions"
|
|
docsUrl="https://supabase.com/docs/guides/database/functions"
|
|
/>
|
|
<FunctionsList
|
|
createFunction={createFunction}
|
|
editFunction={editFunction}
|
|
deleteFunction={deleteFunction}
|
|
/>
|
|
</div>
|
|
</ScaffoldSection>
|
|
</ScaffoldContainer>
|
|
<CreateFunction
|
|
func={selectedFunction}
|
|
visible={showCreateFunctionForm}
|
|
setVisible={setShowCreateFunctionForm}
|
|
/>
|
|
<DeleteFunction
|
|
func={selectedFunction}
|
|
visible={showDeleteFunctionForm}
|
|
setVisible={setShowDeleteFunctionForm}
|
|
/>
|
|
</>
|
|
)
|
|
}
|
|
|
|
FunctionsPage.getLayout = (page) => <DatabaseLayout title="Database">{page}</DatabaseLayout>
|
|
|
|
export default FunctionsPage
|