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

13 statements  

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

1"""JSON:API schemas for training sessions.""" 

2 

3from typing import Literal 

4 

5from kwai_core.json_api import Meta, Relationship, ResourceIdentifier, ResourceMeta 

6from pydantic import BaseModel, Field 

7 

8from kwai_api.schemas.resources import ( 

9 CoachResourceIdentifier, 

10 TrainingResourceIdentifier, 

11) 

12 

13 

14class TrainingSessionResourceIdentifier(ResourceIdentifier): 

15 """A JSON:API resource identifier for a training session.""" 

16 

17 type: Literal["training_sessions"] = "training_sessions" 

18 

19 

20class TrainingSessionAttributes(BaseModel): 

21 """Attributes for a JSON:API resource of a training session.""" 

22 

23 start_date: str 

24 end_date: str 

25 hours: int 

26 minutes: int 

27 head: bool 

28 

29 

30class TrainingSessionRelationships(BaseModel): 

31 """Relationships for a JSON:API resource of training session.""" 

32 

33 training: Relationship[TrainingResourceIdentifier] 

34 coach: Relationship[CoachResourceIdentifier] 

35 

36 

37class TrainingSessionResource(TrainingSessionResourceIdentifier): 

38 """A JSON:API resource for a training session.""" 

39 

40 meta: ResourceMeta | None = None 

41 attributes: TrainingSessionAttributes 

42 relationships: TrainingSessionRelationships 

43 

44 

45class TrainingSessionsDocument(BaseModel): 

46 """A JSON:API document for training sessions.""" 

47 

48 meta: Meta = Field(default_factory=Meta) 

49 data: list[TrainingSessionResource] = Field(default_factory=list)