"use client"; import type { Widget } from "@/lib/config/schema"; import { useWidgetSubscription } from "@/lib/ws/client"; import { StatusDot } from "@/components/widgets/StatusDot"; import { WidgetCard } from "@/components/widgets/WidgetCard"; import { BrandIcon } from "@/components/widgets/BrandIcon"; import { formatUptime } from "@/lib/format"; type DatabaseWidget = Extract; const ENGINE_LABEL: Record = { postgres: "PostgreSQL", redis: "Redis", }; const ENGINE_ICON: Record = { postgres: "postgresql", redis: "redis", }; export function DatabaseWidget({ widget, widgetId }: { widget: DatabaseWidget; widgetId: string }) { const result = useWidgetSubscription(widgetId); const data = result?.type === "database" ? result.data : null; const errorMessage = result?.type === "error" ? result.message : null; return (
{widget.name}
{ENGINE_LABEL[widget.engine]} {errorMessage && {errorMessage}} {data?.uptimeSeconds != null && ( up {formatUptime(data.uptimeSeconds)} )}
); }