diff --git a/musicdb-client/src/gui_playback.rs b/musicdb-client/src/gui_playback.rs index 7a56f89..0e32ec2 100755 --- a/musicdb-client/src/gui_playback.rs +++ b/musicdb-client/src/gui_playback.rs @@ -122,9 +122,7 @@ impl GuiElemTrait for CurrentSong { let (name, subtext) = if let Some(song) = new_song { if let Some(song) = info.database.get_song(&song) { let sub = match ( - song.artist - .as_ref() - .and_then(|id| info.database.artists().get(id)), + info.database.artists().get(&song.artist), song.album .as_ref() .and_then(|id| info.database.albums().get(id)), diff --git a/musicdb-client/src/gui_queue.rs b/musicdb-client/src/gui_queue.rs index 2a59647..5de511f 100755 --- a/musicdb-client/src/gui_queue.rs +++ b/musicdb-client/src/gui_queue.rs @@ -398,7 +398,7 @@ impl QueueSong { GuiElem::new(Label::new( GuiElemCfg::at(Rectangle::from_tuples((sub_offset, 0.57), (1.0, 1.0))), match ( - song.artist.as_ref().and_then(|id| db.artists().get(id)), + db.artists().get(&song.artist), song.album.as_ref().and_then(|id| db.albums().get(id)), ) { (None, None) => String::new(), diff --git a/musicdb-client/src/main.rs b/musicdb-client/src/main.rs index 34d1aa2..2b6b1ae 100755 --- a/musicdb-client/src/main.rs +++ b/musicdb-client/src/main.rs @@ -192,7 +192,7 @@ impl<'a> Looper<'a> { location: self.read_line("The songs file is located, relative to the library root, at...").into(), title: self.read_line("The songs title is..."), album: self.read_line_ido("The song is part of the album with the id... (empty for None)"), - artist: self.read_line_ido("The song is made by the artist with the id... (empty for None)"), + artist: self.read_line_id("The song is made by the artist with the id..."), more_artists: accumulate(|| self.read_line_ido("The song is made with support by other artist, one of which has the id... (will ask repeatedly; leave empty once done)")), cover: self.read_line_ido("The song should use the cover with the id... (empty for None - will default to album or artist cover, if available)"), general: GeneralData::default(), @@ -223,8 +223,8 @@ impl<'a> Looper<'a> { song.album = self.read_line_ido(""); } "artist" => { - println!("prev: '{}'", song.artist.map_or(String::new(), |v| v.to_string())); - song.artist = self.read_line_ido(""); + println!("prev: '{}'", song.artist); + song.artist = self.read_line_id(""); } "location" => { println!("prev: '{:?}'", song.location); diff --git a/musicdb-lib/src/data/database.rs b/musicdb-lib/src/data/database.rs index 494f5ec..eac3704 100755 --- a/musicdb-lib/src/data/database.rs +++ b/musicdb-lib/src/data/database.rs @@ -80,7 +80,7 @@ impl Database { if let Some(Some(album)) = album.map(|v| self.albums.get_mut(&v)) { album.songs.push(id); } else { - if let Some(Some(artist)) = artist.map(|v| self.artists.get_mut(&v)) { + if let Some(artist) = self.artists.get_mut(&artist) { artist.singles.push(id); } } diff --git a/musicdb-lib/src/data/song.rs b/musicdb-lib/src/data/song.rs index e80346e..294a0d4 100755 --- a/musicdb-lib/src/data/song.rs +++ b/musicdb-lib/src/data/song.rs @@ -19,7 +19,7 @@ pub struct Song { pub location: DatabaseLocation, pub title: String, pub album: Option, - pub artist: Option, + pub artist: ArtistId, pub more_artists: Vec, pub cover: Option, pub general: GeneralData, @@ -33,7 +33,7 @@ impl Song { location: DatabaseLocation, title: String, album: Option, - artist: Option, + artist: ArtistId, more_artists: Vec, cover: Option, ) -> Self { @@ -165,11 +165,9 @@ impl Song { impl Display for Song { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "{}", self.title)?; - match (self.artist, self.album) { - (Some(artist), Some(album)) => write!(f, " (by {artist} on {album})")?, - (None, Some(album)) => write!(f, " (on {album})")?, - (Some(artist), None) => write!(f, " (by {artist})")?, - (None, None) => {} + match self.album { + Some(album) => write!(f, " (by {} on {album})", self.artist)?, + None => write!(f, " (by {})", self.artist)?, } Ok(()) } diff --git a/musicdb-server/src/main.rs b/musicdb-server/src/main.rs index 403de48..5785f8b 100755 --- a/musicdb-server/src/main.rs +++ b/musicdb-server/src/main.rs @@ -7,7 +7,7 @@ use std::{ thread, }; -use musicdb_lib::server::{run_server, Command}; +use musicdb_lib::server::run_server; use musicdb_lib::data::database::Database;