Preserve deleted server history
Retain historical server identities, results, and evidence after deletion. Mark archived entries as Deleted and prevent old work from targeting servers that reuse the same name. Fixes #16.
This commit is contained in:
@@ -11,6 +11,7 @@ PRAGMA foreign_keys = ON;
|
||||
CREATE TABLE IF NOT EXISTS leaderboard_matches (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
server TEXT NOT NULL,
|
||||
server_deleted_at TEXT,
|
||||
game TEXT NOT NULL,
|
||||
map TEXT NOT NULL,
|
||||
map_key TEXT NOT NULL,
|
||||
@@ -181,7 +182,8 @@ CREATE INDEX IF NOT EXISTS idx_betas_script ON betas(script_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS beta_servers (
|
||||
beta_id INTEGER NOT NULL REFERENCES betas(id) ON DELETE CASCADE,
|
||||
server TEXT NOT NULL REFERENCES servers(name),
|
||||
server TEXT NOT NULL,
|
||||
server_deleted_at TEXT,
|
||||
had_original INTEGER NOT NULL, -- deprecated; see beta_server_scripts
|
||||
prior_version_id INTEGER REFERENCES script_versions(id), -- deprecated; see beta_server_scripts
|
||||
stage TEXT NOT NULL, -- 'deploying'|'awaiting-empty'|'restarting'|'awaiting-health'|'awaiting-match'|'ready'|'failed'
|
||||
@@ -206,7 +208,7 @@ CREATE TABLE IF NOT EXISTS beta_test_plans (
|
||||
CREATE TABLE IF NOT EXISTS beta_test_runs (
|
||||
id TEXT PRIMARY KEY,
|
||||
beta_id INTEGER NOT NULL REFERENCES betas(id) ON DELETE CASCADE,
|
||||
server TEXT NOT NULL REFERENCES servers(name),
|
||||
server TEXT NOT NULL,
|
||||
phase INTEGER NOT NULL DEFAULT 0,
|
||||
created_at TEXT NOT NULL,
|
||||
observing_at TEXT,
|
||||
@@ -261,7 +263,7 @@ CREATE INDEX IF NOT EXISTS idx_beta_scripts_script ON beta_scripts(script_id);
|
||||
-- lives in beta_file_snapshots.
|
||||
CREATE TABLE IF NOT EXISTS beta_server_scripts (
|
||||
beta_id INTEGER NOT NULL REFERENCES betas(id) ON DELETE CASCADE,
|
||||
server TEXT NOT NULL REFERENCES servers(name),
|
||||
server TEXT NOT NULL,
|
||||
script_id INTEGER NOT NULL REFERENCES scripts(id) ON DELETE CASCADE,
|
||||
had_original INTEGER NOT NULL,
|
||||
prior_version_id INTEGER REFERENCES script_versions(id),
|
||||
@@ -302,6 +304,7 @@ CREATE INDEX IF NOT EXISTS idx_deployments_started ON deployments(started_at DES
|
||||
CREATE TABLE IF NOT EXISTS deployment_servers (
|
||||
deployment_id TEXT NOT NULL REFERENCES deployments(id) ON DELETE CASCADE,
|
||||
server TEXT NOT NULL, -- Campaign observation survives a rebuild's registry gap.
|
||||
server_deleted_at TEXT,
|
||||
files_changed INTEGER NOT NULL,
|
||||
restart_state TEXT NOT NULL, -- pending | done | failed | manual | held
|
||||
players INTEGER,
|
||||
@@ -373,6 +376,7 @@ CREATE TABLE IF NOT EXISTS plutonium_versions (
|
||||
CREATE TABLE IF NOT EXISTS maintenance_jobs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
server TEXT NOT NULL,
|
||||
server_deleted_at TEXT,
|
||||
state TEXT NOT NULL DEFAULT 'queued',
|
||||
target_revision INTEGER,
|
||||
requested_at TEXT NOT NULL,
|
||||
@@ -411,6 +415,7 @@ CREATE INDEX IF NOT EXISTS idx_telemetry_requests_received ON telemetry_requests
|
||||
CREATE TABLE IF NOT EXISTS server_deployments (
|
||||
id TEXT PRIMARY KEY,
|
||||
server TEXT NOT NULL,
|
||||
server_deleted_at TEXT,
|
||||
action TEXT NOT NULL CHECK (action IN ('create', 'start', 'restart', 'rebuild', 'stop', 'destroy')),
|
||||
state TEXT NOT NULL,
|
||||
stage TEXT NOT NULL,
|
||||
@@ -486,7 +491,8 @@ CREATE TABLE IF NOT EXISTS server_launch_collections (
|
||||
name TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
mode TEXT NOT NULL DEFAULT 'fill',
|
||||
retained_servers TEXT NOT NULL DEFAULT '[]'
|
||||
retained_servers TEXT NOT NULL DEFAULT '[]',
|
||||
retained_server_deletions TEXT NOT NULL DEFAULT '{}'
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS server_collection_members (
|
||||
@@ -629,6 +635,7 @@ CREATE TABLE IF NOT EXISTS metric_samples (
|
||||
CREATE TABLE IF NOT EXISTS watchdog_incidents (
|
||||
id TEXT PRIMARY KEY,
|
||||
server TEXT NOT NULL,
|
||||
server_deleted_at TEXT,
|
||||
kind TEXT NOT NULL CHECK (kind IN ('health','drift')),
|
||||
state TEXT NOT NULL CHECK (state IN ('open','recovering','attention','resolved','dismissed')),
|
||||
summary TEXT NOT NULL,
|
||||
|
||||
Reference in New Issue
Block a user