from fastapi import Depends, APIRouter, status, Query, Path, HTTPException
from internal.models import *
from internal.database import fetch_one, fetch_all, execute_query, response_success, raise_if_exists, raise_if_not_found
from dependencies import get_current_active_user
from collections import defaultdict

router = APIRouter(
    prefix="/statistics",
    tags=['统计']
)
# 统计编辑量


@router.get("/list")
async def statistic_list():
    select_query = """SELECT DATE(create_at) AS date,COUNT(*) AS writCount FROM
        (SELECT create_at FROM diarys
        UNION ALL
        SELECT create_at FROM blogs) AS combined
        GROUP BY DATE
        ORDER BY DATE DESC;"""
    statistic_list = fetch_all(select_query)
    return response_success(statistic_list, "statistic get list success")

# 记录所有blog和diary数据


@router.get("/comments")
async def get_homepage_data():
    select_blog = """
        select id,blogtitle,blogcontent,imglink,create_at,update_at from blogs ORDER BY create_at DESC;
        """
    blog_list = fetch_all(select_blog)

    # 获取日记数据
    select_diary = """
        select id,diarytitle,diarycontent,imglink,create_at,update_at from diarys ORDER BY create_at DESC;
    """
    diary_list = fetch_all(select_diary)

    # 按日期分组数据
    grouped_data = defaultdict(lambda: {'blogs': [], 'diaries': []})

    for blog in blog_list:
        date_key = blog['create_at'].date()
        grouped_data[date_key]['blogs'].append(blog)

    for diary in diary_list:
        date_key = diary['create_at'].date()
        grouped_data[date_key]['diaries'].append(diary)

    # 将分组后的数据转换为列表并按日期排序
    result = [
        {'date': date, 'blogs': data['blogs'], 'diaries': data['diaries']}
        for date, data in sorted(grouped_data.items(), key=lambda x: x[0], reverse=True)
    ]

    return {"data": result}