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