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

19 statements  

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

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

2 

3from typing import Literal 

4 

5from kwai_core.json_api import Meta, Relationship, ResourceIdentifier 

6from pydantic import BaseModel, Field 

7 

8from kwai_api.schemas.resources import CoachResourceIdentifier 

9 

10 

11class CoachAttributes(BaseModel): 

12 """Attributes for a coach JSON:API resource.""" 

13 

14 name: str 

15 

16 

17class CoachResource(CoachResourceIdentifier): 

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

19 

20 attributes: CoachAttributes 

21 

22 

23class CoachDocument(BaseModel): 

24 """A JSON:API document for one coaches.""" 

25 

26 data: CoachResource 

27 

28 

29class CoachesDocument(BaseModel): 

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

31 

32 meta: Meta 

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

34 

35 

36class TrainingCoachResourceIdentifier(ResourceIdentifier): 

37 """A JSON:API resource identifier for a training coach.""" 

38 

39 type: Literal["training_coaches"] = "training_coaches" 

40 

41 

42class TrainingCoachAttributes(BaseModel): 

43 """Base attributes for a training coach JSON:API resource.""" 

44 

45 payed: bool 

46 head: bool 

47 present: bool 

48 remark: str 

49 

50 

51class TrainingCoachRelationships(BaseModel): 

52 """Relationships of a training coach JSON:API resource.""" 

53 

54 coach: Relationship[CoachResourceIdentifier] 

55 

56 

57class TrainingCoachResource(TrainingCoachResourceIdentifier): 

58 """Resource for a training coach JSON:API resource.""" 

59 

60 attributes: TrainingCoachAttributes 

61 relationships: TrainingCoachRelationships 

62 

63 

64class TrainingCoachDocument(BaseModel): 

65 """Document for a coach of a training.""" 

66 

67 data: TrainingCoachResource 

68 included: set[CoachResource] = Field(default_factory=set) 

69 

70 

71class TrainingCoachesDocument(BaseModel): 

72 """Document for multiple training coaches.""" 

73 

74 meta: Meta 

75 data: list[TrainingCoachResource] = Field(default_factory=list) 

76 included: set[CoachResource] = Field(default_factory=set)