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) # 分类统计饼图