feat:增加博客统计接口
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
from fastapi import FastAPI
|
||||
from .blog import router as blog_router
|
||||
from .blog_stats import router as blog_stats_router
|
||||
from .session import router as session_router
|
||||
|
||||
def register_routers(app: FastAPI):
|
||||
app.include_router(blog_router, prefix="")
|
||||
app.include_router(blog_stats_router, prefix="")
|
||||
app.include_router(session_router, prefix="")
|
||||
|
||||
@@ -47,6 +47,11 @@ def query_blog_by_condition(query: BlogQuery = Depends(),
|
||||
return blog_service.query_blog_by_condition(db, query)
|
||||
|
||||
|
||||
@router.get("/unapproved", summary="查询待发布博客", response_model=List[BlogResponse])
|
||||
def query_unapproved_blog(db: Session = Depends(get_db), _=Depends(verify_token)):
|
||||
return blog_service.query_unapproved_blog(db)
|
||||
|
||||
|
||||
@router.get("/{blog_id}/content", summary="查询博客内容", response_model=BlogResponse)
|
||||
def query_blog_by_id(blog_id: int, db: Session = Depends(get_db)):
|
||||
return blog_service.query_blog_by_id(db, blog_id)
|
||||
|
||||
51
api/blog_stats.py
Normal file
51
api/blog_stats.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from typing import List
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from schemas.blog_stats import BlogOverview, BlogChartStats
|
||||
from config.database import get_db
|
||||
from service import blog_stats_service
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/stats",
|
||||
tags=["博客统计"],
|
||||
responses={404: {"description": "Not found"}}
|
||||
)
|
||||
|
||||
|
||||
@router.get("/overview", summary="统计数据", response_model=BlogOverview)
|
||||
def query_blog_overview(db: Session = Depends(get_db)):
|
||||
return blog_stats_service.query_blog_overview(db)
|
||||
|
||||
|
||||
@router.get("/category", summary="博客分类统计", response_model=List[BlogChartStats])
|
||||
def query_blog_category(db: Session = Depends(get_db)):
|
||||
return blog_stats_service.query_blog_category(db)
|
||||
|
||||
|
||||
@router.get("/approved/monthly", summary="每月博客发布统计", response_model=List[BlogChartStats])
|
||||
def query_blog_monthly(year: int, db: Session = Depends(get_db)):
|
||||
return blog_stats_service.query_blog_approved_monthly(db, year)
|
||||
|
||||
|
||||
@router.get("/visit/monthly", summary="每月博客访问统计", response_model=List[BlogChartStats])
|
||||
def query_blog_visit_monthly(year: int, db: Session = Depends(get_db)):
|
||||
return blog_stats_service.query_blog_visit_monthly(db, year)
|
||||
|
||||
|
||||
@router.get("/visit/rank", summary="博客访问数量排行", response_model=List[BlogChartStats])
|
||||
def query_blog_visit_rank(db: Session = Depends(get_db)):
|
||||
return blog_stats_service.query_blog_visit_rank(db)
|
||||
|
||||
|
||||
@router.get("/read/rank", summary="博客阅读时长排行", response_model=List[BlogChartStats])
|
||||
def query_blog_read_rank(db: Session = Depends(get_db)):
|
||||
return blog_stats_service.query_blog_read_rank(db)
|
||||
|
||||
|
||||
@router.get("/comment/rank", summary="博客评论数量排行", response_model=List[BlogChartStats])
|
||||
def query_blog_comment_rank(db: Session = Depends(get_db)):
|
||||
return blog_stats_service.query_blog_comment_rank(db)
|
||||
|
||||
# 分类统计饼图
|
||||
Reference in New Issue
Block a user