Coverage for models/leagues.py: 100.00%

28 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2026-04-15 12:31 +0000

1""" 

2League and division-related Pydantic models. 

3""" 

4 

5from datetime import datetime 

6 

7from pydantic import BaseModel 

8 

9 

10class League(BaseModel): 

11 """Model for league data.""" 

12 

13 id: int 

14 name: str 

15 description: str | None = None 

16 sport_type: str = "soccer" 

17 is_active: bool = True 

18 created_at: datetime | None = None 

19 updated_at: datetime | None = None 

20 

21 

22class LeagueCreate(BaseModel): 

23 """Model for creating a new league.""" 

24 

25 name: str 

26 description: str | None = None 

27 sport_type: str = "soccer" 

28 is_active: bool = True 

29 

30 

31class LeagueUpdate(BaseModel): 

32 """Model for updating league information.""" 

33 

34 name: str | None = None 

35 description: str | None = None 

36 sport_type: str | None = None 

37 is_active: bool | None = None 

38 

39 

40class DivisionCreate(BaseModel): 

41 """Model for creating a new division.""" 

42 

43 name: str 

44 description: str | None = None 

45 league_id: int # Required: divisions must belong to a league 

46 

47 

48class DivisionUpdate(BaseModel): 

49 """Model for updating division information.""" 

50 

51 name: str | None = None 

52 description: str | None = None 

53 league_id: int | None = None # Optional for updates