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)
);
