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

1"""Module for defining the JSON:API resource for a member.""" 

2 

3from typing import Annotated 

4 

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

6from pydantic import BaseModel, Field 

7 

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 

17 

18 

19class MemberAttributes(BaseModel): 

20 """Attributes for the member JSON:API resource.""" 

21 

22 license_number: str 

23 license_end_date: str 

24 remark: str 

25 active: bool 

26 competition: bool 

27 

28 

29class MemberRelationships(BaseModel): 

30 """Relationships of a member JSON:API resource.""" 

31 

32 person: Relationship[PersonResourceIdentifier] 

33 

34 

35class MemberResource(MemberResourceIdentifier): 

36 """A JSON:API resource for a member.""" 

37 

38 meta: ResourceMeta 

39 attributes: MemberAttributes 

40 relationships: MemberRelationships 

41 

42 

43MemberInclude = Annotated[ 

44 PersonResource | ContactResource | CountryResource, Field(discriminator="type") 

45] 

46 

47 

48class MemberDocument(BaseModel): 

49 """A JSON:API document for one member resource.""" 

50 

51 data: MemberResource 

52 included: set[MemberInclude] = Field(default_factory=set) 

53 

54 

55class MembersDocument(BaseModel): 

56 """A JSON:API document for multiple member resources.""" 

57 

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)