Warning: Due to various recent migrations, viewing non-HEAD refs may be broken.
/schema.sql (raw)
CREATE TABLE User (
id INTEGER PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
name TEXT,
email TEXT,
password_hash TEXT,
admin INTEGER NOT NULL DEFAULT 0
);
CREATE TABLE Client (
id INTEGER PRIMARY KEY,
client_id TEXT NOT NULL UNIQUE,
client_secret_hash BLOB,
owner INTEGER REFERENCES User(id) ON DELETE CASCADE,
redirect_uris TEXT,
client_name TEXT,
client_uri TEXT,
pkce_requirement TEXT
);
CREATE TABLE AccessToken (
id INTEGER PRIMARY KEY,
hash BLOB NOT NULL UNIQUE,
user INTEGER NOT NULL REFERENCES User(id) ON DELETE CASCADE,
client INTEGER REFERENCES Client(id) ON DELETE CASCADE,
scope TEXT,
issued_at datetime NOT NULL,
expires_at datetime NOT NULL,
auth_time datetime,
refresh_hash BLOB UNIQUE,
refresh_expires_at datetime
);
CREATE TABLE AuthCode (
id INTEGER PRIMARY KEY,
hash BLOB NOT NULL UNIQUE,
created_at datetime NOT NULL,
user INTEGER NOT NULL REFERENCES User(id) ON DELETE CASCADE,
client INTEGER NOT NULL REFERENCES Client(id) ON DELETE CASCADE,
redirect_uri TEXT,
scope TEXT,
nonce TEXT,
code_challenge TEXT,
code_challenge_method TEXT
);
CREATE TABLE SigningKey (
id INTEGER PRIMARY KEY,
kid TEXT NOT NULL UNIQUE,
algorithm TEXT NOT NULL,
private_key BLOB NOT NULL,
created_at datetime NOT NULL
);
CREATE INDEX signing_key_created_at ON SigningKey(created_at);