Files
MoviePilot/app/db/oper/subscribehistory.py
T

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)