/schema.sql
CREATE TABLE users (
	user_id integer primary key auto_increment,
	joined datetime,
	username varchar(255) NOT NULL,
	email varchar(255)
);

CREATE TABLE channels (
	channel_id integer primary key auto_increment,
	updated datetime,
	name varchar(255) NOT NULL
);

CREATE TABLE posts (
	post_id integer primary key auto_increment,
	user_id integer NOT NULL,
	channel_id integer NOT NULL,
	ts datetime NOT NULL,
	replyto integer,
	file varchar(255),
	data text NOT NULL,
	CONSTRAINT FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE,
	CONSTRAINT FOREIGN KEY (channel_id) REFERENCES channels (channel_id) ON DELETE CASCADE,
	CONSTRAINT FOREIGN KEY (replyto) REFERENCES posts (post_id) ON DELETE CASCADE
);

CREATE TABLE threads (
	post_id integer primary key,
	updated datetime,
	CONSTRAINT FOREIGN KEY (post_id) REFERENCES posts (post_id) ON DELETE CASCADE
);

CREATE TABLE watch (
	watch_id integer primary key auto_increment,
	channel_id integer NOT NULL,
	thread integer,
	user_id integer NOT NULL,
	CONSTRAINT FOREIGN KEY (channel_id) REFERENCES channels (channel_id) ON DELETE CASCADE
);

CREATE TABLE notify (
	notify_id integer primary key auto_increment,
	user_id integer NOT NULL,
	message text NOT NULL,
	CONSTRAINT FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE
);