mirror of
https://github.com/supabase/supabase.git
synced 2026-10-08 19:05:06 +03:00
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
71 lines
1.8 KiB
TypeScript
71 lines
1.8 KiB
TypeScript
import { Badge, StatusIcon } from 'ui'
|
|
|
|
import type { BranchData } from '@/data/branches/branch-query'
|
|
import type { Branch } from '@/data/branches/branches-query'
|
|
|
|
type Status = Branch['status'] | BranchData['status']
|
|
|
|
export interface BranchStatusBadgeProps {
|
|
status: Status
|
|
}
|
|
|
|
const UNHEALTHY_STATUES: Status[] = [
|
|
'ACTIVE_UNHEALTHY',
|
|
'INIT_FAILED',
|
|
'UNKNOWN',
|
|
'MIGRATIONS_FAILED',
|
|
'FUNCTIONS_FAILED',
|
|
]
|
|
const WAITING_STATUSES: Status[] = [
|
|
'COMING_UP',
|
|
'GOING_DOWN',
|
|
'PAUSING',
|
|
'RESTORING',
|
|
'UPGRADING',
|
|
'RUNNING_MIGRATIONS',
|
|
]
|
|
|
|
const STATUS_TO_LABEL: Record<Status, string> = {
|
|
ACTIVE_HEALTHY: 'Healthy',
|
|
ACTIVE_UNHEALTHY: 'Unhealthy',
|
|
INIT_FAILED: 'Init failed',
|
|
UNKNOWN: 'Unknown',
|
|
COMING_UP: 'Coming up',
|
|
GOING_DOWN: 'Going down',
|
|
INACTIVE: 'Inactive',
|
|
PAUSING: 'Pausing',
|
|
REMOVED: 'Removed',
|
|
RESTORING: 'Restoring',
|
|
UPGRADING: 'Upgrading',
|
|
RESIZING: 'Resizing',
|
|
CREATING_PROJECT: 'Creating project',
|
|
RUNNING_MIGRATIONS: 'Running migrations',
|
|
MIGRATIONS_FAILED: 'Migrations failed',
|
|
MIGRATIONS_PASSED: 'Migrations applied successfully',
|
|
FUNCTIONS_DEPLOYED: 'Functions deployed',
|
|
FUNCTIONS_FAILED: 'Functions failed to deploy',
|
|
RESTARTING: 'Restarting',
|
|
RESTORE_FAILED: 'Failed to restore',
|
|
PAUSE_FAILED: 'Failed to pause',
|
|
}
|
|
|
|
const BranchStatusBadge = ({ status }: BranchStatusBadgeProps) => {
|
|
if (status === 'ACTIVE_HEALTHY' || status === 'MIGRATIONS_PASSED') {
|
|
return null
|
|
}
|
|
|
|
const isUnhealthy = UNHEALTHY_STATUES.includes(status)
|
|
const isWaiting = WAITING_STATUSES.includes(status)
|
|
|
|
return (
|
|
<Badge variant={isUnhealthy ? 'destructive' : 'default'} className="gap-1.5">
|
|
{(isUnhealthy || isWaiting) && (
|
|
<StatusIcon variant={isUnhealthy ? 'destructive' : 'default'} hideBackground />
|
|
)}
|
|
{STATUS_TO_LABEL[status]}
|
|
</Badge>
|
|
)
|
|
}
|
|
|
|
export default BranchStatusBadge
|