52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
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)
|
|
|
|
# 分类统计饼图
|