docs(db): clarify plugin-owned decorators

This commit is contained in:
jxxghp
2026-08-23 23:35:17 +08:00
parent 57e9d11f67
commit 85439d3f9c
+6 -4
View File
@@ -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(