diff --git a/src/index.rs b/src/index.rs index 1bd70e3..420c3a6 100644 --- a/src/index.rs +++ b/src/index.rs @@ -524,12 +524,18 @@ pub fn flatten(db: &T, virtual_path: &Path) -> Result> use self::songs::dsl::*; let vfs = db.get_vfs()?; let connection = db.get_connection(); - let real_path = vfs.virtual_to_real(virtual_path)?; - let like_path = real_path.as_path().to_string_lossy().into_owned() + "%"; - let real_songs: Vec = songs - .filter(path.like(&like_path)) - .order(path) - .load(connection.deref())?; + + let real_songs: Vec = if virtual_path.parent() != None { + let real_path = vfs.virtual_to_real(virtual_path)?; + let like_path = real_path.as_path().to_string_lossy().into_owned() + "%"; + songs + .filter(path.like(&like_path)) + .order(path) + .load(connection.deref())? + } else { + songs.order(path).load(connection.deref())? + }; + let virtual_songs = real_songs .into_iter() .filter_map(|s| virtualize_song(&vfs, s));