use lunar_lib::database::{Database, DatabaseEntry, DatabaseError};
use crate::{
database::LibraryDb,
library::{album::Album, artist::UNKNOWN_ARTIST},
};
impl Album {
pub fn db_find_by_name(name: impl AsRef<str>) -> Result<Vec<Self>, DatabaseError>
where
Self: 'static,
{
let name = name.as_ref();
let mut items = Vec::new();
for album in Album::db_get_all()? {
if album.name == name {
items.push(album);
}
}
Ok(items)
}
#[must_use]
pub fn display(&self) -> String {
let main_artist = self.artist_group.main_artist(&LibraryDb::open().unwrap());
let artist_name = match main_artist {
Ok(Some(artist)) => artist.name().to_owned(),
Ok(None) => UNKNOWN_ARTIST.to_owned(),
Err(_) => "<failed to load artist".to_owned(),
};
format!("{name} by {artist_name}", name = self.name)
}
}