Files
backend/backend/app/admin/crud/daily_summary_crud.py
2025-10-18 10:54:08 +08:00

46 lines
1.4 KiB
Python

from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy_crud_plus import CRUDPlus
from sqlalchemy import select, func, desc
from datetime import datetime, date
from backend.app.admin.model.audit_log import DailySummary
from backend.app.admin.schema.audit_log import DailySummarySchema
class DailySummaryCRUD(CRUDPlus[DailySummary]):
""" Daily Summary CRUD """
async def get_user_daily_summaries(self, db: AsyncSession, user_id: int, page: int = 1, size: int = 20):
"""
获取用户的每日汇总记录,按创建时间降序排列
:param db: 数据库会话
:param user_id: 用户ID
:param page: 页码
:param size: 每页数量
:return: 查询结果和总数
"""
# 主查询:获取用户每日汇总记录
stmt = (
select(DailySummary)
.where(DailySummary.user_id == user_id)
.order_by(desc(DailySummary.created_time))
.offset((page - 1) * size)
.limit(size)
)
result = await db.execute(stmt)
items = result.scalars().all()
# 获取总数
count_stmt = (
select(func.count())
.where(DailySummary.user_id == user_id)
)
total_result = await db.execute(count_stmt)
total = total_result.scalar()
return items, total
daily_summary_dao: DailySummaryCRUD = DailySummaryCRUD(DailySummary)