diff --git a/migrations/2024-05-10-195644_create_likes_dislikes_table/down.sql b/migrations/2024-05-10-195644_create_likes_dislikes_table/down.sql new file mode 100644 index 0000000..c341129 --- /dev/null +++ b/migrations/2024-05-10-195644_create_likes_dislikes_table/down.sql @@ -0,0 +1,2 @@ +DROP TABLE song_likes; +DROP TABLE song_dislikes; diff --git a/migrations/2024-05-10-195644_create_likes_dislikes_table/up.sql b/migrations/2024-05-10-195644_create_likes_dislikes_table/up.sql new file mode 100644 index 0000000..aa8ed05 --- /dev/null +++ b/migrations/2024-05-10-195644_create_likes_dislikes_table/up.sql @@ -0,0 +1,11 @@ +CREATE TABLE song_likes ( + song_id INTEGER REFERENCES songs(id) ON DELETE CASCADE NOT NULL, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE NOT NULL, + PRIMARY KEY (song_id, user_id) +); + +CREATE TABLE song_dislikes ( + song_id INTEGER REFERENCES songs(id) ON DELETE CASCADE NOT NULL, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE NOT NULL, + PRIMARY KEY (song_id, user_id) +); diff --git a/src/schema.rs b/src/schema.rs index b98d736..fc9f7c9 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -29,6 +29,20 @@ diesel::table! { } } +diesel::table! { + song_dislikes (song_id, user_id) { + song_id -> Int4, + user_id -> Int4, + } +} + +diesel::table! { + song_likes (song_id, user_id) { + song_id -> Int4, + user_id -> Int4, + } +} + diesel::table! { songs (id) { id -> Int4, @@ -56,6 +70,10 @@ diesel::joinable!(album_artists -> albums (album_id)); diesel::joinable!(album_artists -> artists (artist_id)); diesel::joinable!(song_artists -> artists (artist_id)); diesel::joinable!(song_artists -> songs (song_id)); +diesel::joinable!(song_dislikes -> songs (song_id)); +diesel::joinable!(song_dislikes -> users (user_id)); +diesel::joinable!(song_likes -> songs (song_id)); +diesel::joinable!(song_likes -> users (user_id)); diesel::joinable!(songs -> albums (album_id)); diesel::allow_tables_to_appear_in_same_query!( @@ -63,6 +81,8 @@ diesel::allow_tables_to_appear_in_same_query!( albums, artists, song_artists, + song_dislikes, + song_likes, songs, users, );