| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- import { useParams } from 'common'
- import { Blocks, Code, Database, History, Search } from 'lucide-react'
- import type { CommandOptions } from 'ui-patterns/CommandMenu'
- import { useRegisterCommands } from 'ui-patterns/CommandMenu'
- import { IRouteCommand } from 'ui-patterns/CommandMenu/internal/types'
- import { COMMAND_MENU_SECTIONS } from '@/components/interfaces/App/CommandMenu/CommandMenu.utils'
- import { orderCommandSectionsByPriority } from '@/components/interfaces/App/CommandMenu/ordering'
- import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
- export function useDatabaseGotoCommands(options?: CommandOptions) {
- let { ref } = useParams()
- ref ||= '_'
- const { databaseReplication, databaseRoles, integrationsWrappers } = useIsFeatureEnabled([
- 'database:replication',
- 'database:roles',
- 'integrations:wrappers',
- ])
- useRegisterCommands(
- COMMAND_MENU_SECTIONS.QUERY,
- [
- {
- id: 'run-sql',
- name: 'Run SQL',
- route: `/project/${ref}/sql/new`,
- icon: () => <Code />,
- },
- ],
- {
- ...options,
- deps: [ref],
- orderSection: orderCommandSectionsByPriority,
- sectionMeta: { priority: 2 },
- }
- )
- useRegisterCommands(
- COMMAND_MENU_SECTIONS.NAVIGATE,
- [
- {
- id: 'nav-database-tables',
- name: 'Tables',
- value: 'Database: Tables',
- route: `/project/${ref}/database/tables`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-triggers',
- name: 'Triggers',
- value: 'Database: Triggers',
- route: `/project/${ref}/database/triggers`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-functions',
- name: 'Functions',
- value: 'Database: Functions',
- route: `/project/${ref}/database/functions`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-extensions',
- name: 'Extensions',
- value: 'Database: Extensions',
- route: `/project/${ref}/database/extensions`,
- defaultHidden: true,
- },
- ...(databaseRoles
- ? [
- {
- id: 'nav-database-roles',
- name: 'Roles',
- value: 'Database: Roles',
- route: `/project/${ref}/database/roles`,
- defaultHidden: true,
- } as IRouteCommand,
- ]
- : []),
- ...(databaseReplication
- ? [
- {
- id: 'nav-database-replication',
- name: 'Replication',
- value: 'Database: Replication',
- route: `/project/${ref}/database/replication`,
- defaultHidden: true,
- } as IRouteCommand,
- ]
- : []),
- {
- id: 'nav-database-backups',
- name: 'Backups',
- value: 'Database: Backups',
- route: `/project/${ref}/database/backups/scheduled`,
- defaultHidden: true,
- },
- ...(integrationsWrappers
- ? [
- {
- id: 'nav-database-wrappers',
- name: 'Wrappers',
- value: 'Database: Wrappers',
- route: `/project/${ref}/integrations?category=wrappers`,
- defaultHidden: true,
- } as IRouteCommand,
- ]
- : []),
- {
- id: 'nav-database-migrations',
- name: 'Migrations',
- value: 'Database: Migrations',
- route: `/project/${ref}/database/migrations`,
- defaultHidden: true,
- },
- ],
- { ...options, deps: [ref] }
- )
- useRegisterCommands(
- COMMAND_MENU_SECTIONS.DATABASE,
- [
- {
- id: 'run-schema-visualizer',
- name: 'View your schemas',
- route: `/project/${ref}/database/schemas`,
- icon: () => <Search />,
- },
- {
- id: 'run-view-database-functions',
- name: 'View and create functions',
- route: `/project/${ref}/database/functions`,
- icon: () => <Database />,
- },
- {
- id: 'run-view-database-triggers',
- name: 'View and create triggers',
- route: `/project/${ref}/database/triggers`,
- icon: () => <Database />,
- },
- {
- id: 'run-view-database-enumerated-types',
- name: 'View and create enumerated types',
- route: `/project/${ref}/database/types`,
- icon: () => <Database />,
- },
- {
- id: 'run-view-database-extensions',
- name: 'View your extensions',
- route: `/project/${ref}/database/extensions`,
- icon: () => <Blocks />,
- },
- {
- id: 'run-view-database-indexes',
- name: 'View and create indexes',
- route: `/project/${ref}/database/indexes`,
- icon: () => <Database />,
- },
- ...(databaseRoles
- ? [
- {
- id: 'run-view-database-roles',
- name: 'View your roles',
- route: `/project/${ref}/database/roles`,
- icon: () => <Database />,
- } as IRouteCommand,
- ]
- : []),
- {
- id: 'run-view-database-backups',
- name: 'View your backups',
- route: `/project/${ref}/database/backups/scheduled`,
- icon: () => <Database />,
- },
- {
- id: 'run-view-database-migrations',
- name: 'View your migrations',
- route: `/project/${ref}/database/migrations`,
- icon: () => <History />,
- },
- ],
- {
- ...options,
- deps: [ref],
- orderSection: orderCommandSectionsByPriority,
- sectionMeta: { priority: 3 },
- }
- )
- }
|