diff --git a/manifest b/manifest index 43830a9ac..b6acab26a 100644 --- a/manifest +++ b/manifest @@ -1,14 +1,12 @@ sessions.sql users.sql sessions_api_v1.sql -users_v1.sql p2p.sql collapse_participants.sql genre_session.sql invitations.sql -users_v2.sql instruments.sql -users_v3.sql -musicians_instruments.sql musician_access.sql tracks.sql +followers.sql +locations.sql \ No newline at end of file diff --git a/up/followers.sql b/up/followers.sql new file mode 100644 index 000000000..367201b8a --- /dev/null +++ b/up/followers.sql @@ -0,0 +1,19 @@ +CREATE TABLE users_followers ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + user_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + follower_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +ALTER TABLE users_followers ADD CONSTRAINT user_follower_uniqkey UNIQUE (user_id, follower_id); + +CREATE TABLE bands_followers ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + band_id VARCHAR(64) NOT NULL REFERENCES bands(id) ON DELETE CASCADE, + follower_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +ALTER TABLE bands_followers ADD CONSTRAINT band_follower_uniqkey UNIQUE (band_id, follower_id); \ No newline at end of file diff --git a/up/locations.sql b/up/locations.sql index cb69807a6..ac961480a 100644 --- a/up/locations.sql +++ b/up/locations.sql @@ -1,11 +1,7 @@ --- locations -CREATE TABLE musicians_instruments ( - id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), - musician_id VARCHAR(64) REFERENCES musicians(id) ON DELETE CASCADE, - instrument_id VARCHAR(64) REFERENCES instruments(id) ON DELETE CASCADE, - proficiency_level SMALLINT NOT NULL, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -); +ALTER TABLE users ADD COLUMN city VARCHAR(100) NOT NULL DEFAULT 'City'; +ALTER TABLE users ADD COLUMN state VARCHAR(2); +ALTER TABLE users ADD COLUMN country VARCHAR(100); -ALTER TABLE musicians_instruments ADD CONSTRAINT musician_instrument_uniqkey UNIQUE (musician_id, instrument_id); +ALTER TABLE bands ADD COLUMN city VARCHAR(100) NOT NULL DEFAULT 'City'; +ALTER TABLE bands ADD COLUMN state VARCHAR(2); +ALTER TABLE bands ADD COLUMN country VARCHAR(100); \ No newline at end of file diff --git a/up/musicians_instruments.sql b/up/musicians_instruments.sql deleted file mode 100644 index 37a6f6a24..000000000 --- a/up/musicians_instruments.sql +++ /dev/null @@ -1,3 +0,0 @@ -ALTER TABLE musicians_instruments ALTER COLUMN user_id SET NOT NULL; -ALTER TABLE musicians_instruments ALTER COLUMN instrument_id SET NOT NULL; -ALTER TABLE musicians_instruments ADD COLUMN priority SMALLINT NOT NULL DEFAULT 1; diff --git a/up/users.sql b/up/users.sql index a9dcb9a55..0af957a9c 100644 --- a/up/users.sql +++ b/up/users.sql @@ -17,11 +17,24 @@ CREATE TABLE friendships ( ALTER TABLE friendships ADD CONSTRAINT user_friend_uniqkey UNIQUE (user_id, friend_id); +-- friend requests +CREATE TABLE friend_requests ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE, + friend_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE, + accepted BOOLEAN, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +ALTER TABLE friend_requests ADD CONSTRAINT user_friend_request_uniqkey UNIQUE (user_id, friend_id); + -- bands CREATE TABLE bands ( id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), name VARCHAR(1024) NOT NULL, - -- add more fields later + website VARCHAR(4000) NULL, + biography VARCHAR(4000) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); @@ -37,33 +50,25 @@ CREATE TABLE genres ( -- band -> genre mapping CREATE TABLE bands_genres ( id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), - band_id VARCHAR(64) REFERENCES bands(id) ON DELETE CASCADE, - genre_id VARCHAR(64) REFERENCES genres(id) ON DELETE CASCADE, + band_id VARCHAR(64) NOT NULL REFERENCES bands(id) ON DELETE CASCADE, + genre_id VARCHAR(64) NOT NULL REFERENCES genres(id) ON DELETE CASCADE, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); ALTER TABLE bands_genres ADD CONSTRAINT band_genre_uniqkey UNIQUE (band_id, genre_id); --- musicians -CREATE TABLE musicians ( - id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -); - -- musician -> band mapping CREATE TABLE bands_musicians ( id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), - band_id VARCHAR(64) REFERENCES bands(id) ON DELETE CASCADE, - musician_id VARCHAR(64) REFERENCES musicians(id) ON DELETE CASCADE, - is_admin BOOLEAN NOT NULL DEFAULT false, + band_id VARCHAR(64) NOT NULL REFERENCES bands(id) ON DELETE CASCADE, + user_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + admin BOOLEAN NOT NULL DEFAULT false, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); -ALTER TABLE bands_musicians ADD CONSTRAINT band_musician_uniqkey UNIQUE (band_id, musician_id); +ALTER TABLE bands_musicians ADD CONSTRAINT band_musician_uniqkey UNIQUE (band_id, user_id); -- instruments CREATE TABLE instruments ( @@ -76,11 +81,15 @@ CREATE TABLE instruments ( -- musician -> instrument mapping CREATE TABLE musicians_instruments ( id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), - musician_id VARCHAR(64) REFERENCES musicians(id) ON DELETE CASCADE, - instrument_id VARCHAR(64) REFERENCES instruments(id) ON DELETE CASCADE, + user_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + instrument_id VARCHAR(64) NOT NULL REFERENCES instruments(id) ON DELETE CASCADE, proficiency_level SMALLINT NOT NULL, + priority SMALLINT NOT NULL DEFAULT 1, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); -ALTER TABLE musicians_instruments ADD CONSTRAINT musician_instrument_uniqkey UNIQUE (musician_id, instrument_id); +ALTER TABLE musicians_instruments ADD CONSTRAINT musician_instrument_uniqkey UNIQUE (user_id, instrument_id); + +-- add musician flag to users table +ALTER TABLE users ADD COLUMN musician BOOLEAN NOT NULL DEFAULT false; diff --git a/up/users_v1.sql b/up/users_v1.sql deleted file mode 100644 index e8c18c2bb..000000000 --- a/up/users_v1.sql +++ /dev/null @@ -1,11 +0,0 @@ --- friend requests -CREATE TABLE friend_requests ( - id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE, - friend_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE, - accepted BOOLEAN, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -); - -ALTER TABLE friend_requests ADD CONSTRAINT user_friend_request_uniqkey UNIQUE (user_id, friend_id); \ No newline at end of file diff --git a/up/users_v2.sql b/up/users_v2.sql deleted file mode 100644 index 805227976..000000000 --- a/up/users_v2.sql +++ /dev/null @@ -1,31 +0,0 @@ -DROP TABLE bands_musicians; -DROP TABLE musicians_instruments; -DROP TABLE musicians; - -ALTER TABLE users ADD COLUMN musician BOOLEAN NOT NULL DEFAULT false; -ALTER TABLE bands ADD COLUMN website VARCHAR(4000) NULL; -ALTER TABLE bands ADD COLUMN biography VARCHAR(4000) NOT NULL; - --- musician -> band mapping -CREATE TABLE bands_users ( - id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), - band_id VARCHAR(64) REFERENCES bands(id) ON DELETE CASCADE, - user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE, - is_admin BOOLEAN NOT NULL DEFAULT false, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -); - -ALTER TABLE bands_users ADD CONSTRAINT band_user_uniqkey UNIQUE (band_id, user_id); - --- musician -> instrument mapping -CREATE TABLE users_instruments ( - id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE, - instrument_id VARCHAR(64) REFERENCES instruments(id) ON DELETE CASCADE, - proficiency_level SMALLINT NOT NULL, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -); - -ALTER TABLE users_instruments ADD CONSTRAINT user_instrument_uniqkey UNIQUE (user_id, instrument_id); diff --git a/up/users_v3.sql b/up/users_v3.sql deleted file mode 100644 index b4f7d9e41..000000000 --- a/up/users_v3.sql +++ /dev/null @@ -1,4 +0,0 @@ -ALTER TABLE users_instruments RENAME TO musicians_instruments; -ALTER TABLE bands_users RENAME TO bands_musicians; - -ALTER TABLE bands_musicians rename column is_admin to admin; \ No newline at end of file