155 lines
4.1 KiB
SQL
155 lines
4.1 KiB
SQL
-- Source unique de creation des tables de la base booksync.
|
|
|
|
CREATE TABLE IF NOT EXISTS "AUTHORS" (
|
|
id VARCHAR(36) NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
first_name VARCHAR(255),
|
|
tasks_count INTEGER NOT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "JOBS" (
|
|
id VARCHAR(36) NOT NULL,
|
|
title VARCHAR(255) NOT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "KINDS" (
|
|
id VARCHAR(36) NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "PUBLISHERS" (
|
|
id VARCHAR(36) NOT NULL,
|
|
title VARCHAR(500) NOT NULL,
|
|
closed BOOLEAN NOT NULL,
|
|
editions_count INTEGER NOT NULL,
|
|
no_amazon BOOLEAN NOT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "SERIES_TYPES" (
|
|
id VARCHAR(36) NOT NULL,
|
|
title VARCHAR(255) NOT NULL,
|
|
to_display BOOLEAN,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "BOX_EDITIONS" (
|
|
id VARCHAR(36) NOT NULL,
|
|
title VARCHAR(500) NOT NULL,
|
|
publisher_id VARCHAR(36) NOT NULL,
|
|
boxes_count INTEGER NOT NULL,
|
|
adult_content BOOLEAN NOT NULL,
|
|
box_follow_editions_count INTEGER NOT NULL,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY(publisher_id) REFERENCES "PUBLISHERS" (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "SERIES" (
|
|
id VARCHAR(36) NOT NULL,
|
|
title VARCHAR(500) NOT NULL,
|
|
type_id VARCHAR(36),
|
|
adult_content BOOLEAN,
|
|
editions_count INTEGER,
|
|
tasks_count INTEGER,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY(type_id) REFERENCES "SERIES_TYPES" (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "BOXES" (
|
|
id VARCHAR(36) NOT NULL,
|
|
title VARCHAR(500) NOT NULL,
|
|
number INTEGER NOT NULL,
|
|
release_date DATE,
|
|
isbn VARCHAR(32),
|
|
asin VARCHAR(32),
|
|
commercial_stop BOOLEAN NOT NULL,
|
|
box_edition_id VARCHAR(36) NOT NULL,
|
|
box_possessions_count INTEGER NOT NULL,
|
|
image_url TEXT,
|
|
content TEXT,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY(box_edition_id) REFERENCES "BOX_EDITIONS" (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "EDITIONS" (
|
|
id VARCHAR(36) NOT NULL,
|
|
title VARCHAR(500),
|
|
series_id VARCHAR(36) NOT NULL,
|
|
publisher_id VARCHAR(36) NOT NULL,
|
|
parent_edition_id VARCHAR(36),
|
|
volumes_count INTEGER NOT NULL,
|
|
last_volume_number INTEGER,
|
|
commercial_stop BOOLEAN NOT NULL,
|
|
not_finished BOOLEAN NOT NULL,
|
|
follow_editions_count INTEGER NOT NULL,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY(series_id) REFERENCES "SERIES" (id),
|
|
FOREIGN KEY(publisher_id) REFERENCES "PUBLISHERS" (id),
|
|
FOREIGN KEY(parent_edition_id) REFERENCES "EDITIONS" (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "SERIES_KINDS" (
|
|
series_id VARCHAR(36) NOT NULL,
|
|
kind_id VARCHAR(36) NOT NULL,
|
|
PRIMARY KEY (series_id, kind_id),
|
|
FOREIGN KEY(series_id) REFERENCES "SERIES" (id) ON DELETE CASCADE,
|
|
FOREIGN KEY(kind_id) REFERENCES "KINDS" (id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "TASKS" (
|
|
id VARCHAR(36) NOT NULL,
|
|
series_id VARCHAR(36) NOT NULL,
|
|
author_id VARCHAR(36),
|
|
job_id VARCHAR(36),
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY(series_id) REFERENCES "SERIES" (id),
|
|
FOREIGN KEY(author_id) REFERENCES "AUTHORS" (id),
|
|
FOREIGN KEY(job_id) REFERENCES "JOBS" (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "VOLUMES" (
|
|
id VARCHAR(36) NOT NULL,
|
|
title VARCHAR(500),
|
|
number INTEGER NOT NULL,
|
|
release_date DATE,
|
|
isbn VARCHAR(32),
|
|
asin VARCHAR(32),
|
|
edition_id VARCHAR(36) NOT NULL,
|
|
possessions_count INTEGER NOT NULL,
|
|
not_sold BOOLEAN NOT NULL,
|
|
image_url TEXT,
|
|
nb_pages INTEGER,
|
|
content TEXT,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY(edition_id) REFERENCES "EDITIONS" (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "BOX_VOLUMES" (
|
|
id VARCHAR(36) NOT NULL,
|
|
box_id VARCHAR(36) NOT NULL,
|
|
volume_id VARCHAR(36) NOT NULL,
|
|
included BOOLEAN NOT NULL,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY(box_id) REFERENCES "BOXES" (id),
|
|
FOREIGN KEY(volume_id) REFERENCES "VOLUMES" (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "VOLUME_POSSESSION_HISTORY" (
|
|
id_volume VARCHAR(36) NOT NULL,
|
|
observed_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
possessions_count INTEGER NOT NULL,
|
|
PRIMARY KEY (id_volume, observed_at),
|
|
FOREIGN KEY(id_volume) REFERENCES "VOLUMES" (id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "BOX_POSSESSION_HISTORY" (
|
|
id_box VARCHAR(36) NOT NULL,
|
|
observed_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
box_possessions_count INTEGER NOT NULL,
|
|
PRIMARY KEY (id_box, observed_at),
|
|
FOREIGN KEY(id_box) REFERENCES "BOXES" (id) ON DELETE CASCADE
|
|
);
|