Files
DoGaMa-serv/migrations/0006_wasm_modules.sql

30 lines
1.2 KiB
SQL

CREATE TABLE module_versions (
module_id TEXT NOT NULL,
version TEXT NOT NULL,
game_id TEXT NOT NULL,
abi TEXT NOT NULL,
manifest_json TEXT NOT NULL,
wasm_sha256 TEXT NOT NULL CHECK (length(wasm_sha256) = 64),
wasm_size_bytes INTEGER NOT NULL CHECK (wasm_size_bytes > 0),
source TEXT NOT NULL CHECK (source IN ('bundled', 'uploaded')),
installed_at TEXT NOT NULL,
PRIMARY KEY (module_id, version)
);
CREATE TABLE instance_module_bindings (
instance_id TEXT PRIMARY KEY REFERENCES instances(id) ON DELETE CASCADE,
module_id TEXT NOT NULL,
module_version TEXT NOT NULL,
port_id TEXT NOT NULL,
enabled INTEGER NOT NULL DEFAULT 0 CHECK (enabled IN (0, 1)),
configuration_json TEXT NOT NULL DEFAULT '{}',
secret_references_json TEXT NOT NULL DEFAULT '{}',
last_health TEXT NOT NULL DEFAULT 'unknown' CHECK (last_health IN ('ready', 'degraded', 'offline', 'unknown')),
last_error_code TEXT,
activated_at TEXT,
updated_at TEXT NOT NULL,
FOREIGN KEY (module_id, module_version) REFERENCES module_versions(module_id, version) ON DELETE RESTRICT
);
CREATE INDEX instance_module_health_idx ON instance_module_bindings(enabled, last_health);