Files
MoviePilot/app/db/plugin/base.py
DDSRem 2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00

30 lines
910 B
Python

"""
插件专属声明式基类工厂。
"""
from __future__ import annotations
from sqlalchemy.orm import DeclarativeBase
__all__ = ["plugin_declarative_base"]
def plugin_declarative_base() -> type[DeclarativeBase]:
"""
产出携带全新 ``MetaData`` 的声明式基类。
插件模型继承本函数的返回值定义,其表便注册在独立的 ``MetaData`` 上:既不与宿主
``app.db.base.Base`` 抢同一份注册表,也允许两个插件各自定义同名表。插件热重载会
重新执行插件模块、重新调用本函数,因此每次都拿到干净的注册表,不会在同一
``MetaData`` 上重复定义同名表而报错。
:return: 声明式基类
"""
class PluginBase(DeclarativeBase): # type: ignore[misc] # SQLAlchemy 无 py.typed 基类
"""
插件自有表的声明式基类。
"""
return PluginBase