CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name STRING UNIQUE NOT NULL ); -- for development only, replace with properly hashed passwords later CREATE TABLE challenges_plain_password ( user_id INTEGER PRIMARY KEY NOT NULL, password STRING NOT NULL ); CREATE TABLE rooms ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name STRING UNIQUE NOT NULL, topic STRING NOT NULL, message_count INTEGER NOT NULL DEFAULT 0 ); CREATE TABLE messages ( room_id INTEGER NOT NULL, id INTEGER NOT NULL, -- unique per room, sequential in one room content STRING NOT NULL, PRIMARY KEY (room_id, id) ); CREATE TABLE memberships ( user_id INTEGER NOT NULL, room_id INTEGER NOT NULL, status INTEGER NOT NULL, -- 0 for not-joined, 1 for joined, 2 for banned PRIMARY KEY (user_id, room_id) );