mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 15:38:19 +08:00
refactor: 推进后端分层架构治理
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
"""插件运行时持久化端口。"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Awaitable, Callable
|
||||
from typing import Any
|
||||
|
||||
|
||||
ConfigReader = Callable[[Any], Any]
|
||||
ConfigWriter = Callable[[Any, Any], Any]
|
||||
AsyncConfigWriter = Callable[[Any, Any], Awaitable[Any]]
|
||||
ConfigDeleter = Callable[[Any], bool]
|
||||
PluginDataDeleter = Callable[[str], Any]
|
||||
|
||||
|
||||
def _empty_read(_key: Any) -> Any:
|
||||
"""组合根尚未装配时返回空配置。"""
|
||||
return None
|
||||
|
||||
|
||||
def _ignore_write(_key: Any, _value: Any) -> None:
|
||||
"""组合根尚未装配时忽略同步配置写入。"""
|
||||
|
||||
|
||||
async def _ignore_async_write(_key: Any, _value: Any) -> None:
|
||||
"""组合根尚未装配时忽略异步配置写入。"""
|
||||
|
||||
|
||||
def _ignore_delete(_key: Any) -> bool:
|
||||
"""组合根尚未装配时报告配置未删除。"""
|
||||
return False
|
||||
|
||||
|
||||
def _ignore_plugin_data_delete(_plugin_id: str) -> None:
|
||||
"""组合根尚未装配时忽略插件数据删除。"""
|
||||
|
||||
|
||||
class PluginStorage:
|
||||
"""封装插件运行时所需的最小持久化能力。"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
read: ConfigReader = _empty_read,
|
||||
write: ConfigWriter = _ignore_write,
|
||||
async_write: AsyncConfigWriter = _ignore_async_write,
|
||||
delete: ConfigDeleter = _ignore_delete,
|
||||
delete_data: PluginDataDeleter = _ignore_plugin_data_delete,
|
||||
) -> None:
|
||||
"""保存由启动组合根提供的读写函数。"""
|
||||
self._read = read
|
||||
self._write = write
|
||||
self._async_write = async_write
|
||||
self._delete = delete
|
||||
self._delete_data = delete_data
|
||||
|
||||
def read(self, key: Any) -> Any:
|
||||
"""读取插件运行时配置。"""
|
||||
return self._read(key)
|
||||
|
||||
def write(self, key: Any, value: Any) -> Any:
|
||||
"""同步保存插件运行时配置。"""
|
||||
return self._write(key, value)
|
||||
|
||||
async def async_write(self, key: Any, value: Any) -> Any:
|
||||
"""异步保存插件运行时配置。"""
|
||||
return await self._async_write(key, value)
|
||||
|
||||
def delete(self, key: Any) -> bool:
|
||||
"""删除插件运行时配置。"""
|
||||
return self._delete(key)
|
||||
|
||||
def delete_data(self, plugin_id: str) -> Any:
|
||||
"""删除指定插件的业务数据。"""
|
||||
return self._delete_data(plugin_id)
|
||||
|
||||
|
||||
_plugin_storage = PluginStorage()
|
||||
|
||||
|
||||
def configure_plugin_storage(storage: PluginStorage) -> None:
|
||||
"""由启动组合根替换插件运行时持久化实现。"""
|
||||
global _plugin_storage
|
||||
_plugin_storage = storage
|
||||
|
||||
|
||||
def get_plugin_storage() -> PluginStorage:
|
||||
"""返回当前插件运行时持久化端口。"""
|
||||
return _plugin_storage
|
||||
Reference in New Issue
Block a user