Adapt DB layout to multiple authors and contributors
This commit is contained in:
		| @@ -5,50 +5,65 @@ DROP TABLE IF EXISTS issues; | |||||||
| DROP TABLE IF EXISTS users; | DROP TABLE IF EXISTS users; | ||||||
|  |  | ||||||
| CREATE TABLE users ( | CREATE TABLE users ( | ||||||
|     id                  INT             AUTO_INCREMENT, |     id INT AUTO_INCREMENT, | ||||||
|     username            VARCHAR(255)    NOT NULL UNIQUE, |     username VARCHAR(255) NOT NULL UNIQUE, | ||||||
|     password            VARCHAR(60)     NOT NULL, |     password VARCHAR(60) NOT NULL, | ||||||
|     first_name          VARCHAR(255)    NOT NULL, |     first_name VARCHAR(255) NOT NULL, | ||||||
|     last_name           VARCHAR(255)    NOT NULL, |     last_name VARCHAR(255) NOT NULL, | ||||||
|     email               VARCHAR(255)    NOT NULL, |     email VARCHAR(255) NOT NULL, | ||||||
|     profile_pic_link    VARCHAR(255), |     profile_pic_link VARCHAR(255), | ||||||
|     role                INT             NOT NULL, |     role INT NOT NULL, | ||||||
|     PRIMARY KEY (id) |     PRIMARY KEY (id) | ||||||
| ); | ); | ||||||
|  |  | ||||||
| CREATE TABLE issues ( | CREATE TABLE issues ( | ||||||
|     id          INT     AUTO_INCREMENT, |     id INT AUTO_INCREMENT, | ||||||
|     published   BOOL    NOT NULL, |     published BOOL NOT NULL, | ||||||
|     PRIMARY KEY (id) |     PRIMARY KEY (id) | ||||||
| ); | ); | ||||||
|  |  | ||||||
| CREATE TABLE articles ( | CREATE TABLE articles ( | ||||||
|     id              INT             AUTO_INCREMENT, |     id INT AUTO_INCREMENT, | ||||||
|     title           VARCHAR(255)    NOT NULL, |     title VARCHAR(255) NOT NULL, | ||||||
|     created         TIMESTAMP       DEFAULT CURRENT_TIMESTAMP, |     created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | ||||||
|     banner_link     VARCHAR(255), |     banner_link VARCHAR(255), | ||||||
|     summary         TEXT            NOT NULL, |     summary TEXT NOT NULL, | ||||||
|     published       BOOL            NOT NULL, |     published BOOL NOT NULL, | ||||||
|     rejected        BOOL            NOT NULL, |     rejected BOOL NOT NULL, | ||||||
|     author_id       INT             NOT NULL, |     issue_id INT NOT NULL, | ||||||
|     issue_id        INT             NOT NULL, |     edited_id INT, | ||||||
|     edited_id       INT, |     is_in_issue BOOL NOT NULL, | ||||||
|     is_in_issue     BOOL            NOT NULL, |     auto_generated BOOL NOT NULL, | ||||||
|     auto_generated  BOOL            NOT NULL, |  | ||||||
|     PRIMARY KEY (id), |     PRIMARY KEY (id), | ||||||
|     FOREIGN KEY (author_id) REFERENCES users (id), |     FOREIGN KEY (author_id) REFERENCES users (id), | ||||||
|     FOREIGN KEY (issue_id) REFERENCES issues (id) |     FOREIGN KEY (issue_id) REFERENCES issues (id) | ||||||
| ); | ); | ||||||
|  |  | ||||||
| CREATE TABLE tags ( | CREATE TABLE tags ( | ||||||
|     id      INT         AUTO_INCREMENT, |     id INT AUTO_INCREMENT, | ||||||
|     name    VARCHAR(50) NOT NULL UNIQUE, |     name VARCHAR(50) NOT NULL UNIQUE, | ||||||
|     PRIMARY KEY (id) |     PRIMARY KEY (id) | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  | CREATE TABLE articles_authors ( | ||||||
|  |     article_id INT, | ||||||
|  |     author_id INT, | ||||||
|  |     PRIMARY KEY (article_id, author_id), | ||||||
|  |     FOREIGN KEY (article_id) REFERENCES articles (id), | ||||||
|  |     FOREIGN KEY (author_id) REFERENCES users (id) | ||||||
|  | ); | ||||||
|  |  | ||||||
|  | CREATE TABLE articles_contributors ( | ||||||
|  |     article_id INT, | ||||||
|  |     contributor_id INT, | ||||||
|  |     PRIMARY KEY (article_id, contributor_id), | ||||||
|  |     FOREIGN KEY (article_id) REFERENCES articles (id), | ||||||
|  |     FOREIGN KEY (contributor_id) REFERENCES users (id) | ||||||
|  | ); | ||||||
|  |  | ||||||
| CREATE TABLE articles_tags ( | CREATE TABLE articles_tags ( | ||||||
|     article_id  INT, |     article_id INT, | ||||||
|     tag_id      INT, |     tag_id INT, | ||||||
|     PRIMARY KEY (article_id, tag_id), |     PRIMARY KEY (article_id, tag_id), | ||||||
|     FOREIGN KEY (article_id) REFERENCES articles (id), |     FOREIGN KEY (article_id) REFERENCES articles (id), | ||||||
|     FOREIGN KEY (tag_id) REFERENCES tags (id) |     FOREIGN KEY (tag_id) REFERENCES tags (id) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user