Create albums table

This commit is contained in:
Ethan Girouard 2024-02-08 18:38:18 -05:00
parent 0924c954b8
commit bf99dac25c
Signed by: eta357
GPG Key ID: 7BCDC36DFD11C146
3 changed files with 35 additions and 0 deletions

View File

@ -0,0 +1,2 @@
DROP TABLE album_artists;
DROP TABLE albums;

View File

@ -0,0 +1,13 @@
CREATE TABLE albums (
id SERIAL PRIMARY KEY UNIQUE NOT NULL,
title VARCHAR NOT NULL,
release_date DATE
);
-- A table to store artists for each album
-- Needed because an album can have multiple artists, but in Postgres we can't store an array of foreign keys
CREATE TABLE album_artists (
album_id INTEGER REFERENCES albums(id) ON DELETE CASCADE NOT NULL,
artist_id INTEGER REFERENCES artists(id) ON DELETE CASCADE NULL,
PRIMARY KEY (album_id, artist_id)
);

View File

@ -1,5 +1,20 @@
// @generated automatically by Diesel CLI.
diesel::table! {
album_artists (album_id, artist_id) {
album_id -> Int4,
artist_id -> Int4,
}
}
diesel::table! {
albums (id) {
id -> Int4,
title -> Varchar,
release_date -> Nullable<Date>,
}
}
diesel::table! {
artists (id) {
id -> Int4,
@ -17,7 +32,12 @@ diesel::table! {
}
}
diesel::joinable!(album_artists -> albums (album_id));
diesel::joinable!(album_artists -> artists (artist_id));
diesel::allow_tables_to_appear_in_same_query!(
album_artists,
albums,
artists,
users,
);