Coverage for app / schemas / monitor.py: 100%
25 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 17:54 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 17:54 +0000
1from uuid import UUID
2from datetime import datetime
4from pydantic import BaseModel, Field, HttpUrl, ConfigDict
7class MonitorBase(BaseModel):
8 url: HttpUrl
9 interval_seconds: int = Field(default=300, ge=60, le=86400)
10 is_active: bool = True
13class MonitorCreate(MonitorBase):
14 pass
17class MonitorUpdate(BaseModel):
18 url: HttpUrl | None = None
19 interval_seconds: int | None = Field(default=None, ge=60, le=86400)
20 is_active: bool | None = None
23class MonitorRead(MonitorBase):
24 id: UUID
25 user_id: UUID
26 alert_status: str
27 last_alerted_at: datetime | None
28 next_check_at: datetime | None
29 created_at: datetime
30 updated_at: datetime
32 model_config = ConfigDict(from_attributes=True)
35class MonitorListResponse(BaseModel):
36 items: list[MonitorRead]
37 total: int