From 5d5c8a0af7c7c02f4f60b18cfd11e4959f01cd6c Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Mon, 16 Dec 2024 19:07:42 +0800 Subject: [PATCH] feat(event): add SubscribeDeleted event --- app/api/endpoints/subscribe.py | 34 +++++++++++++++++++++++++--------- app/schemas/types.py | 2 ++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/api/endpoints/subscribe.py b/app/api/endpoints/subscribe.py index 999ce150..5836373a 100644 --- a/app/api/endpoints/subscribe.py +++ b/app/api/endpoints/subscribe.py @@ -8,6 +8,7 @@ from app import schemas from app.chain.subscribe import SubscribeChain from app.core.config import settings from app.core.context import MediaInfo +from app.core.event import eventmanager from app.core.metainfo import MetaInfo from app.core.security import verify_token, verify_apitoken from app.db import get_db @@ -17,7 +18,7 @@ from app.db.models.user import User from app.db.user_oper import get_current_active_user from app.helper.subscribe import SubscribeHelper from app.scheduler import Scheduler -from app.schemas.types import MediaType +from app.schemas.types import MediaType, EventType router = APIRouter() @@ -274,17 +275,27 @@ def delete_subscribe_by_mediaid( """ 根据TMDBID或豆瓣ID删除订阅 tmdb:/douban: """ + delete_subscribes = [] if mediaid.startswith("tmdb:"): tmdbid = mediaid[5:] if not tmdbid or not str(tmdbid).isdigit(): return schemas.Response(success=False) - Subscribe().delete_by_tmdbid(db, int(tmdbid), season) + subscribes = Subscribe().get_by_tmdbid(db, int(tmdbid), season) + delete_subscribes.extend(subscribes) elif mediaid.startswith("douban:"): doubanid = mediaid[7:] if not doubanid: return schemas.Response(success=False) - Subscribe().delete_by_doubanid(db, doubanid) - + subscribe = Subscribe().get_by_doubanid(db, doubanid) + if subscribe: + delete_subscribes.append(subscribe) + for subscribe in delete_subscribes: + Subscribe().delete(db, subscribe.id) + # 发送事件 + eventmanager.send_event(EventType.SubscribeDeleted, { + "subscribe_id": subscribe.id, + "subscribe": subscribe.to_dict() + }) return schemas.Response(success=True) @@ -507,9 +518,14 @@ def delete_subscribe( subscribe = Subscribe.get(db, subscribe_id) if subscribe: subscribe.delete(db, subscribe_id) - # 统计订阅 - SubscribeHelper().sub_done_async({ - "tmdbid": subscribe.tmdbid, - "doubanid": subscribe.doubanid - }) + # 发送事件 + eventmanager.send_event(EventType.SubscribeDeleted, { + "subscribe_id": subscribe_id, + "subscribe": subscribe.to_dict() + }) + # 统计订阅 + SubscribeHelper().sub_done_async({ + "tmdbid": subscribe.tmdbid, + "doubanid": subscribe.doubanid + }) return schemas.Response(success=True) diff --git a/app/schemas/types.py b/app/schemas/types.py index f5de798c..8ae5e6e5 100644 --- a/app/schemas/types.py +++ b/app/schemas/types.py @@ -48,6 +48,8 @@ class EventType(Enum): NoticeMessage = "notice.message" # 订阅已添加 SubscribeAdded = "subscribe.added" + # 订阅已删除 + SubscribeDeleted = "subscribe.deleted" # 订阅已完成 SubscribeComplete = "subscribe.complete" # 系统错误