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
26 lines
1.2 KiB
SQL
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);
|