45 lines
1.4 KiB
SQL
45 lines
1.4 KiB
SQL
CREATE TABLE IF NOT EXISTS plugin_registry (
|
|
plugin_id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
author TEXT NOT NULL,
|
|
permissions_json TEXT NOT NULL,
|
|
signature_state TEXT NOT NULL CHECK (signature_state IN ('valid', 'revoked')),
|
|
min_ely_build TEXT NOT NULL,
|
|
package_r2_key TEXT NOT NULL,
|
|
package_sha256 TEXT NOT NULL,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
revoked_at INTEGER
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_plugin_registry_signature
|
|
ON plugin_registry (signature_state, updated_at);
|
|
|
|
CREATE TABLE IF NOT EXISTS plugin_packages (
|
|
plugin_id TEXT NOT NULL,
|
|
package_version TEXT NOT NULL,
|
|
r2_key TEXT NOT NULL,
|
|
sha256 TEXT NOT NULL,
|
|
signature_key_id TEXT NOT NULL,
|
|
signature_value TEXT NOT NULL,
|
|
size_bytes INTEGER NOT NULL CHECK (size_bytes > 0),
|
|
published_at INTEGER NOT NULL,
|
|
revoked_at INTEGER,
|
|
PRIMARY KEY (plugin_id, package_version),
|
|
FOREIGN KEY (plugin_id) REFERENCES plugin_registry (plugin_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_plugin_packages_active
|
|
ON plugin_packages (plugin_id, revoked_at, published_at);
|
|
|
|
CREATE TABLE IF NOT EXISTS plugin_reviews (
|
|
review_id TEXT PRIMARY KEY,
|
|
plugin_id TEXT NOT NULL,
|
|
reviewer_user_id TEXT NOT NULL,
|
|
review_status TEXT NOT NULL CHECK (review_status IN ('pending', 'approved', 'rejected')),
|
|
notes_hash TEXT,
|
|
created_at INTEGER NOT NULL,
|
|
decided_at INTEGER,
|
|
FOREIGN KEY (plugin_id) REFERENCES plugin_registry (plugin_id)
|
|
);
|