Coverage for apps/kwai-api/src/kwai_api/v1/club/schemas/upload.py: 100%
20 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 an upload."""
3from typing import Annotated, Literal
5from kwai_core.json_api import RelationshipList, ResourceIdentifier, ResourceMeta
6from pydantic import BaseModel, Field
8from kwai_api.v1.club.schemas.contact import ContactResource
9from kwai_api.v1.club.schemas.member import (
10 MemberResource,
11)
12from kwai_api.v1.club.schemas.person import PersonResource
13from kwai_api.v1.club.schemas.resources import MemberResourceIdentifier
14from kwai_api.v1.schemas import CountryResource
17class UploadedMemberMeta(ResourceMeta):
18 """Extra meta data for an uploaded member."""
20 row: int
21 new: bool
24class UploadedMemberResource(MemberResource):
25 """Member resource with the extra meta data."""
27 meta: UploadedMemberMeta
30class MemberUploadError(BaseModel):
31 """Model for an error occurred during uploading."""
33 row: int
34 message: str
37class MemberUploadAttributes(BaseModel):
38 """Attributes for a file upload of members."""
40 filename: str
41 preview: bool
42 remark: str
43 errors: list[MemberUploadError] = Field(default_factory=list)
46class MemberUploadResourceIdentifier(ResourceIdentifier):
47 """Resource identifier for a file upload of members."""
49 type: Literal["member_uploads"] = "member_uploads"
52class MemberUploadRelationships(BaseModel):
53 """Relationships for a resource with file upload of members."""
55 members: RelationshipList[MemberResourceIdentifier]
58class MemberUploadResource(MemberUploadResourceIdentifier):
59 """Resource for a file upload with members."""
61 attributes: MemberUploadAttributes
62 relationships: MemberUploadRelationships
65MemberUploadInclude = Annotated[
66 UploadedMemberResource | PersonResource | ContactResource | CountryResource,
67 Field(discriminator="type"),
68]
71class MemberUploadDocument(BaseModel):
72 """A JSON:API document for a file upload of members."""
74 data: MemberUploadResource
75 included: set[MemberUploadInclude] = Field(default_factory=set)