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 { 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
|