46 lines
1.4 KiB
Python
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) |