37 lines
1.3 KiB
SQL
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);
|