Files
blog-service/schemas/blog.py

114 lines
2.1 KiB
Python

from typing import Optional
from pydantic import BaseModel
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')
}