diff --git a/manifest b/manifest index 247596ad4..c0b87a3d3 100644 --- a/manifest +++ b/manifest @@ -15,6 +15,8 @@ account_fields.sql signup.sql bootstrap_users_v2.sql drop_users_name.sql +recordings.sql +favorites.sql user_authorizations.sql music_session_all_params.sql as_musician.sql diff --git a/up/favorites.sql b/up/favorites.sql new file mode 100644 index 000000000..6cf4083f8 --- /dev/null +++ b/up/favorites.sql @@ -0,0 +1,9 @@ +CREATE TABLE users_favorites ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + user_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + recording_id VARCHAR(64) NOT NULL REFERENCES recordings(id) ON DELETE CASCADE, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +ALTER TABLE users_favorites ADD CONSTRAINT user_favorite_uniqkey UNIQUE (user_id, recording_id); diff --git a/up/recordings.sql b/up/recordings.sql new file mode 100644 index 000000000..f5776a073 --- /dev/null +++ b/up/recordings.sql @@ -0,0 +1,21 @@ +CREATE TABLE recordings ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + description VARCHAR(200) NOT NULL, + public BOOLEAN NOT NULL DEFAULT true, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE musicians_recordings ( + user_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + recording_id VARCHAR(64) NOT NULL REFERENCES recordings(id) ON DELETE CASCADE +); + +ALTER TABLE musicians_recordings ADD CONSTRAINT musician_recording_uniqkey UNIQUE (user_id, recording_id); + +CREATE TABLE bands_recordings ( + band_id VARCHAR(64) NOT NULL REFERENCES bands(id) ON DELETE CASCADE, + recording_id VARCHAR(64) NOT NULL REFERENCES recordings(id) ON DELETE CASCADE +); + +ALTER TABLE bands_recordings ADD CONSTRAINT band_recording_uniqkey UNIQUE (band_id, recording_id); \ No newline at end of file