""" Host metrics model for storing system monitoring data. """ from datetime import datetime from sqlalchemy import BigInteger, DateTime, Float, Integer, String from sqlalchemy.orm import Mapped, mapped_column from app.core.database import Base class HostMetrics(Base): """Host system metrics (CPU, RAM, Load, Disk, Network).""" __tablename__ = "host_metrics" id: Mapped[int] = mapped_column(primary_key=True) timestamp: Mapped[datetime] = mapped_column(DateTime(timezone=True), index=True) # CPU cpu_percent: Mapped[float] = mapped_column(Float, nullable=False) cpu_count: Mapped[int] = mapped_column(Integer, nullable=False) # Memory memory_total: Mapped[int] = mapped_column(BigInteger, nullable=False) # bytes memory_used: Mapped[int] = mapped_column(BigInteger, nullable=False) memory_percent: Mapped[float] = mapped_column(Float, nullable=False) # Load Average load_1: Mapped[float] = mapped_column(Float, nullable=False) load_5: Mapped[float] = mapped_column(Float, nullable=False) load_15: Mapped[float] = mapped_column(Float, nullable=False) # Disk I/O disk_read_bytes: Mapped[int] = mapped_column(BigInteger, nullable=False) disk_write_bytes: Mapped[int] = mapped_column(BigInteger, nullable=False) disk_usage_percent: Mapped[float] = mapped_column(Float, nullable=False) # Network net_sent_bytes: Mapped[int] = mapped_column(BigInteger, nullable=False) net_recv_bytes: Mapped[int] = mapped_column(BigInteger, nullable=False)