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, 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 BaseTrainingCoachAttributes(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 CreateTrainingCoachResource(TrainingCoachResourceIdentifier): 

52 """A resource for creating a training coach.""" 

53 

54 attributes: BaseTrainingCoachAttributes 

55 

56 

57class CreateTrainingCoachDocument(BaseModel): 

58 """A document for creating a training coach.""" 

59 

60 data: CreateTrainingCoachResource 

61 

62 

63class TrainingCoachAttributes(BaseTrainingCoachAttributes, CoachAttributes): 

64 """Attributes for a training coach JSON:API resource.""" 

65 

66 

67class TrainingCoachResource(TrainingCoachResourceIdentifier): 

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

69 

70 attributes: TrainingCoachAttributes 

71 

72 

73class TrainingCoachDocument(BaseModel): 

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

75 

76 data: TrainingCoachResource 

77 

78 

79class TrainingCoachesDocument(BaseModel): 

80 """Document for multiple training coaches.""" 

81 

82 meta: Meta 

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