Private
Public Access
1
0
Files
u-desk/docs/04-功能迭代/GO-DESK-9.插件系统/设计文档/数据模型.md

2.7 KiB
Raw Blame History

数据模型

一、plugin_state 表(新增)

CREATE TABLE plugin_state (
    plugin_id    TEXT PRIMARY KEY,
    source       TEXT NOT NULL DEFAULT 'builtin',
    enabled      INTEGER DEFAULT 1,
    config       TEXT,
    install_path TEXT,
    version      TEXT,
    installed_at DATETIME,
    updated_at   DATETIME,
    created_at   DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX idx_plugin_source ON plugin_state(source);
CREATE INDEX idx_plugin_enabled ON plugin_state(enabled);

字段说明

字段 类型 说明
plugin_id TEXT PK 对应 PluginMetadata.ID"builtin-drawio"
source TEXT 'builtin''market'
enabled INTEGER 1=启用 0=停用
config TEXT JSON 格式的插件私有配置
install_path TEXT 外部插件磁盘路径(内置为 NULL
version TEXT 当前安装的版本号
installed_at DATETIME 安装时间
updated_at DATETIME 最后状态变更时间

二、与现有表的关系

app_config 表(已有)          plugin_state 表(新增)
┌──────────────┐              ┌──────────────┐
│ key='tab_config'│           │ plugin_id PK │
│ value=JSON    │ ← 合并Tab →│ source       │
│ (全局配置)     │              │ enabled      │
├──────────────┤              │ version      │
│ key='plugin_  │ ← 全局设置→│ config       │
│  global'      │              │ install_path │
│ (Phase 3 新增)│              └──────────────┘
└──────────────┘
  • app_config存全局应用配置tab_config、plugin_global 等)
  • plugin_state:存每个插件的运行状态和独立配置
  • 两者通过 plugin_id 关联

三、初始种子数据

应用首次启动时由 Go 代码写入:

INSERT OR IGNORE INTO plugin_state (plugin_id, source, enabled, version) VALUES
    ('builtin-file-system',  'builtin', 1, '0.4.0'),
    ('builtin-markdown',      'builtin', 1, '0.4.0'),
    ('builtin-drawio',        'builtin', 0, '1.0.0');

四、配置存储策略

存储位置 内容 写入时机
app_config['tab_config'] Tab 可见性/排序/默认值 Phase 3 动态合并
app_config['plugin_global'] 插件全局设置(自动更新间隔等) Phase 3
plugin_state.enabled 每个插件的启停状态 Phase 3 SetPluginEnabled
plugin_state.version 当前安装版本 安装/更新时
plugin_state.config 插件私有配置(如 Draw.io 端口号) 用户修改插件设置时