Skip to content

Commit

Permalink
Merge pull request pedroavpereira#3 from pedroavpereira/Initial-db-setup
Browse files Browse the repository at this point in the history
Initial db setup
  • Loading branch information
pedroavpereira authored Aug 27, 2024
2 parents aa3251a + 6722f59 commit 454a169
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions db/setup.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS users_reviews;
DROP TABLE IF EXISTS books;
DROP TABLE IF EXISTS messages;
DROP TABLE IF EXISTS chat_rooms;
DROP TABLE IF EXISTS swaps;
DROP TABLE IF EXISTS book_collections;

CREATE TABLE users(
user_id INT GENERATED ALWAYS AS IDENTITY,
email VARCHAR(100) UNIQUE NOT NULL,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
password VARCHAR(100) UNIQUE NOT NULL,
lat FLOAT NOT NULL,
lng FLOAT NOT NULL,
PRIMARY KEY(user_id)
);

CREATE TABLE users_reviews(
review_id INT GENERATED ALWAYS AS IDENTITY,
rating INT NOT NULL,
message TEXT,
user_id INT,
submitted_by INT NOT NULL,
PRIMARY KEY(review_id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);

CREATE TABLE books(
book_id INT GENERATED ALWAYS AS IDENTITY,
title TEXT,
author TEXT[],
categories TEXT[],
lang VARCHAR(30),
isbn INT NOT NULL,
image TEXT,
PRIMARY KEY(book_id)
);

CREATE TABLE messages(
message_id INT GENERATED ALWAYS AS IDENTITY,
room_id INT,
user_sent INT,
message TEXT,
sent_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(message_id),
FOREIGN KEY (room_id) REFERENCES chat_rooms(room_id),
FOREIGN KEY (user_sent) REFERENCES users(user_id)

);

CREATE TABLE chat_rooms(
room_id INT GENERATED ALWAYS AS IDENTITY,
user_1 INT,
user_2 INT,
swap_id INT,
PRIMARY KEY(room_id),
FOREIGN KEY (swap_id) REFERENCES swaps(swap_id),
FOREIGN KEY (user_1) REFERENCES users(user_id),
FOREIGN KEY (user_2) REFERENCES users(user_id)
);

CREATE TABLE swaps(
swap_id INT GENERATED ALWAYS AS IDENTITY,
user_requesting INT,
collection_requested INT,
user_offered INT,
collection_offered INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status VARCHAR(50),
completed BOOLEAN,
PRIMARY KEY(swap_id),
FOREIGN KEY (user_requesting) REFERENCES users(user_id),
FOREIGN KEY (collection_requested) REFERENCES book_collections(collection_id),
FOREIGN KEY (user_offered) REFERENCES users(user_id),
FOREIGN KEY (collection_offered) REFERENCES book_collections(collection_id)
);


CREATE TABLE book_collections(
collection_id INT GENERATED ALWAYS AS IDENTITY,
book_id INT,
user_id INT,
condition TEXT,
delivery_preference TEXT[],
PRIMARY KEY(collection_id),
FOREIGN KEY (book_id) REFERENCES books(book_id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);

0 comments on commit 454a169

Please sign in to comment.