105 lines
2.0 KiB
Python
105 lines
2.0 KiB
Python
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
|
|
|
|
|
|
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 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')
|
|
}
|