diff --git a/manifest b/manifest index b874ea7c7..95ddb1c66 100644 --- a/manifest +++ b/manifest @@ -30,3 +30,7 @@ max_mind.sql recordings_genres.sql join_request.sql user_state_lengthen.sql +likes.sql +comments.sql +downloads.sql +plays.sql \ No newline at end of file diff --git a/up/comments.sql b/up/comments.sql new file mode 100644 index 000000000..28520ac57 --- /dev/null +++ b/up/comments.sql @@ -0,0 +1,19 @@ +-- recordings +CREATE TABLE recordings_comments( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + recording_id VARCHAR(64) NOT NULL REFERENCES recordings(id) ON DELETE CASCADE, + creator_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + comment VARCHAR(4000) NOT NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +-- sessions +CREATE TABLE music_sessions_comments ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + music_session_id VARCHAR(64) NOT NULL REFERENCES music_sessions(id) ON DELETE CASCADE, + creator_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + comment VARCHAR(4000) NOT NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); \ No newline at end of file diff --git a/up/downloads.sql b/up/downloads.sql new file mode 100644 index 000000000..049c0feb3 --- /dev/null +++ b/up/downloads.sql @@ -0,0 +1,8 @@ +-- downloads +CREATE TABLE recordings_downloads( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + recording_id VARCHAR(64) NOT NULL REFERENCES recordings(id) ON DELETE CASCADE, + downloader_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 +); \ No newline at end of file diff --git a/up/likes.sql b/up/likes.sql new file mode 100644 index 000000000..054fea454 --- /dev/null +++ b/up/likes.sql @@ -0,0 +1,43 @@ +-- musicians +CREATE TABLE users_likers ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + user_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + liker_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_likers ADD CONSTRAINT user_liker_uniqkey UNIQUE (user_id, liker_id); + +-- bands +CREATE TABLE bands_likers ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + band_id VARCHAR(64) NOT NULL REFERENCES bands(id) ON DELETE CASCADE, + liker_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_likers ADD CONSTRAINT band_liker_uniqkey UNIQUE (band_id, liker_id); + +-- recordings +CREATE TABLE recordings_likers ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + recording_id VARCHAR(64) NOT NULL REFERENCES recordings(id) ON DELETE CASCADE, + liker_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 recordings_likers ADD CONSTRAINT recording_liker_uniqkey UNIQUE (recording_id, liker_id); + +-- sessions +CREATE TABLE music_sessions_likers ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + music_session_id VARCHAR(64) NOT NULL REFERENCES music_sessions(id) ON DELETE CASCADE, + liker_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 music_sessions_likers ADD CONSTRAINT music_sessions_liker_uniqkey UNIQUE (music_session_id, liker_id); \ No newline at end of file diff --git a/up/plays.sql b/up/plays.sql new file mode 100644 index 000000000..52f91ef06 --- /dev/null +++ b/up/plays.sql @@ -0,0 +1,17 @@ +-- recordings +CREATE TABLE recordings_plays( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + recording_id VARCHAR(64) NOT NULL REFERENCES recordings(id) ON DELETE CASCADE, + player_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 +); + +-- sessions +CREATE TABLE sessions_plays ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + music_session_id VARCHAR(64) NOT NULL REFERENCES music_sessions(id) ON DELETE CASCADE, + player_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 +); \ No newline at end of file