CREATE TABLE roles ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL UNIQUE ); CREATE TABLE tags ( id INTEGER PRIMARY KEY AUTOINCREMENT, tag TEXT NOT NULL UNIQUE ); CREATE TABLE categories ( id INTEGER PRIMARY KEY AUTOINCREMENT, category TEXT NOT NULL UNIQUE, description TEXT ); CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, uname TEXT NOT NULL UNIQUE, passhash TEXT NOT NULL, email TEXT NOT NULL, role INTEGER REFERENCES roles(id) NOT NULL, display_name TEXT, blocked_until INTEGER ); CREATE TABLE series ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL UNIQUE, description TEXT ); CREATE TABLE articles ( id INTEGER PRIMARY KEY AUTOINCREMENT, node_id TEXT NOT NULL UNIQUE, title TEXT NOT NULL, series INTEGER REFERENCES series(id), series_pt INTEGER, subtitle TEXT, created_dt INTEGER NOT NULL, modified_dt INTEGER, version TEXT, teaser_len INTEGER, sticky INTEGER DEFAULT 0, sticky_until INTEGER, alias TEXT ); CREATE TABLE comments ( id INTEGER PRIMARY KEY AUTOINCREMENT, node_id TEXT NOT NULL UNIQUE, article INTEGER REFERENCES articles(id) NOT NULL, author INTEGER REFERENCES users(id) NOT NULL, created_dt INTEGER NOT NULL, text TEXT NOT NULL, parent INTEGER ); CREATE TABLE articles_x_authors ( id INTEGER PRIMARY KEY AUTOINCREMENT, article INTEGER REFERENCES articles(id), author INTEGER REFERENCES users(id) ); CREATE TABLE articles_x_tags ( id INTEGER PRIMARY KEY AUTOINCREMENT, article INTEGER REFERENCES articles(id) NOT NULL, tag INTEGER REFERENCES tags(id) NOT NULL ); CREATE TABLE articles_x_categories ( id INTEGER PRIMARY KEY AUTOINCREMENT, article INTEGER REFERENCES articles(id) NOT NULL, category INTEGER REFERENCES categories(id) NOT NULL ); CREATE TABLE sessions ( id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT UNIQUE NOT NULL, user INTEGER REFERENCES users(id), expires INTEGER NOT NULL ); CREATE TABLE bad_logins ( id INTEGER PRIMARY KEY AUTOINCREMENT, user INTEGER REFERENCES users(id) NOT NULL, time INTEGER NOT NULL );