Files
RustProxy/migrations/0002_admin.sql
T
2026-10-03 00:27:09 +01:00

37 lines
1.3 KiB
SQL

-- Additive migration from 0.0.1. The configuration table is never cleared.
CREATE TABLE IF NOT EXISTS configuration (
id INTEGER PRIMARY KEY CHECK (id = 1),
revision INTEGER NOT NULL CHECK (revision >= 0),
document TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS administrator (
id INTEGER PRIMARY KEY CHECK (id = 1),
username TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL,
generation INTEGER NOT NULL DEFAULT 1 CHECK (generation > 0),
created_at INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS admin_sessions (
token_hash TEXT PRIMARY KEY CHECK (length(token_hash) = 64),
csrf_token TEXT NOT NULL CHECK (length(csrf_token) = 64),
generation INTEGER NOT NULL,
created_at INTEGER NOT NULL,
last_seen INTEGER NOT NULL,
expires_at INTEGER NOT NULL,
kind TEXT NOT NULL CHECK (kind IN ('browser', 'cli'))
);
CREATE INDEX IF NOT EXISTS admin_sessions_expiry ON admin_sessions(expires_at);
CREATE TABLE IF NOT EXISTS admin_audit (
id INTEGER PRIMARY KEY AUTOINCREMENT,
time INTEGER NOT NULL,
actor TEXT NOT NULL,
action TEXT NOT NULL,
detail TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS auth_throttle (
id INTEGER PRIMARY KEY CHECK (id = 1),
window_start INTEGER NOT NULL DEFAULT 0,
attempts INTEGER NOT NULL DEFAULT 0
);
INSERT OR IGNORE INTO auth_throttle(id) VALUES(1);