from typing import Optional from pydantic import BaseModel, Field from datetime import datetime class BlogQuery(BaseModel): # 类别 category: Optional[str] = None # 标题 title: Optional[str] = None # 年份 year: Optional[int] = None class BlogBase(BaseModel): title: str topValue: int isGreat: bool category: str content: Optional[str] = None isApproved: int class BlogCreate(BlogBase): pass class BlogUpdate(BlogBase): pass class BlogResponse(BlogBase): id: Optional[int] = None summary: Optional[str] = None wordCount: Optional[int] = None readDuration: Optional[float] = None visitCount: Optional[int] = None createTime: Optional[datetime] = None updateTime: Optional[datetime] = None class Config: from_attributes = True json_encoders = { # 自定义 datetime 类型的序列化格式 datetime: lambda dt: dt.strftime('%Y-%m-%d %H:%M:%S') } class BlogCategoryResponse(BaseModel): name: str count: int class Config: from_attributes = True class BlogStatsResponse(BaseModel): blogCount: int categoryCount: int wordCount: int class BlogVisitResponse(BaseModel): ip: str os: str browser: str uri: str title: Optional[str] = None visitTime: datetime class Config: from_attributes = True json_encoders = { datetime: lambda dt: dt.strftime('%Y-%m-%d %H:%M:%S') } class BlogLatestResponse(BaseModel): id: int title: str class Config: from_attributes = True class BlogAdjacentResponse(BaseModel): id: int title: str class Config: from_attributes = True class BlogCommentCreate(BaseModel): parentId: int name: str website: Optional[str] = None content: str class BlogCommentResponse(BlogCommentCreate): id: int ipAddress: str userAgent: str createTime: datetime class Config: from_attributes = True json_encoders = { # 自定义 datetime 类型的序列化格式 datetime: lambda dt: dt.strftime('%Y-%m-%d %H:%M:%S') }