refactor: isolate transfer and download history queries

This commit is contained in:
jxxghp
2026-08-23 13:59:12 +08:00
parent 03c03fa27d
commit 4074fa4e42
10 changed files with 505 additions and 348 deletions
+92 -50
View File
@@ -19,13 +19,17 @@ class TransferHistoryOper(DbOper):
获取转移历史
:param historyid: 转移历史id
"""
return TransferHistory.get(self._db, historyid)
return self._execute_sync_query(
lambda session: TransferHistory.get(session, historyid)
)
async def async_get(self, historyid: int) -> Optional[TransferHistory]:
"""
异步获取转移历史。
"""
return await TransferHistory.async_get(self._db, historyid)
return await self._execute_async_query(
lambda session: TransferHistory.async_get(session, historyid)
)
async def async_list_by_title(
self,
@@ -38,13 +42,15 @@ class TransferHistoryOper(DbOper):
"""
异步按标题分页查询转移记录。
"""
return await TransferHistory.async_list_by_title(
self._db,
title=title,
page=page,
count=count,
status=status,
wildcard=wildcard,
return await self._execute_async_query(
lambda session: TransferHistory.async_list_by_title(
session,
title=title,
page=page,
count=count,
status=status,
wildcard=wildcard,
)
)
async def async_list_by_page(
@@ -56,15 +62,19 @@ class TransferHistoryOper(DbOper):
"""
异步分页查询转移记录。
"""
return await TransferHistory.async_list_by_page(
self._db, page=page, count=count, status=status
return await self._execute_async_query(
lambda session: TransferHistory.async_list_by_page(
session, page=page, count=count, status=status
)
)
async def async_count(self, status: Optional[bool] = None) -> Optional[int]:
"""
异步统计转移记录数量。
"""
return await TransferHistory.async_count(self._db, status=status)
return await self._execute_async_query(
lambda session: TransferHistory.async_count(session, status=status)
)
async def async_count_by_title(
self,
@@ -75,11 +85,13 @@ class TransferHistoryOper(DbOper):
"""
异步按标题统计转移记录数量。
"""
return await TransferHistory.async_count_by_title(
self._db,
title=title,
status=status,
wildcard=wildcard,
return await self._execute_async_query(
lambda session: TransferHistory.async_count_by_title(
session,
title=title,
status=status,
wildcard=wildcard,
)
)
def get_by_title(self, title: str) -> List[TransferHistory]:
@@ -87,7 +99,9 @@ class TransferHistoryOper(DbOper):
按标题查询转移记录
:param title: 数据key
"""
return TransferHistory.list_by_title(self._db, title)
return self._execute_sync_query(
lambda session: TransferHistory.list_by_title(session, title)
)
def get_by_src(
self, src: str, storage: Optional[str] = None
@@ -98,7 +112,9 @@ class TransferHistoryOper(DbOper):
:param storage: 存储类型
:return: 命中的整理记录,未命中时返回 None
"""
return TransferHistory.get_by_src(self._db, src, storage)
return self._execute_sync_query(
lambda session: TransferHistory.get_by_src(session, src, storage)
)
def get_success_by_src(
self, src: str, storage: Optional[str] = None
@@ -109,7 +125,11 @@ class TransferHistoryOper(DbOper):
:param storage: 存储类型
:return: 命中的成功整理记录,未命中时返回 None
"""
return TransferHistory.get_success_by_src(self._db, src, storage)
return self._execute_sync_query(
lambda session: TransferHistory.get_success_by_src(
session, src, storage
)
)
def get_by_dest(
self, dest: str, storage: Optional[str] = None
@@ -119,7 +139,9 @@ class TransferHistoryOper(DbOper):
:param dest: 数据key
:param storage: 存储类型
"""
return TransferHistory.get_by_dest(self._db, dest, storage)
return self._execute_sync_query(
lambda session: TransferHistory.get_by_dest(session, dest, storage)
)
def list_success_by_src(
self,
@@ -135,11 +157,13 @@ class TransferHistoryOper(DbOper):
:param recursive: 是否递归匹配目录子项
:return: 命中的成功整理记录
"""
return TransferHistory.list_success_by_src(
self._db,
src=src,
storage=storage,
recursive=recursive,
return self._execute_sync_query(
lambda session: TransferHistory.list_success_by_src(
session,
src=src,
storage=storage,
recursive=recursive,
)
)
def list_success_move_by_dest(
@@ -156,11 +180,13 @@ class TransferHistoryOper(DbOper):
:param recursive: 是否递归匹配目录子项
:return: 命中的成功移动记录
"""
return TransferHistory.list_success_move_by_dest(
self._db,
dest=dest,
storage=storage,
recursive=recursive,
return self._execute_sync_query(
lambda session: TransferHistory.list_success_move_by_dest(
session,
dest=dest,
storage=storage,
recursive=recursive,
)
)
def list_by_hash(self, download_hash: str) -> List[TransferHistory]:
@@ -168,7 +194,9 @@ class TransferHistoryOper(DbOper):
按种子hash查询转移记录
:param download_hash: 种子hash
"""
return TransferHistory.list_by_hash(self._db, download_hash)
return self._execute_sync_query(
lambda session: TransferHistory.list_by_hash(session, download_hash)
)
def add(self, **kwargs):
"""
@@ -183,15 +211,21 @@ class TransferHistoryOper(DbOper):
"""
统计最近days天的下载历史数量
"""
return TransferHistory.statistic(self._db, days)
return self._execute_sync_query(
lambda session: TransferHistory.statistic(session, days)
)
async def async_statistic(self, days: int = 7) -> List[Any]:
"""异步统计最近若干天的整理历史数量。"""
return await TransferHistory.async_statistic(self._db, days)
return await self._execute_async_query(
lambda session: TransferHistory.async_statistic(session, days)
)
def monthly_media_statistics(self) -> tuple[int, int, int, int]:
"""统计本月成功整理的电影、剧集、单集和音乐数量。"""
return TransferHistory.monthly_media_statistics(self._db)
return self._execute_sync_query(
TransferHistory.monthly_media_statistics
)
def get_by(self, title: Optional[str] = None, year: Optional[str] = None, mtype: Optional[str] = None,
season: Optional[str] = None, episode: Optional[str] = None,
@@ -200,26 +234,32 @@ class TransferHistoryOper(DbOper):
"""
按类型、标题、年份、季集查询转移记录
"""
return TransferHistory.list_by(db=self._db,
mtype=mtype,
title=title,
dest=dest,
year=year,
season=season,
episode=episode,
media_source=media_source,
media_id=media_id)
return self._execute_sync_query(
lambda session: TransferHistory.list_by(
db=session,
mtype=mtype,
title=title,
dest=dest,
year=year,
season=season,
episode=episode,
media_source=media_source,
media_id=media_id,
)
)
def get_by_media_identity(
self, media_source: MediaSource, media_id: str,
mtype: Optional[str] = None,
) -> Optional[TransferHistory]:
"""按规范媒体身份和类型查询整理记录。"""
return TransferHistory.get_by_media_identity(
db=self._db,
media_source=media_source,
media_id=media_id,
mtype=mtype,
return self._execute_sync_query(
lambda session: TransferHistory.get_by_media_identity(
db=session,
media_source=media_source,
media_id=media_id,
mtype=mtype,
)
)
def delete(self, historyid):
@@ -312,4 +352,6 @@ class TransferHistoryOper(DbOper):
查询某时间之后的转移历史
:param date: 日期
"""
return TransferHistory.list_by_date(self._db, date)
return self._execute_sync_query(
lambda session: TransferHistory.list_by_date(session, date)
)