Files
RemLink/internal/database/migrations/0001_initial.sql
T
qsc20001102 142e5dc7d6
ci / Go checks (ubuntu-latest) (push) Has been cancelled
ci / Go checks (windows-latest) (push) Has been cancelled
初版功能完成
2026-08-29 13:12:17 +08:00

68 lines
2.1 KiB
SQL

CREATE TABLE settings (
key TEXT PRIMARY KEY,
value TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE TABLE nodes (
node_id TEXT PRIMARY KEY,
type TEXT NOT NULL CHECK (type IN ('engineer', 'site')),
name TEXT NOT NULL,
overlay_ip TEXT NOT NULL UNIQUE,
wg_public_key TEXT NOT NULL UNIQUE,
node_token_hash BLOB NOT NULL,
status TEXT NOT NULL DEFAULT 'OFFLINE',
version TEXT NOT NULL DEFAULT '',
os_version TEXT NOT NULL DEFAULT '',
last_seen TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE INDEX idx_nodes_type_status ON nodes(type, status);
CREATE TABLE sessions (
session_id TEXT PRIMARY KEY,
engineer_node_id TEXT NOT NULL REFERENCES nodes(node_id) ON DELETE CASCADE,
site_node_id TEXT NOT NULL REFERENCES nodes(node_id) ON DELETE CASCADE,
status TEXT NOT NULL,
created_at TEXT NOT NULL,
active_at TEXT,
closed_at TEXT,
error_code TEXT
);
CREATE INDEX idx_sessions_engineer_status ON sessions(engineer_node_id, status);
CREATE INDEX idx_sessions_site_status ON sessions(site_node_id, status);
CREATE TABLE session_cidrs (
session_id TEXT NOT NULL REFERENCES sessions(session_id) ON DELETE CASCADE,
cidr TEXT NOT NULL,
PRIMARY KEY (session_id, cidr)
);
CREATE TABLE session_stats (
session_id TEXT PRIMARY KEY REFERENCES sessions(session_id) ON DELETE CASCADE,
tx_bytes INTEGER NOT NULL DEFAULT 0 CHECK (tx_bytes >= 0),
rx_bytes INTEGER NOT NULL DEFAULT 0 CHECK (rx_bytes >= 0),
tx_packets INTEGER NOT NULL DEFAULT 0 CHECK (tx_packets >= 0),
rx_packets INTEGER NOT NULL DEFAULT 0 CHECK (rx_packets >= 0),
updated_at TEXT NOT NULL
);
CREATE TABLE event_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
time TEXT NOT NULL,
level TEXT NOT NULL,
module TEXT NOT NULL,
node_id TEXT,
session_id TEXT,
message TEXT NOT NULL,
fields_json TEXT NOT NULL DEFAULT '{}'
);
CREATE INDEX idx_event_logs_time ON event_logs(time DESC);
CREATE INDEX idx_event_logs_node ON event_logs(node_id, time DESC);
CREATE INDEX idx_event_logs_session ON event_logs(session_id, time DESC);