mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-15 11:04:12 +08:00
feat: add async plugin data interfaces (#6188)
This commit is contained in:
@@ -24,6 +24,24 @@ class PluginDataOper(DbOper):
|
||||
else:
|
||||
PluginData(plugin_id=plugin_id, key=key, value=value).create(self._db)
|
||||
|
||||
async def async_save(self, plugin_id: str, key: str, value: Any) -> None:
|
||||
"""
|
||||
异步保存插件数据
|
||||
|
||||
:param plugin_id: 插件ID
|
||||
:param key: 数据键
|
||||
:param value: 数据值
|
||||
"""
|
||||
plugin = await PluginData.async_get_plugin_data_by_key(
|
||||
self._db, plugin_id, key
|
||||
)
|
||||
if plugin:
|
||||
await plugin.async_update(self._db, {"value": value})
|
||||
else:
|
||||
await PluginData(
|
||||
plugin_id=plugin_id, key=key, value=value
|
||||
).async_create(self._db)
|
||||
|
||||
def get_data(self, plugin_id: str, key: Optional[str] = None) -> Any:
|
||||
"""
|
||||
获取插件数据
|
||||
|
||||
@@ -277,6 +277,20 @@ class _PluginBase(metaclass=ABCMeta):
|
||||
plugin_id = self.__class__.__name__
|
||||
self.plugindata.save(plugin_id, key, value)
|
||||
|
||||
async def async_save_data(
|
||||
self, key: str, value: Any, plugin_id: Optional[str] = None
|
||||
) -> None:
|
||||
"""
|
||||
异步保存插件数据
|
||||
|
||||
:param key: 数据键
|
||||
:param value: 数据值
|
||||
:param plugin_id: 插件ID
|
||||
"""
|
||||
if not plugin_id:
|
||||
plugin_id = self.__class__.__name__
|
||||
await self.plugindata.async_save(plugin_id, key, value)
|
||||
|
||||
def get_data(self, key: Optional[str] = None, plugin_id: Optional[str] = None) -> Any:
|
||||
"""
|
||||
获取插件数据
|
||||
@@ -287,6 +301,20 @@ class _PluginBase(metaclass=ABCMeta):
|
||||
plugin_id = self.__class__.__name__
|
||||
return self.plugindata.get_data(plugin_id, key)
|
||||
|
||||
async def async_get_data(
|
||||
self, key: Optional[str] = None, plugin_id: Optional[str] = None
|
||||
) -> Any:
|
||||
"""
|
||||
异步获取插件数据
|
||||
|
||||
:param key: 数据键
|
||||
:param plugin_id: 插件ID
|
||||
:return: 指定键的数据值或插件的全部数据
|
||||
"""
|
||||
if not plugin_id:
|
||||
plugin_id = self.__class__.__name__
|
||||
return await self.plugindata.async_get_data(plugin_id, key)
|
||||
|
||||
def del_data(self, key: str, plugin_id: Optional[str] = None) -> Any:
|
||||
"""
|
||||
删除插件数据
|
||||
|
||||
Reference in New Issue
Block a user