selene_core/library/track/
frontend_impls.rs1use std::path::Path;
2
3use lunar_lib::database::{DatabaseEntry, DatabaseError, DbHandle};
4
5use crate::{database::LibraryDb, library::track::Track};
6
7impl Track {
8 pub fn db_find_by_title(name: impl AsRef<str>) -> Result<Vec<Self>, DatabaseError> {
9 let name = name.as_ref();
10
11 let db = DbHandle::<LibraryDb>::open()?;
12 let mut tracks = Self::db_get_all(&db)?;
13 tracks.retain(|t| t.metadata.title.as_deref() == Some(name));
14
15 Ok(tracks)
16 }
17
18 pub fn db_find_by_path(path: impl AsRef<Path>) -> Result<Option<Self>, DatabaseError> {
19 let path = path.as_ref();
20
21 let db = DbHandle::<LibraryDb>::open()?;
22 let tracks = Self::db_get_all(&db)?;
23 let track = tracks.into_iter().find(|t| t.container.path() == path);
24
25 Ok(track)
26 }
27}