From 46f643fb403eae6aa2fff9baff03dc9eb666b3c5 Mon Sep 17 00:00:00 2001 From: estrella Date: Sun, 17 Sep 2023 16:23:38 +0800 Subject: [PATCH] fix: update rule. --- backend/src/module/database/bangumi.py | 11 ++++++--- backend/src/module/manager/torrent.py | 31 +++++++++++++------------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/backend/src/module/database/bangumi.py b/backend/src/module/database/bangumi.py index 72950d27..d9d3db09 100644 --- a/backend/src/module/database/bangumi.py +++ b/backend/src/module/database/bangumi.py @@ -4,7 +4,7 @@ from sqlmodel import Session, select, delete, or_, and_ from sqlalchemy.sql import func from typing import Optional -from module.models import Bangumi +from module.models import Bangumi, BangumiUpdate logger = logging.getLogger(__name__) @@ -23,8 +23,13 @@ class BangumiDatabase: self.session.commit() logger.debug(f"[Database] Insert {len(datas)} bangumi into database.") - def update(self, data: Bangumi) -> bool: - db_data = self.session.get(Bangumi, data.id) + def update(self, data: Bangumi | BangumiUpdate, _id: int = None) -> bool: + if _id and isinstance(data, BangumiUpdate): + db_data = self.session.get(Bangumi, _id) + elif isinstance(data, Bangumi): + db_data = self.session.get(Bangumi, data.id) + else: + return False if not db_data: return False bangumi_data = data.dict(exclude_unset=True) diff --git a/backend/src/module/manager/torrent.py b/backend/src/module/manager/torrent.py index e1b72c6c..9a559fbc 100644 --- a/backend/src/module/manager/torrent.py +++ b/backend/src/module/manager/torrent.py @@ -110,7 +110,21 @@ class TorrentManager(Database): def update_rule(self, bangumi_id, data: BangumiUpdate): old_data: Bangumi = self.bangumi.search_id(bangumi_id) - if not old_data: + if old_data: + # Move torrent + match_list = self.__match_torrents_list(old_data) + with DownloadClient() as client: + path = client._gen_save_path(data) + if match_list: + client.move_torrent(match_list, path) + self.bangumi.update(data, bangumi_id) + return ResponseModel( + status_code=200, + status=True, + msg_en=f"Update rule for {data.official_title}", + msg_zh=f"更新 {data.official_title} 规则", + ) + else: logger.error(f"[Manager] Can't find data with {bangumi_id}") return ResponseModel( status_code=406, @@ -118,20 +132,7 @@ class TorrentManager(Database): msg_en=f"Can't find data with {bangumi_id}", msg_zh=f"无法找到 id {bangumi_id} 的数据", ) - else: - # Move torrent - match_list = self.__match_torrents_list(old_data) - with DownloadClient() as client: - path = client._gen_save_path(data) - if match_list: - client.move_torrent(match_list, path) - self.bangumi.update(data) - return ResponseModel( - status_code=200, - status=True, - msg_en=f"Update rule for {data.official_title}", - msg_zh=f"更新 {data.official_title} 规则", - ) + def search_all_bangumi(self): datas = self.bangumi.search_all()