drop table if exists users;
drop table if exists threads;
drop table if exists messages;


create table users (
  user_id text,     -- string (uuid1)
  user_name text,   -- string
  auth_hash text,   -- string (sha256 hash)
  quip text,        -- string (possibly empty)
  bio text,         -- string (possibly empty)
  color int,        -- int (from 0 to 6)
  is_admin int,     -- bool
  created real      -- floating point unix timestamp (when this user registered)
);


create table threads (
  thread_id text,   -- uuid string
  author text,      -- string (uuid1, user.user_id)
  title text,       -- string
  last_mod real,    -- floating point unix timestamp (of last post or post edit)
  created real,     -- floating point unix timestamp (when thread was made)
  reply_count int,  -- integer (incremental, starting with 0)
  pinned int,       -- boolean
  last_author text  -- uuid string
);


create table messages (
  thread_id text,   -- string (uuid1 of parent thread)
  post_id int,      -- integer (incrementing from 1)
  author text,      -- string (uuid1, user.user_id)
  created real,     -- floating point unix timestamp (when reply was posted)
  edited int,       -- bool
  body text,        -- string
  send_raw int      -- bool (1/true == never apply formatting)
);