Coverage for apps/kwai-api/src/kwai_api/v1/club/schemas/member.py: 100%
17 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 defining the JSON:API resource for a member."""
3from typing import Annotated
5from kwai_core.json_api import Error, Meta, Relationship, ResourceMeta
6from pydantic import BaseModel, Field
8from kwai_api.v1.club.schemas.contact import ContactResource
9from kwai_api.v1.club.schemas.person import (
10 PersonResource,
11)
12from kwai_api.v1.club.schemas.resources import (
13 MemberResourceIdentifier,
14 PersonResourceIdentifier,
15)
16from kwai_api.v1.schemas import CountryResource
19class MemberAttributes(BaseModel):
20 """Attributes for the member JSON:API resource."""
22 license_number: str
23 license_end_date: str
24 remark: str
25 active: bool
26 competition: bool
29class MemberRelationships(BaseModel):
30 """Relationships of a member JSON:API resource."""
32 person: Relationship[PersonResourceIdentifier]
35class MemberResource(MemberResourceIdentifier):
36 """A JSON:API resource for a member."""
38 meta: ResourceMeta
39 attributes: MemberAttributes
40 relationships: MemberRelationships
43MemberInclude = Annotated[
44 PersonResource | ContactResource | CountryResource, Field(discriminator="type")
45]
48class MemberDocument(BaseModel):
49 """A JSON:API document for one member resource."""
51 data: MemberResource
52 included: set[MemberInclude] = Field(default_factory=set)
55class MembersDocument(BaseModel):
56 """A JSON:API document for multiple member resources."""
58 meta: Meta
59 data: list[MemberResource] = Field(default_factory=list)
60 included: set[MemberInclude] = Field(default_factory=set)
61 errors: list[Error] = Field(default_factory=list)