Coverage for apps/kwai-api/src/kwai_api/v1/news/schemas.py: 100%
23 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"""Schemas for a news item."""
3from kwai_core.json_api import (
4 Meta,
5 Relationship,
6 ResourceMeta,
7)
8from pydantic import BaseModel, Field
10from kwai_api.schemas.resources import (
11 ApplicationResourceIdentifier,
12 NewsItemResourceIdentifier,
13)
16class NewsApplicationAttributes(BaseModel):
17 """Attributes of a news application JSON:API resource."""
19 name: str
20 title: str
23class NewsApplicationResource(ApplicationResourceIdentifier):
24 """A JSON:API resource for a news application."""
26 attributes: NewsApplicationAttributes
29class NewsApplicationDocument(BaseModel):
30 """A JSON:API document for a news application."""
32 data: NewsApplicationResource
35class NewsItemText(BaseModel):
36 """Schema for the text of a news item."""
38 locale: str
39 format: str
40 title: str
41 summary: str
42 content: str | None = None
43 original_summary: str
44 original_content: str | None = None
47class NewsItemAttributes(BaseModel):
48 """Attributes of a news item JSON:API resource."""
50 priority: int = 0
51 publish_date: str
52 end_date: str | None = None
53 enabled: bool = False
54 remark: str = ""
55 promotion_end_date: str | None = None
56 texts: list[NewsItemText]
59class NewsItemRelationships(BaseModel):
60 """Relationships of a news item JSON:API resource."""
62 application: Relationship[ApplicationResourceIdentifier]
65class NewsItemResource(NewsItemResourceIdentifier):
66 """A JSON:API resource for a news item."""
68 meta: ResourceMeta | None = None
69 attributes: NewsItemAttributes
70 relationships: NewsItemRelationships
73class NewsItemDocument(BaseModel):
74 """A JSON:API document for a news item resource."""
76 data: NewsItemResource
77 included: set[NewsApplicationResource] = Field(default_factory=set)
80class NewsItemsDocument(BaseModel):
81 """A JSON:API document for multiple news item resources."""
83 meta: Meta
84 data: list[NewsItemResource] = Field(default_factory=list)
85 included: set[NewsApplicationResource] = Field(default_factory=set)