CREATE TYPE post_phase AS ENUM('pending', 'rejected', 'admin_rejected','ok', 'deleted');

CREATE TABLE posts (
	id serial PRIMARY KEY,
	content varchar(500) not null,
	signing varchar(20),
	hash char(64) UNIQUE NOT NULL,
	post_at timestamp with time zone DEFAULT now(),
	heart integer NOT NULL DEFAULT 0,
	phase post_phase NOT NULL DEFAULT 'pending',
	igid varchar(22)
);

CREATE TABLE comment (
	id serial PRIMARY KEY,
	post_id integer not null REFERENCES posts (id),
	content varchar(200) not null,
	signing varchar(20),
	hash char(64) UNIQUE NOT NULL,
	post_at timestamp with time zone DEFAULT now(),
	heart integer NOT NULL DEFAULT 0
);

CREATE TABLE media (
	url varchar(59) NOT NULL UNIQUE,
	post_id integer REFERENCES posts (id),
	comment_id integer REFERENCES comment (id),
	visible boolean DEFAULT false,
	CONSTRAINT uni_id CHECK ((post_id IS NULL) <> (comment_id IS NULL))
);

CREATE TABLE admin (
	username varchar(20) NOT NULL UNIQUE PRIMARY KEY,
	password char(45) NOT NULL,
	totp char(33) NOT NULL,
	super bool NOT NULL DEFAULT false
);
