selene-core 0.3.1

selene-core is the backend for Selene, a local-first music player
Documentation
use crate::{
    database::{DatabaseEntry, DatabaseError},
    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();

        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)
    }
}