mirror of
https://github.com/supabase/supabase.git
synced 2026-10-06 09:55:06 +03:00
* add dummy sinks and pipelines pages * update api types * show empty sources state * show empty replication state at /replication * create source when enable replication button is clicked * improve replication page when replication is enabled * replace sources page with publications page * publications table * show publications in table * create publication wip * show toast error instead of throwing an exception * user can now delete a publication * show empty sinks page * create and list sinks * add ui to delete a sink * show pipelines on the pipelines page * add ui to create and delete pipelines * get pipeline status wip * show pipeline status wip * show correct label on action buttons * start and stop pipelines * remove a couple of console.logs * fix error when deleting a pipeline * only consider replication enabled when a source with name = ref is present * add source and sink names * correct colspan for 'no pipelines' row * hide 'supabase_realtime' publication on ui * move filtering to fetch query * show sink name in ui * show source/sink names on pipelines page * fix start/stop status shown on ui * fix prettier formatting * update api types * extract pipeline action button as a separate component * fix a crashing page * fixed publications page crash * update to match with changes in api * add new replication page under database * hide replication page behind feature flag * update types * update api types * show destinations empty state * add destinations table * factor out components from Destinations table * show status dot * move pipeline fetch query to parent component * add ability to enable/disable a pipeline * show loader when starting or stopping a pipeline * fix a bug in which loading & empty states were shown together * fix a bug in which error & empty states were shown together * wrap in default layout * add new destination panel * add type field * fix a forwardRef error * fix layout * create destination * delete destination * add ability to create or delete destinations with pipelines * create source if missing * show only a single error * add an enable switch * new layout * add subsections * comment out unused code * show enabled switch only in the header * close panel when destination is created * disable buttons when api requests in flight * reduce panel size * remove commented out code * treat max size and max fill secs as numbers * use drop down to show publications * simpler vertical layout * add separators * add form validation * remove publications drop down padding * add new publication button * hide advanced settings behind an accordion * add some margin between icon and text * show publications panel on clicking new publication button * add header to new publication panel * fix validation not running for publication drop down * create publication in the new publication panel * add table selector in new publication panel * update api types * remove old code * update platform.d.ts * update navigation bar utils * remove a redirect from replication page to publications page * ask user for confirmation before deleting destination * edit destination panel * edit destination panel values fixed * bug fixes * fix prettier formatting * enable/disable pipeline after editing * rename snake_case params to camelCase * loading button when editing * remove merge markers * update api types * add max_staleness parameter in sinks for bigquery * add read replicas flow diagram to replication page * remove an unused import * Revert "add read replicas flow diagram to replication page" This reverts commit 8852d7847b457885603dba786141a8aaf8e99350. * add panel to warn users about additional cost before creating a destination * hide replication page contents behind a feature flag * fix merge conflicts * styling changes * revert static flag * styling updates * fixes * fix switch * copy * fix layout --------- Co-authored-by: Saxon Fletcher <saxonafletcher@gmail.com>
172 lines
4.7 KiB
TypeScript
172 lines
4.7 KiB
TypeScript
import type { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types'
|
|
import type { Project } from 'data/projects/project-detail-query'
|
|
import { IS_PLATFORM } from 'lib/constants'
|
|
import { ArrowUpRight } from 'lucide-react'
|
|
|
|
export const generateDatabaseMenu = (
|
|
project?: Project,
|
|
flags?: {
|
|
pgNetExtensionExists: boolean
|
|
pitrEnabled: boolean
|
|
columnLevelPrivileges: boolean
|
|
enablePgReplicate: boolean
|
|
}
|
|
): ProductMenuGroup[] => {
|
|
const ref = project?.ref ?? 'default'
|
|
const { pgNetExtensionExists, pitrEnabled, columnLevelPrivileges, enablePgReplicate } =
|
|
flags || {}
|
|
|
|
return [
|
|
{
|
|
title: 'Database Management',
|
|
items: [
|
|
{
|
|
name: 'Schema Visualizer',
|
|
key: 'schemas',
|
|
url: `/project/${ref}/database/schemas`,
|
|
items: [],
|
|
},
|
|
{ name: 'Tables', key: 'tables', url: `/project/${ref}/database/tables`, items: [] },
|
|
{
|
|
name: 'Functions',
|
|
key: 'functions',
|
|
url: `/project/${ref}/database/functions`,
|
|
items: [],
|
|
},
|
|
{
|
|
name: 'Triggers',
|
|
key: 'triggers',
|
|
url: `/project/${ref}/database/triggers`,
|
|
items: [],
|
|
},
|
|
{
|
|
name: 'Enumerated Types',
|
|
key: 'types',
|
|
url: `/project/${ref}/database/types`,
|
|
|
|
items: [],
|
|
},
|
|
{
|
|
name: 'Extensions',
|
|
key: 'extensions',
|
|
url: `/project/${ref}/database/extensions`,
|
|
items: [],
|
|
},
|
|
{
|
|
name: 'Indexes',
|
|
key: 'indexes',
|
|
url: `/project/${ref}/database/indexes`,
|
|
items: [],
|
|
},
|
|
{
|
|
name: 'Publications',
|
|
key: 'publications',
|
|
url: `/project/${ref}/database/publications`,
|
|
items: [],
|
|
},
|
|
...(enablePgReplicate
|
|
? [
|
|
{
|
|
name: 'Replication',
|
|
key: 'replication',
|
|
url: `/project/${ref}/database/replication`,
|
|
items: [],
|
|
},
|
|
]
|
|
: []),
|
|
],
|
|
},
|
|
{
|
|
title: 'Access Control',
|
|
items: [
|
|
{ name: 'Roles', key: 'roles', url: `/project/${ref}/database/roles`, items: [] },
|
|
...(columnLevelPrivileges
|
|
? [
|
|
{
|
|
name: 'Column Privileges',
|
|
key: 'column-privileges',
|
|
url: `/project/${ref}/database/column-privileges`,
|
|
items: [],
|
|
label: 'ALPHA',
|
|
},
|
|
]
|
|
: []),
|
|
{
|
|
name: 'Policies',
|
|
key: 'policies',
|
|
url: `/project/${ref}/auth/policies`,
|
|
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
|
items: [],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: 'Platform',
|
|
items: [
|
|
...(IS_PLATFORM
|
|
? [
|
|
{
|
|
name: 'Backups',
|
|
key: 'backups',
|
|
url: pitrEnabled
|
|
? `/project/${ref}/database/backups/pitr`
|
|
: `/project/${ref}/database/backups/scheduled`,
|
|
items: [],
|
|
},
|
|
]
|
|
: []),
|
|
{
|
|
name: 'Migrations',
|
|
key: 'migrations',
|
|
url: `/project/${ref}/database/migrations`,
|
|
items: [],
|
|
},
|
|
{
|
|
name: 'Wrappers',
|
|
key: 'wrappers',
|
|
url: `/project/${ref}/integrations?category=wrapper`,
|
|
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
|
items: [],
|
|
},
|
|
...(!!pgNetExtensionExists
|
|
? [
|
|
{
|
|
name: 'Webhooks',
|
|
key: 'hooks',
|
|
url: `/project/${ref}/integrations/webhooks/overview`,
|
|
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
|
items: [],
|
|
},
|
|
]
|
|
: []),
|
|
],
|
|
},
|
|
{
|
|
title: 'Tools',
|
|
items: [
|
|
{
|
|
name: 'Security Advisor',
|
|
key: 'security-advisor',
|
|
url: `/project/${ref}/advisors/security`,
|
|
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
|
items: [],
|
|
},
|
|
{
|
|
name: 'Performance Advisor',
|
|
key: 'performance-advisor',
|
|
url: `/project/${ref}/advisors/performance`,
|
|
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
|
items: [],
|
|
},
|
|
{
|
|
name: 'Query Performance',
|
|
key: 'query-performance',
|
|
url: `/project/${ref}/advisors/query-performance`,
|
|
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
|
items: [],
|
|
},
|
|
],
|
|
},
|
|
]
|
|
}
|