Add database maintenance tooling

- Implement maintenance hooks (useMaintenanceTables, useVacuumTable, useAnalyzeTable, useReindexTable)
- Add DatabaseMaintenance page and UI for vacuum/analyze/reindex
- Wire new route / admin/database-maintenance and sidebar entry
- Remove DatabaseMaintenance icon usage on page and align with AdminLayout props
This commit is contained in:
gpt-engineer-app[bot]
2025-11-12 01:39:05 +00:00
parent 2468d3cc18
commit e2ee11b9f5
7 changed files with 578 additions and 2 deletions

View File

@@ -1,4 +1,4 @@
import { LayoutDashboard, FileText, Flag, Users, Settings, ArrowLeft, ScrollText, BookOpen, Inbox, Mail, AlertTriangle, Shield, Activity, BarChart } from 'lucide-react';
import { LayoutDashboard, FileText, Flag, Users, Settings, ArrowLeft, ScrollText, BookOpen, Inbox, Mail, AlertTriangle, Shield, Activity, BarChart, Database } from 'lucide-react';
import { NavLink } from 'react-router-dom';
import { useUserRole } from '@/hooks/useUserRole';
import { useSidebar } from '@/hooks/useSidebar';
@@ -73,6 +73,12 @@ export function AdminSidebar() {
url: '/admin/database-stats',
icon: BarChart,
},
{
title: 'Database Maintenance',
url: '/admin/database-maintenance',
icon: Database,
visible: isSuperuser, // Only superusers can access
},
{
title: 'Users',
url: '/admin/users',
@@ -134,7 +140,7 @@ export function AdminSidebar() {
<SidebarGroupLabel>Navigation</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
{navItems.map((item) => (
{navItems.filter(item => item.visible !== false).map((item) => (
<SidebarMenuItem key={item.url}>
<SidebarMenuButton asChild tooltip={collapsed ? item.title : undefined}>
<NavLink