mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-31 21:17:06 +08:00
65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
from typing import List, Optional
|
|
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.db.base import DbOper
|
|
from app.db.models.subscribehistory import SubscribeHistory
|
|
|
|
|
|
class SubscribeHistoryOper(DbOper):
|
|
"""
|
|
订阅历史管理。
|
|
"""
|
|
|
|
async def async_list_by_type(
|
|
self,
|
|
mtype: str,
|
|
page: int = 1,
|
|
count: int = 30,
|
|
) -> List[SubscribeHistory]:
|
|
"""
|
|
异步按媒体类型分页查询订阅历史。
|
|
"""
|
|
return await self._execute_async_query(
|
|
lambda session: SubscribeHistory.async_list_by_type(
|
|
session,
|
|
mtype=mtype,
|
|
page=page,
|
|
count=count,
|
|
)
|
|
)
|
|
|
|
async def async_list_by_type_and_username(
|
|
self,
|
|
mtype: str,
|
|
username: str,
|
|
page: int = 1,
|
|
count: int = 30,
|
|
) -> List[SubscribeHistory]:
|
|
"""异步按媒体类型和用户分页查询订阅历史。"""
|
|
return await self._execute_async_query(
|
|
lambda session: SubscribeHistory.async_list_by_type_and_username(
|
|
session,
|
|
mtype=mtype,
|
|
username=username,
|
|
page=page,
|
|
count=count,
|
|
)
|
|
)
|
|
|
|
async def async_get(self, history_id: int) -> Optional[SubscribeHistory]:
|
|
"""异步按 ID 查询订阅历史。"""
|
|
async def query(session: AsyncSession) -> Optional[SubscribeHistory]:
|
|
"""在调用方异步会话中按主键查询历史。"""
|
|
result = await session.execute(
|
|
select(SubscribeHistory).where(SubscribeHistory.id == history_id)
|
|
)
|
|
return result.scalars().first()
|
|
|
|
return await self._execute_async_query(query)
|
|
|
|
async def async_delete(self, history_id: int) -> None:
|
|
"""异步删除订阅历史。"""
|
|
await self._stage_async_delete(SubscribeHistory, history_id)
|