Files
edgeever/migrations/0048_workspace_extensions.sql
tianma-if 0e5be33a44 feat(plugins): sync the install list across Web and desktop
Keep plugin and theme membership on the workspace so browsers and desktop apps can re-download verified packages. Settings, secrets, and native mobile runtimes stay out of this catalog.

Related Issue: #396
2026-09-14 10:41:56 +08:00

26 lines
1.2 KiB
SQL

PRAGMA foreign_keys = ON;
CREATE TABLE workspace_extensions (
workspace_id TEXT NOT NULL,
extension_id TEXT NOT NULL,
extension_type TEXT NOT NULL CHECK (extension_type IN ('plugin', 'theme')),
version TEXT NOT NULL CHECK (length(trim(version)) > 0 AND length(version) <= 80),
enabled INTEGER NOT NULL CHECK (enabled IN (0, 1)),
source_kind TEXT NOT NULL CHECK (source_kind IN ('marketplace', 'github', 'manifest')),
verified INTEGER NOT NULL CHECK (verified IN (0, 1)),
manifest_url TEXT NOT NULL CHECK (length(trim(manifest_url)) > 0 AND length(manifest_url) <= 2000),
repository_url TEXT CHECK (repository_url IS NULL OR (length(trim(repository_url)) > 0 AND length(repository_url) <= 500)),
release_tag TEXT CHECK (release_tag IS NULL OR (length(trim(release_tag)) > 0 AND length(release_tag) <= 80)),
publisher TEXT CHECK (publisher IS NULL OR publisher = 'edgeever'),
installed_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
deleted_at TEXT,
PRIMARY KEY (workspace_id, extension_id),
FOREIGN KEY (workspace_id) REFERENCES workspaces(id)
ON UPDATE CASCADE
ON DELETE CASCADE
);
CREATE INDEX idx_workspace_extensions_workspace_updated
ON workspace_extensions(workspace_id, deleted_at, updated_at DESC);