Files
Joshen Lim c2608f837d Chore/improvements to datetime editing in table editor (#29660)
* 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
2024-10-04 09:55:04 +08:00

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