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 { CreateTrigger, DeleteTrigger } from 'components/interfaces/Database'
import TriggersList from 'components/interfaces/Database/Triggers/TriggersList/TriggersList'
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 { useCheckPermissions, usePermissionsLoaded } from 'hooks/misc/useCheckPermissions'
import type { NextPageWithLayout } from 'types'
const TriggersPage: NextPageWithLayout = () => {
const [selectedTrigger, setSelectedTrigger] = useState<any>()
const [showCreateTriggerForm, setShowCreateTriggerForm] = useState<boolean>(false)
const [showDeleteTriggerForm, setShowDeleteTriggerForm] = useState<boolean>(false)
const canReadTriggers = useCheckPermissions(PermissionAction.TENANT_SQL_ADMIN_READ, 'triggers')
const isPermissionsLoaded = usePermissionsLoaded()
const createTrigger = () => {
setSelectedTrigger(undefined)
setShowCreateTriggerForm(true)
}
const editTrigger = (trigger: any) => {
setSelectedTrigger(trigger)
setShowCreateTriggerForm(true)
}
const deleteTrigger = (trigger: any) => {
setSelectedTrigger(trigger)
setShowDeleteTriggerForm(true)
}
if (isPermissionsLoaded && !canReadTriggers) {
return <NoPermission isFullPage resourceText="view database triggers" />
}
return (
<>
<ScaffoldContainer>
<ScaffoldSection>
<div className="col-span-12">
<FormHeader
title="Database Triggers"
description="Execute a set of actions automatically on specified table events"
docsUrl="https://supabase.com/docs/guides/database/postgres/triggers"
/>
<TriggersList
createTrigger={createTrigger}
editTrigger={editTrigger}
deleteTrigger={deleteTrigger}
/>
</div>
</ScaffoldSection>
</ScaffoldContainer>
<CreateTrigger
trigger={selectedTrigger}
visible={showCreateTriggerForm}
setVisible={setShowCreateTriggerForm}
/>
<DeleteTrigger
trigger={selectedTrigger}
visible={showDeleteTriggerForm}
setVisible={setShowDeleteTriggerForm}
/>
</>
)
}
TriggersPage.getLayout = (page) => <DatabaseLayout title="Database">{page}</DatabaseLayout>
export default TriggersPage