Coverage for apps/kwai-api/src/kwai_api/v1/training_schedules/schemas.py: 100%
18 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1"""Module for the JSON:API representation of a training schedule."""
3from kwai_core.json_api import Meta, Relationship, RelationshipList, ResourceMeta
4from pydantic import BaseModel, Field
6from kwai_api.schemas.resources import (
7 CoachResourceIdentifier,
8 TeamResourceIdentifier,
9 TrainingScheduleResourceIdentifier,
10)
13class CoachAttributes(BaseModel):
14 """Attributes for a coach linked to a training schedule."""
16 name: str
19class CoachResource(CoachResourceIdentifier):
20 """A JSON:API resource for a coach linked to a training schedule."""
22 attributes: CoachAttributes
25class TeamAttributes(BaseModel):
26 """Attributes for a team JSON:API resource."""
28 name: str
31class TeamResource(TeamResourceIdentifier):
32 """A JSON:API resource for a team."""
34 attributes: TeamAttributes
37class TrainingScheduleAttributes(BaseModel):
38 """Attributes for a training schedule JSON:API resource."""
40 name: str
41 description: str
42 weekday: int
43 start_time: str
44 end_time: str
45 timezone: str
46 active: bool
47 location: str
48 remark: str | None = None
51class TrainingScheduleRelationships(BaseModel):
52 """Relationships for a training schedule JSON:API resource."""
54 team: Relationship[TeamResourceIdentifier]
55 coaches: RelationshipList[CoachResourceIdentifier]
58class TrainingScheduleResource(TrainingScheduleResourceIdentifier):
59 """A JSON:API resource for a training schedule."""
61 meta: ResourceMeta | None = None
62 attributes: TrainingScheduleAttributes
63 relationships: TrainingScheduleRelationships
66class TrainingScheduleDocument(BaseModel):
67 """A JSON:API document for one training schedule."""
69 data: TrainingScheduleResource
70 included: set[TeamResource | CoachResource] = Field(default_factory=set)
73class TrainingSchedulesDocument(BaseModel):
74 """A JSON:API document for multiple training schedules."""
76 meta: Meta = Field(default_factory=Meta)
77 data: list[TrainingScheduleResource] = Field(default_factory=list)
78 included: set[TeamResource | CoachResource] = Field(default_factory=set)