Coverage for apps/kwai-api/src/kwai_api/v1/club/coaches/schemas.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1"""Module that defines JSON:API schemas for the coaches endpoints.""" 

2 

3from kwai_core.json_api import Meta, Relationship, ResourceMeta 

4from pydantic import BaseModel, Field 

5 

6from kwai_api.v1.club.schemas.resources import ( 

7 CoachResourceIdentifier, 

8 MemberResourceIdentifier, 

9 UserResourceIdentifier, 

10) 

11 

12 

13class CoachAttributes(BaseModel): 

14 """All attributes for the coach JSON:API resource.""" 

15 

16 name: str 

17 description: str 

18 diploma: str 

19 remark: str 

20 active: bool 

21 head: bool 

22 license: str | None = None 

23 license_end_date: str | None = None 

24 birthdate: str | None = None 

25 

26 

27class CoachRelationships(BaseModel): 

28 """Relationships for the coach JSON:API resource.""" 

29 

30 user: Relationship[UserResourceIdentifier] 

31 member: Relationship[MemberResourceIdentifier] 

32 

33 

34class CoachResource(CoachResourceIdentifier): 

35 """A JSON:API resource for a coach.""" 

36 

37 meta: ResourceMeta | None = None 

38 attributes: CoachAttributes 

39 relationships: CoachRelationships | None = None 

40 

41 

42class UserAttributes(BaseModel): 

43 """Attributes for the user JSON:API resource.""" 

44 

45 name: str 

46 

47 

48class UserResource(UserResourceIdentifier): 

49 """A JSON:API resource for a user.""" 

50 

51 attributes: UserAttributes 

52 

53 

54class CoachDocument(BaseModel): 

55 """A JSON:API document for a coach.""" 

56 

57 data: CoachResource 

58 included: set[UserResource] = Field(default_factory=set) 

59 

60 

61class CoachesDocument(BaseModel): 

62 """A JSON:API document for multiple coaches.""" 

63 

64 meta: Meta 

65 data: list[CoachResource] = Field(default_factory=list) 

66 included: set[UserResource] = Field(default_factory=set)