mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-10 16:04:04 +00:00
30 lines
1.2 KiB
SQL
30 lines
1.2 KiB
SQL
-- Durable allocator registry. Agones remains the provider-facing lifecycle
|
|
-- authority; these rows are the control-plane's auditable claim projection.
|
|
CREATE TABLE game_servers (
|
|
server_id TEXT PRIMARY KEY,
|
|
region TEXT NOT NULL CHECK (region IN ('EU', 'NA')),
|
|
build TEXT NOT NULL,
|
|
protocol_version INTEGER NOT NULL CHECK (protocol_version > 0),
|
|
transport TEXT NOT NULL CHECK (transport IN ('enet', 'steam_sdr')),
|
|
state TEXT NOT NULL CHECK (state IN ('READY', 'ALLOCATED')),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE allocations (
|
|
allocation_id TEXT PRIMARY KEY,
|
|
match_id TEXT NOT NULL UNIQUE,
|
|
server_id TEXT NOT NULL REFERENCES game_servers(server_id),
|
|
region TEXT NOT NULL CHECK (region IN ('EU', 'NA')),
|
|
build TEXT NOT NULL,
|
|
protocol_version INTEGER NOT NULL CHECK (protocol_version > 0),
|
|
transport TEXT NOT NULL CHECK (transport IN ('enet', 'steam_sdr')),
|
|
request_digest BYTEA NOT NULL,
|
|
state TEXT NOT NULL CHECK (state = 'ALLOCATED'),
|
|
allocated_at TIMESTAMPTZ NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX game_servers_ready_compatibility
|
|
ON game_servers (region, build, protocol_version, transport, server_id)
|
|
WHERE state = 'READY';
|