Files
python-api/app/models/mariadb/monitoring.py
2026-03-01 07:44:19 +09:00

37 lines
1.4 KiB
Python

from __future__ import annotations
from datetime import datetime
from sqlmodel import Field, SQLModel
from app.core.constants import AlertSeverity
from app.db.base import TimestampMixin
class AlertRule(TimestampMixin, SQLModel, table=True):
__tablename__ = "alert_rules"
id: int | None = Field(default=None, primary_key=True)
name: str = Field(max_length=100)
description: str = Field(default="", max_length=500)
metric: str = Field(max_length=100)
condition: str = Field(max_length=50)
threshold: float
severity: str = Field(default=AlertSeverity.WARNING, max_length=20)
is_enabled: bool = Field(default=True)
device_group_id: int | None = Field(default=None, foreign_key="device_groups.id")
created_by: int | None = Field(default=None, foreign_key="users.id")
class Alert(TimestampMixin, SQLModel, table=True):
__tablename__ = "alerts"
id: int | None = Field(default=None, primary_key=True)
rule_id: int | None = Field(default=None, foreign_key="alert_rules.id")
device_id: int | None = Field(default=None, foreign_key="devices.id")
severity: str = Field(default=AlertSeverity.WARNING, max_length=20)
message: str = Field(max_length=500)
is_acknowledged: bool = Field(default=False)
acknowledged_by: int | None = Field(default=None, foreign_key="users.id")
acknowledged_at: datetime | None = Field(default=None)