feat: add Download Logs tab in admin panel
This commit is contained in:
@@ -78,16 +78,25 @@ async def download_logs(
|
||||
user: dict = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
query = select(DownloadLog).order_by(DownloadLog.downloaded_at.desc())
|
||||
from sqlalchemy.orm import joinedload
|
||||
query = (
|
||||
select(DownloadLog)
|
||||
.options(joinedload(DownloadLog.video))
|
||||
.order_by(DownloadLog.downloaded_at.desc())
|
||||
)
|
||||
count_query = select(func.count(DownloadLog.id))
|
||||
if video_id is not None:
|
||||
query = query.where(DownloadLog.video_id == video_id)
|
||||
count_query = count_query.where(DownloadLog.video_id == video_id)
|
||||
total = (await db.execute(count_query)).scalar() or 0
|
||||
logs = (await db.execute(query.offset((page - 1) * page_size).limit(page_size))).scalars().all()
|
||||
return DownloadLogListResponse(
|
||||
logs=[DownloadLogInfo.model_validate(l) for l in logs],
|
||||
total=total,
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
)
|
||||
|
||||
items = []
|
||||
for l in logs:
|
||||
d = DownloadLogInfo.model_validate(l)
|
||||
if l.video:
|
||||
d.video_title = l.video.title or ""
|
||||
d.video_platform = l.video.platform or ""
|
||||
items.append(d)
|
||||
|
||||
return DownloadLogListResponse(logs=items, total=total, page=page, page_size=page_size)
|
||||
|
||||
Reference in New Issue
Block a user