feat:增加分页条件查询博客接口
This commit is contained in:
@@ -47,6 +47,14 @@ def query_blog_by_condition(query: BlogQuery = Depends(),
|
|||||||
return blog_service.query_blog_by_condition(db, query)
|
return blog_service.query_blog_by_condition(db, query)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/condition/page", summary="条件分页查询博客", response_model=PageResult[BlogResponse])
|
||||||
|
def query_blog_by_condition_page(query: BlogQuery = Depends(),
|
||||||
|
current_page: int = Query(1, ge=1, alias="currentPage", description="当前页码"),
|
||||||
|
page_size: int = Query(10, ge=1, le=100, alias="pageSize", description="每页数量"),
|
||||||
|
db: Session = Depends(get_db)):
|
||||||
|
return blog_service.query_blog_by_condition_page(db, query, current_page, page_size)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/unapproved", summary="查询待发布博客", response_model=List[BlogResponse])
|
@router.get("/unapproved", summary="查询待发布博客", response_model=List[BlogResponse])
|
||||||
def query_unapproved_blog(db: Session = Depends(get_db), _=Depends(verify_token)):
|
def query_unapproved_blog(db: Session = Depends(get_db), _=Depends(verify_token)):
|
||||||
return blog_service.query_unapproved_blog(db)
|
return blog_service.query_unapproved_blog(db)
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ def query_blog_by_page(db: Session, current_page: int = 1, page_size: int = 10,
|
|||||||
|
|
||||||
|
|
||||||
def query_blog_by_condition(db: Session, blog_query: BlogQuery) -> List[BlogResponse]:
|
def query_blog_by_condition(db: Session, blog_query: BlogQuery) -> List[BlogResponse]:
|
||||||
|
stmt = get_query_blog_by_condition_stmt(blog_query)
|
||||||
|
results = db.execute(stmt).fetchall()
|
||||||
|
return [BlogResponse.model_validate(result) for result in results]
|
||||||
|
|
||||||
|
|
||||||
|
def get_query_blog_by_condition_stmt(blog_query: BlogQuery):
|
||||||
stmt = (select(
|
stmt = (select(
|
||||||
Blog.id,
|
Blog.id,
|
||||||
Blog.title,
|
Blog.title,
|
||||||
@@ -54,12 +60,15 @@ def query_blog_by_condition(db: Session, blog_query: BlogQuery) -> List[BlogResp
|
|||||||
BlogContent.content.label("content"),
|
BlogContent.content.label("content"),
|
||||||
Blog.word_count.label("wordCount"),
|
Blog.word_count.label("wordCount"),
|
||||||
Blog.read_duration.label("readDuration"),
|
Blog.read_duration.label("readDuration"),
|
||||||
|
func.count(BlogVisit.id).label("visitCount"),
|
||||||
Blog.is_approved.label("isApproved"),
|
Blog.is_approved.label("isApproved"),
|
||||||
Blog.create_time.label("createTime"),
|
Blog.create_time.label("createTime"),
|
||||||
Blog.update_time.label("updateTime")
|
Blog.update_time.label("updateTime")
|
||||||
).where(Blog.is_approved == 1)
|
).where(Blog.is_approved == 1)
|
||||||
.outerjoin(BlogCategory, Blog.category_id == BlogCategory.id)
|
.outerjoin(BlogCategory, Blog.category_id == BlogCategory.id)
|
||||||
.outerjoin(BlogContent, Blog.content_id == BlogContent.id))
|
.outerjoin(BlogContent, Blog.content_id == BlogContent.id)
|
||||||
|
.outerjoin(BlogVisit, Blog.id == BlogVisit.blog_id)
|
||||||
|
.group_by(Blog.id))
|
||||||
|
|
||||||
conditions = []
|
conditions = []
|
||||||
|
|
||||||
@@ -77,9 +86,13 @@ def query_blog_by_condition(db: Session, blog_query: BlogQuery) -> List[BlogResp
|
|||||||
|
|
||||||
stmt = stmt.order_by(desc(Blog.is_great), desc(Blog.update_time))
|
stmt = stmt.order_by(desc(Blog.is_great), desc(Blog.update_time))
|
||||||
|
|
||||||
results = db.execute(stmt).fetchall()
|
return stmt
|
||||||
|
|
||||||
return [BlogResponse.model_validate(result) for result in results]
|
|
||||||
|
def query_blog_by_condition_page(db: Session, blog_query: BlogQuery,
|
||||||
|
current_page: int = 1, page_size: int = 10) -> PageResult[BlogResponse]:
|
||||||
|
stmt = get_query_blog_by_condition_stmt(blog_query)
|
||||||
|
return paginate_query(db, stmt, current_page, page_size)
|
||||||
|
|
||||||
|
|
||||||
def query_unapproved_blog(db: Session) -> List[BlogResponse]:
|
def query_unapproved_blog(db: Session) -> List[BlogResponse]:
|
||||||
|
|||||||
Reference in New Issue
Block a user