68 lines
2.5 KiB
SQL
68 lines
2.5 KiB
SQL
CREATE TABLE IF NOT EXISTS "user" (
|
|
id UUID NOT NULL,
|
|
pseudo VARCHAR NOT NULL,
|
|
email VARCHAR NOT NULL,
|
|
password VARCHAR NOT NULL,
|
|
photo_id UUID,
|
|
CONSTRAINT user_pk PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS user_role (
|
|
user_id UUID NOT NULL,
|
|
role SMALLINT,
|
|
CONSTRAINT user_role_pk PRIMARY KEY (user_id, role),
|
|
CONSTRAINT user_role_fk_user_id FOREIGN KEY (user_id) REFERENCES "user" (id)
|
|
);
|
|
CREATE INDEX user_role_fk_user_id_idx ON user_role (user_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS refresh_token (
|
|
user_id UUID NOT NULL,
|
|
value UUID NOT NULL,
|
|
expiration_date TIMESTAMP NOT NULL,
|
|
CONSTRAINT refresh_token_pk PRIMARY KEY (user_id),
|
|
CONSTRAINT refresh_token_fk_user_id FOREIGN KEY (user_id) REFERENCES "user" (id)
|
|
);
|
|
CREATE INDEX refresh_token_fk_user_id_idx ON user_role (user_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS category (
|
|
id UUID NOT NULL,
|
|
name VARCHAR NOT NULL,
|
|
parent_category_id UUID,
|
|
CONSTRAINT category_pk PRIMARY KEY (id),
|
|
CONSTRAINT category_parent_category_id_fk FOREIGN KEY (parent_category_id) REFERENCES category (id)
|
|
);
|
|
CREATE INDEX category_parent_category_id_idx ON category (parent_category_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS picture (
|
|
id UUID NOT NULL,
|
|
publisher_id UUID NOT NULL,
|
|
published_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
CONSTRAINT picture_pk PRIMARY KEY (id),
|
|
CONSTRAINT picture_publisher_id_fk FOREIGN KEY (publisher_id) REFERENCES "user" (id)
|
|
);
|
|
CREATE INDEX picture_publisher_id_idx ON picture (publisher_id);
|
|
|
|
ALTER TABLE "user" ADD CONSTRAINT user_photo_id_fk FOREIGN KEY (photo_id) REFERENCES picture (id);
|
|
CREATE INDEX user_photo_id_idx ON "user" (photo_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS publication (
|
|
id UUID NOT NULL,
|
|
key VARCHAR(14) NOT NULL,
|
|
title VARCHAR NOT NULL,
|
|
text VARCHAR NOT NULL,
|
|
parsed_text VARCHAR,
|
|
description VARCHAR NOT NULL,
|
|
creation_date TIMESTAMP NOT NULL,
|
|
illustration_id UUID NOT NULL,
|
|
author_id UUID NOT NULL,
|
|
category_id UUID NOT NULL,
|
|
CONSTRAINT publication_pk PRIMARY KEY (id),
|
|
CONSTRAINT publication_picture_id_fk FOREIGN KEY (illustration_id) REFERENCES picture (id),
|
|
CONSTRAINT publication_author_id_fk FOREIGN KEY (author_id) REFERENCES "user" (id),
|
|
CONSTRAINT publication_category_id_fk FOREIGN KEY (category_id) REFERENCES category (id)
|
|
);
|
|
CREATE INDEX publication_picture_id_idx ON publication (illustration_id);
|
|
CREATE INDEX publication_author_id_idx ON publication (author_id);
|
|
CREATE INDEX publication_category_id_idx ON publication (category_id);
|
|
|