CREATE TABLE IF NOT EXISTS users (
  id       INTEGER PRIMARY KEY,
  created  TEXT DEFAULT (strftime('%Y-%m-%dT%H:%M', 'now', 'localtime')),
  username TEXT UNIQUE,
  signupid INTEGER,
  state    TEXT,
  admin    INTEGER DEFAULT FALSE,

  FOREIGN KEY (signupid) REFERENCES signups(signupid)
);

CREATE TABLE IF NOT EXISTS emails (
  id      INTEGER PRIMARY KEY,
  address TEXT UNIQUE,
  userid  INTEGER,

  FOREIGN KEY (userid) REFERENCES users(userid)
);

CREATE TABLE IF NOT EXISTS user_notes (
  noteid   INTEGER,
  userid INTEGER,

  PRIMARY KEY (noteid, userid),
  FOREIGN KEY (noteid) REFERENCES notes(noteid),
  FOREIGN KEY (userid) REFERENCES users(userid)
);

CREATE TABLE IF NOT EXISTS notes (
  id      INTEGER PRIMARY KEY,
  adminid INTEGER,
  text    TEXT,
  created TEXT DEFAULT (strftime('%Y-%m-%dT%H:%M', 'now', 'localtime')),

  FOREIGN KEY (adminid) REFERENCES users(adminid)
);

CREATE TABLE IF NOT EXISTS signup_notes (
  noteid   INTEGER,
  signupid INTEGER,

  PRIMARY KEY (noteid, signupid),
  FOREIGN KEY (noteid)   REFERENCES notes(noteid),
  FOREIGN KEY (signupid) REFERENCES signups(signupid)
);
