CREATE TABLE mod_remove_post ( id serial PRIMARY KEY, mod_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, post_id int REFERENCES post ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, reason text, removed boolean DEFAULT TRUE, when_ timestamp NOT NULL DEFAULT now() ); CREATE TABLE mod_lock_post ( id serial PRIMARY KEY, mod_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, post_id int REFERENCES post ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, locked boolean DEFAULT TRUE, when_ timestamp NOT NULL DEFAULT now() ); CREATE TABLE mod_remove_comment ( id serial PRIMARY KEY, mod_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, comment_id int REFERENCES COMMENT ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, reason text, removed boolean DEFAULT TRUE, when_ timestamp NOT NULL DEFAULT now() ); CREATE TABLE mod_remove_community ( id serial PRIMARY KEY, mod_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, community_id int REFERENCES community ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, reason text, removed boolean DEFAULT TRUE, expires timestamp, when_ timestamp NOT NULL DEFAULT now() ); -- TODO make sure you can't ban other mods CREATE TABLE mod_ban_from_community ( id serial PRIMARY KEY, mod_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, other_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, community_id int REFERENCES community ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, reason text, banned boolean DEFAULT TRUE, expires timestamp, when_ timestamp NOT NULL DEFAULT now() ); CREATE TABLE mod_ban ( id serial PRIMARY KEY, mod_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, other_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, reason text, banned boolean DEFAULT TRUE, expires timestamp, when_ timestamp NOT NULL DEFAULT now() ); CREATE TABLE mod_add_community ( id serial PRIMARY KEY, mod_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, other_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, community_id int REFERENCES community ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, removed boolean DEFAULT FALSE, when_ timestamp NOT NULL DEFAULT now() ); -- When removed is false that means kicked CREATE TABLE mod_add ( id serial PRIMARY KEY, mod_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, other_user_id int REFERENCES user_ ON UPDATE CASCADE ON DELETE CASCADE NOT NULL, removed boolean DEFAULT FALSE, when_ timestamp NOT NULL DEFAULT now() );