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

1from uuid import UUID 

2from datetime import datetime 

3 

4from pydantic import BaseModel, Field, HttpUrl, ConfigDict 

5 

6 

7class MonitorBase(BaseModel): 

8 url: HttpUrl 

9 interval_seconds: int = Field(default=300, ge=60, le=86400) 

10 is_active: bool = True 

11 

12 

13class MonitorCreate(MonitorBase): 

14 pass 

15 

16 

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 

21 

22 

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 

31 

32 model_config = ConfigDict(from_attributes=True) 

33 

34 

35class MonitorListResponse(BaseModel): 

36 items: list[MonitorRead] 

37 total: int