Files
panel/controller/internal/db/migrations/001_init.sql
T
dbledeez 4ccccc6fe2 panel v0.9.2 — public release
Self-hostable game server control panel: Go controller + agent, 26 game
modules, embedded web UI. One-line install via install.sh / install.ps1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 00:43:35 -07:00

40 lines
1.5 KiB
SQL

-- 001_init.sql — initial schema
--
-- agents: one row per Target agent the controller has ever seen. Updated
-- with each connection + heartbeat. Serves as audit trail — we
-- never delete rows, so an agent disappearing from the network
-- doesn't wipe its history.
-- instances: one row per declared game server. The controller, not the
-- agent, is the source of truth for "instance X exists". Status
-- is updated from InstanceStateUpdate messages streamed up from
-- the agent that owns the instance.
CREATE TABLE agents (
agent_id TEXT PRIMARY KEY,
version TEXT NOT NULL,
host_os TEXT NOT NULL,
host_arch TEXT NOT NULL,
hostname TEXT NOT NULL,
first_seen TIMESTAMPTZ NOT NULL DEFAULT NOW(),
last_seen TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE instances (
instance_id TEXT PRIMARY KEY,
agent_id TEXT NOT NULL,
module_id TEXT NOT NULL,
module_version TEXT,
run_mode TEXT NOT NULL DEFAULT 'docker',
data_path TEXT,
config_values JSONB NOT NULL DEFAULT '{}'::jsonb,
status TEXT NOT NULL DEFAULT 'stopped',
last_exit_code INTEGER,
detail TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_instances_agent ON instances(agent_id);
CREATE INDEX idx_instances_module ON instances(module_id);
CREATE INDEX idx_instances_status ON instances(status);