| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- -- 管理员手动上传的本地进程插件。
- -- 插件默认停用;账号表不保存任何插件字段。
- -- 表名使用 sub2api 前缀,避免与部署数据库中已有的通用插件表冲突。
- CREATE TABLE IF NOT EXISTS sub2api_plugin_installations (
- id BIGSERIAL PRIMARY KEY,
- plugin_key VARCHAR(160) NOT NULL UNIQUE,
- name VARCHAR(160) NOT NULL,
- version VARCHAR(64) NOT NULL,
- description TEXT NOT NULL DEFAULT '',
- author VARCHAR(160) NOT NULL DEFAULT '',
- manifest JSONB NOT NULL DEFAULT '{}'::jsonb,
- artifact_path TEXT NOT NULL,
- install_path TEXT NOT NULL,
- binary_path TEXT NOT NULL,
- binary_sha256 VARCHAR(64) NOT NULL,
- signature_status VARCHAR(32) NOT NULL DEFAULT 'unsigned',
- state VARCHAR(32) NOT NULL DEFAULT 'disabled',
- config_encrypted TEXT NOT NULL DEFAULT '',
- last_error TEXT NOT NULL DEFAULT '',
- installed_by BIGINT REFERENCES users(id) ON DELETE SET NULL,
- installed_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- enabled_at TIMESTAMPTZ,
- updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- CONSTRAINT sub2api_plugin_installations_state_check
- CHECK (state IN ('disabled', 'starting', 'enabled', 'error', 'incompatible')),
- CONSTRAINT sub2api_plugin_installations_signature_status_check
- CHECK (signature_status IN ('trusted', 'unsigned'))
- );
- CREATE TABLE IF NOT EXISTS sub2api_plugin_bindings (
- id BIGSERIAL PRIMARY KEY,
- plugin_id BIGINT NOT NULL REFERENCES sub2api_plugin_installations(id) ON DELETE CASCADE,
- capability VARCHAR(160) NOT NULL,
- platform VARCHAR(32) NOT NULL,
- account_type VARCHAR(32) NOT NULL,
- enabled BOOLEAN NOT NULL DEFAULT FALSE,
- rollout_percent INTEGER NOT NULL DEFAULT 100,
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- CONSTRAINT sub2api_plugin_bindings_rollout_check CHECK (rollout_percent BETWEEN 0 AND 100),
- CONSTRAINT sub2api_plugin_bindings_scope_unique UNIQUE (plugin_id, capability, platform, account_type)
- );
- CREATE INDEX IF NOT EXISTS idx_sub2api_plugin_bindings_plugin_id
- ON sub2api_plugin_bindings(plugin_id);
- CREATE INDEX IF NOT EXISTS idx_sub2api_plugin_bindings_enabled_scope
- ON sub2api_plugin_bindings(platform, account_type, capability)
- WHERE enabled = TRUE;
- CREATE UNIQUE INDEX IF NOT EXISTS idx_sub2api_plugin_bindings_one_enabled_scope
- ON sub2api_plugin_bindings(capability, platform, account_type)
- WHERE enabled = TRUE;
|