2.7 KiB
2.7 KiB
数据模型
一、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 端口号) | 用户修改插件设置时 |