from datetime import datetime from pydantic import BaseModel class JokeBase(BaseModel): title: str content: str type_ids: list[int] | None = None crowd_ids: list[int] | None = None class JokeCreate(JokeBase): pass class JokeUpdate(BaseModel): title: str | None = None content: str | None = None polished_content: str | None = None type_ids: list[int] | None = None crowd_ids: list[int] | None = None status: str | None = None class JokeResponse(JokeBase): id: int status: str polished_content: str | None = None view_count: int like_count: int created_at: datetime updated_at: datetime type_names: list[str] | None = None crowd_names: list[str] | None = None class Config: from_attributes = True class PaginatedJokeResponse(BaseModel): items: list[JokeResponse] total: int page: int page_size: int # ============================================================ # 笑话生成器 Schema # ============================================================ class GenerateRequest(BaseModel): """笑话生成请求""" keywords: list[str] = [] scenarios: list[str] = [] class Config: json_schema_extra = { "example": { "keywords": ["加班"], "scenarios": ["职场"] } } class GenerateResponse(BaseModel): """笑话生成响应""" title: str content: str created_at: datetime | None = None class Config: from_attributes = True