CREATE TABLE users (
    id uuid DEFAULT gen_random_uuid() PRIMARY KEY,

    username varchar(32) UNIQUE NOT NULL,
    -- Hashed + salted representation of the username
    password text NOT NULL,
    -- Wether the user is currently blocked
    blocked boolean NOT NULL DEFAULT false
);

CREATE TABLE refresh_tokens (
    -- This is more efficient than storing the text
    token bytea PRIMARY KEY,
    -- The user for whom the token was created
    user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    -- When the token expires
    expires_at timestamp NOT NULL,
    -- When the token was last used (is NULL until used)
    last_used_at timestamp
);
