mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
docs(db): clarify plugin-owned decorators
This commit is contained in:
@@ -1,10 +1,13 @@
|
|||||||
"""
|
"""
|
||||||
数据库事务装饰器。
|
插件自有数据库函数使用的公共事务装饰器。
|
||||||
|
|
||||||
同步/异步各一对:查询装饰器负责会话的获取与释放,更新装饰器额外负责提交与回滚。
|
同步/异步各一对:查询装饰器负责会话的获取与释放,更新装饰器额外负责提交与回滚。
|
||||||
未显式传入会话时自动创建,并在结束时归还——异步路径经 async_session_scope 收口,
|
未显式传入会话时自动创建,并在结束时归还——异步路径经 async_session_scope 收口,
|
||||||
连接池与配额都在那里生效。
|
连接池与配额都在那里生效。
|
||||||
|
|
||||||
|
宿主 Model、Base 与 Oper 不使用这些装饰器;它们通过显式 Session、事务执行器或 UoW
|
||||||
|
管理事务。这里保留的四个入口只供插件操作插件自有表,不能用于访问宿主 Model。
|
||||||
|
|
||||||
收尾故障(rollback / close / __aexit__ 自身抛异常)一律只记日志、不上抛。理由与代价
|
收尾故障(rollback / close / __aexit__ 自身抛异常)一律只记日志、不上抛。理由与代价
|
||||||
都要写明,别当成漏写的 raise:
|
都要写明,别当成漏写的 raise:
|
||||||
|
|
||||||
@@ -26,10 +29,9 @@ from app.runtime.log import logger
|
|||||||
|
|
||||||
_R = TypeVar("_R")
|
_R = TypeVar("_R")
|
||||||
|
|
||||||
# 正式装饰器会重写实参列表:未传会话时自行创建一个并塞回 db 位置。因此包装后的可调用
|
# 公共装饰器会重写实参列表:未传会话时自行创建一个并塞回 db 位置。因此包装后的可调用
|
||||||
# 对象接受的实参与被包装函数的签名并不一致——用 Callable[..., _R] 如实表达「参数由装饰器
|
# 对象接受的实参与被包装函数的签名并不一致——用 Callable[..., _R] 如实表达「参数由装饰器
|
||||||
# 接管、返回值原样透传」。否则调用方传 None 或传异步会话都会被判成类型不符,而这恰恰是
|
# 接管、返回值原样透传」。否则插件自有数据库函数传 None 或传异步会话时会被判成类型不符。
|
||||||
# 装饰器存在的理由(各 Oper 的 self._db 常态就是 None)。
|
|
||||||
|
|
||||||
|
|
||||||
def _get_args_db(
|
def _get_args_db(
|
||||||
|
|||||||
Reference in New Issue
Block a user