mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-11-02 05:17:23 +08:00
fix(servarr): restore sync subscription lookup (#6635)
This commit is contained in:
@@ -600,6 +600,16 @@ class SessionSubscriptionRepository:
|
||||
"""同步按可选状态读取订阅快照。"""
|
||||
return [_project_subscription(record) for record in self._sync_repository().list(state)]
|
||||
|
||||
def list_by_media_identity(
|
||||
self,
|
||||
media_source: MediaSource,
|
||||
media_id: str,
|
||||
music_type: Optional[str] = None,
|
||||
) -> builtins.list[SubscriptionSnapshot]:
|
||||
"""同步按规范媒体身份读取订阅快照。"""
|
||||
records = self._sync_repository().list_by_media_identity(media_source, media_id, music_type)
|
||||
return [_project_subscription(record) for record in records]
|
||||
|
||||
async def async_get(self, subscribe_id: int) -> Optional[SubscriptionSnapshot]:
|
||||
"""异步按主键读取订阅快照。"""
|
||||
record = await self._async_repository().async_get(subscribe_id)
|
||||
|
||||
@@ -7,6 +7,7 @@ from sqlalchemy import func, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.api.context import get_sync_subscription_repository
|
||||
from app.application.servarr import ServarrSubscriptionService
|
||||
from app.application.subscription.complete import CompleteSubscriptionCommand
|
||||
from app.application.subscription.contract import (
|
||||
SubscriptionIdentity,
|
||||
@@ -84,6 +85,36 @@ def test_sync_api_repository_dependency_binds_sync_session(db) -> None:
|
||||
assert repository.get(-1) is None
|
||||
|
||||
|
||||
def test_servarr_sync_lookup_reads_session_repository(db) -> None:
|
||||
"""Servarr 同步 lookup 应从请求级订阅仓储读取媒体身份投影。"""
|
||||
row = db.add(
|
||||
Subscribe(
|
||||
name="同步 lookup 订阅",
|
||||
type=MediaType.MOVIE.value,
|
||||
media_source=MediaSource.TMDB.value,
|
||||
media_id="550",
|
||||
)
|
||||
)
|
||||
db.add(
|
||||
Subscribe(
|
||||
name="其他媒体",
|
||||
type=MediaType.MOVIE.value,
|
||||
media_source=MediaSource.TMDB.value,
|
||||
media_id="551",
|
||||
)
|
||||
)
|
||||
|
||||
repository = SessionSubscriptionRepository(db.session)
|
||||
service = ServarrSubscriptionService(
|
||||
async_repository=repository,
|
||||
sync_repository=repository,
|
||||
)
|
||||
|
||||
result = service.list_by_media_identity_sync(MediaSource.TMDB, "550")
|
||||
|
||||
assert [(item.id, item.name, item.media_id) for item in result] == [(row.id, "同步 lookup 订阅", "550")]
|
||||
|
||||
|
||||
def test_session_repository_leaves_commit_and_rollback_to_caller(db) -> None:
|
||||
"""请求级仓储只 flush 暂存记录,调用方回滚后数据库不保留该记录。"""
|
||||
db.watermark(Subscribe)
|
||||
|
||||
Reference in New Issue
Block a user