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
« 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."""
3from kwai_core.json_api import Meta, Relationship, ResourceMeta
4from pydantic import BaseModel, Field
6from kwai_api.v1.club.schemas.resources import (
7 CoachResourceIdentifier,
8 MemberResourceIdentifier,
9 UserResourceIdentifier,
10)
13class CoachAttributes(BaseModel):
14 """All attributes for the coach JSON:API resource."""
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
27class CoachRelationships(BaseModel):
28 """Relationships for the coach JSON:API resource."""
30 user: Relationship[UserResourceIdentifier]
31 member: Relationship[MemberResourceIdentifier]
34class CoachResource(CoachResourceIdentifier):
35 """A JSON:API resource for a coach."""
37 meta: ResourceMeta | None = None
38 attributes: CoachAttributes
39 relationships: CoachRelationships | None = None
42class UserAttributes(BaseModel):
43 """Attributes for the user JSON:API resource."""
45 name: str
48class UserResource(UserResourceIdentifier):
49 """A JSON:API resource for a user."""
51 attributes: UserAttributes
54class CoachDocument(BaseModel):
55 """A JSON:API document for a coach."""
57 data: CoachResource
58 included: set[UserResource] = Field(default_factory=set)
61class CoachesDocument(BaseModel):
62 """A JSON:API document for multiple coaches."""
64 meta: Meta
65 data: list[CoachResource] = Field(default_factory=list)
66 included: set[UserResource] = Field(default_factory=set)