utp_service/backend/app/models/alert.py
2026-04-07 13:02:52 +03:00

35 lines
1.3 KiB
Python

from datetime import datetime
from typing import Optional
from sqlalchemy import DateTime, ForeignKey, Integer, String, Text
from sqlalchemy.orm import Mapped, mapped_column, relationship
from .base import Base
class Alert(Base):
__tablename__ = "alerts"
id: Mapped[int] = mapped_column(Integer(), autoincrement=True, primary_key=True)
device_id: Mapped[int] = mapped_column(
Integer(), ForeignKey("devices.id", ondelete="CASCADE"), nullable=False, index=True
)
# "open" | "acknowledged" | "resolved"
status: Mapped[str] = mapped_column(String(20), nullable=False, default="open")
message: Mapped[str] = mapped_column(Text(), nullable=False)
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False)
acknowledged_at: Mapped[Optional[datetime]] = mapped_column(
DateTime(timezone=True), nullable=True
)
acknowledged_by: Mapped[Optional[int]] = mapped_column(
Integer(), ForeignKey("users.id", ondelete="SET NULL"), nullable=True
)
resolved_at: Mapped[Optional[datetime]] = mapped_column(
DateTime(timezone=True), nullable=True
)
device: Mapped["Device"] = relationship("Device")
acknowledger: Mapped[Optional["User"]] = relationship(
"User", foreign_keys=[acknowledged_by]
)