mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
refactor: make subscription lifecycle events durable
This commit is contained in:
@@ -8,6 +8,13 @@ from app.application.messaging.chat import (
|
||||
AsyncAgentChatRepository,
|
||||
AsyncUnitOfWork,
|
||||
)
|
||||
from app.application.outbox import AsyncOutboxTransaction
|
||||
from app.application.subscription.delete import SubscribeDeletionRepository
|
||||
from app.application.subscription.identity import SubscribeIdentityDeletionRepository
|
||||
from app.application.subscription.mutation import (
|
||||
SubscriptionHistoryMutationRepository,
|
||||
SubscriptionMutationRepository,
|
||||
)
|
||||
|
||||
|
||||
class AgentChatRepositoryFactory(Protocol):
|
||||
@@ -26,6 +33,37 @@ class AsyncUnitOfWorkFactory(Protocol):
|
||||
...
|
||||
|
||||
|
||||
class AsyncOutboxFactory(Protocol):
|
||||
"""由请求会话构造异步 outbox 事务端口的工厂。"""
|
||||
|
||||
def __call__(self, session: object) -> AsyncOutboxTransaction:
|
||||
"""绑定请求会话并返回 outbox 暂存与收口端口。"""
|
||||
...
|
||||
|
||||
|
||||
class SubscriptionRepositoryFactory(Protocol):
|
||||
"""由请求会话构造订阅写仓储的工厂。"""
|
||||
|
||||
def __call__(
|
||||
self,
|
||||
session: object,
|
||||
) -> (
|
||||
SubscriptionMutationRepository
|
||||
| SubscribeDeletionRepository
|
||||
| SubscribeIdentityDeletionRepository
|
||||
):
|
||||
"""绑定请求会话并返回订阅领域仓储。"""
|
||||
...
|
||||
|
||||
|
||||
class SubscriptionHistoryRepositoryFactory(Protocol):
|
||||
"""由请求会话构造订阅历史写仓储的工厂。"""
|
||||
|
||||
def __call__(self, session: object) -> SubscriptionHistoryMutationRepository:
|
||||
"""绑定请求会话并返回订阅历史仓储。"""
|
||||
...
|
||||
|
||||
|
||||
class AsyncSessionProvider(Protocol):
|
||||
"""FastAPI 请求级异步会话提供器。"""
|
||||
|
||||
@@ -70,9 +108,21 @@ class AgentChatRuntime:
|
||||
transaction: AsyncUnitOfWorkFactory
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class SubscriptionRuntime:
|
||||
"""订阅 API 可见的请求级写事务运行时。"""
|
||||
|
||||
async_session: AsyncSessionProvider
|
||||
repository: SubscriptionRepositoryFactory
|
||||
history_repository: SubscriptionHistoryRepositoryFactory
|
||||
transaction: AsyncUnitOfWorkFactory
|
||||
outbox: AsyncOutboxFactory
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class HostRuntime:
|
||||
"""宿主组合根构建且在一个 FastAPI lifespan 内共享的运行时对象。"""
|
||||
|
||||
agent_chat: AgentChatRuntime
|
||||
subscription: SubscriptionRuntime
|
||||
compatibility_api_data: CompatibilityApiData
|
||||
|
||||
Reference in New Issue
Block a user