CREATE TABLE public."user" (
	id         SERIAL      NOT NULL,
	username   VARCHAR(64) NOT NULL DEFAULT ''::character varying,
	"password" VARCHAR(64) NOT NULL DEFAULT ''::character varying,
	last_login TIMESTAMP   NOT NULL DEFAULT now(),
	CONSTRAINT newtable_pk PRIMARY KEY (id)
);

CREATE TABLE public."session" (
	uuid    UUID      NOT NULL,
	user_id INT4          NULL,
	created TIMESTAMP NOT NULL DEFAULT now(),
	CONSTRAINT session_pk PRIMARY KEY (uuid),
	CONSTRAINT user_session_fk FOREIGN KEY (user_id) REFERENCES public."user"(id) ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE TABLE public.node (
	id        SERIAL       NOT NULL,
	user_id   INT4         NOT NULL,
	parent_id INT4         NULL,
	"name"    VARCHAR(256) NOT NULL DEFAULT '',
	"content" TEXT         NOT NULL DEFAULT '',
	CONSTRAINT name_length CHECK (LENGTH(TRIM(name)) > 0),
	CONSTRAINT node_pk PRIMARY KEY (id),
	CONSTRAINT user_fk FOREIGN KEY (user_id) REFERENCES public."user"(id) ON DELETE RESTRICT ON UPDATE RESTRICT,
	CONSTRAINT node_fk FOREIGN KEY (parent_id) REFERENCES public.node(id) ON DELETE RESTRICT ON UPDATE RESTRICT
);

