From 717f1c813be608741a42d45a457fde3ac4aea430 Mon Sep 17 00:00:00 2001 From: Jason Streifling Date: Tue, 2 Apr 2024 19:38:16 +0200 Subject: [PATCH] Add setup script for DB --- create_db.sql | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 create_db.sql diff --git a/create_db.sql b/create_db.sql new file mode 100644 index 0000000..23af5da --- /dev/null +++ b/create_db.sql @@ -0,0 +1,50 @@ +DROP TABLE IF EXISTS articles_tags; +DROP TABLE IF EXISTS tags; +DROP TABLE IF EXISTS articles; +DROP TABLE IF EXISTS issues; +DROP TABLE IF EXISTS users; + +CREATE TABLE users ( + id INT AUTO_INCREMENT, + username VARCHAR(15) NOT NULL UNIQUE, + password VARCHAR(60) NOT NULL, + first_name VARCHAR(50) NOT NULL, + last_name VARCHAR(50) NOT NULL, + role INT NOT NULL, + PRIMARY KEY(id) +); + +CREATE TABLE issues ( + id INT AUTO_INCREMENT, + published BOOL NOT NULL, + PRIMARY KEY(id) +); + +CREATE TABLE articles ( + id INT AUTO_INCREMENT, + title VARCHAR(255) NOT NULL, + created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + description TEXT NOT NULL, + content TEXT NOT NULL, + published BOOL NOT NULL, + rejected BOOL NOT NULL, + author_id INT NOT NULL, + issue_id INT NOT NULL, + PRIMARY KEY(id), + FOREIGN KEY(author_id) REFERENCES users(id), + FOREIGN KEY(issue_id) REFERENCES issues(id) +); + +CREATE TABLE tags ( + id INT AUTO_INCREMENT, + name VARCHAR(15) NOT NULL UNIQUE, + PRIMARY KEY(id) +); + +CREATE TABLE articles_tags ( + article_id INT, + tag_id INT, + PRIMARY KEY(article_id, tag_id), + FOREIGN KEY(article_id) REFERENCES articles(id), + FOREIGN KEY(tag_id) REFERENCES tags(id) +);