Files
NexaPG/backend/app/schemas/overview.py
nessi f12dd46c21 Add database overview feature with metrics and UI enhancements
This commit introduces a detailed database overview endpoint and service, providing key metrics such as replication status, database sizes, and performance indicators. On the frontend, a new UI section displays these metrics along with improved forms and troubleshooting tips. Enhancements improve user experience by adding informative tooltips and formatting for byte and time values.
2026-02-12 10:00:13 +01:00

80 lines
2.0 KiB
Python

from datetime import datetime
from pydantic import BaseModel
class DbSizeItem(BaseModel):
name: str
size_bytes: int
class TableSizeItem(BaseModel):
schema: str
table: str
size_bytes: int
class ReplicationClientItem(BaseModel):
application_name: str | None = None
client_addr: str | None = None
state: str | None = None
sync_state: str | None = None
write_lag_seconds: float | None = None
flush_lag_seconds: float | None = None
replay_lag_seconds: float | None = None
replay_lag_bytes: float | None = None
class DiskSpaceInfo(BaseModel):
source: str
status: str
free_bytes: int | None = None
message: str | None = None
class InstanceOverview(BaseModel):
server_version: str | None = None
role: str
postmaster_start_time: datetime | None = None
uptime_seconds: float | None = None
current_database: str | None = None
port: int | None = None
class StorageOverview(BaseModel):
current_database_size_bytes: int | None = None
all_databases: list[DbSizeItem]
largest_tables: list[TableSizeItem]
wal_directory_size_bytes: int | None = None
disk_space: DiskSpaceInfo
class ReplicationOverview(BaseModel):
mode: str
replay_lag_seconds: float | None = None
replication_slots_count: int | None = None
active_replication_clients: int | None = None
clients: list[ReplicationClientItem]
class PerformanceOverview(BaseModel):
xact_commit: int | None = None
xact_rollback: int | None = None
deadlocks: int | None = None
temp_files: int | None = None
temp_bytes: int | None = None
blk_read_time: float | None = None
blk_write_time: float | None = None
checkpoints_timed: int | None = None
checkpoints_req: int | None = None
autovacuum_workers: int | None = None
class DatabaseOverviewOut(BaseModel):
collected_at: datetime
cache_ttl_seconds: int
instance: InstanceOverview
storage: StorageOverview
replication: ReplicationOverview
performance: PerformanceOverview
partial_failures: list[str]