diff --git a/rave/src/scan.rs b/rave/src/scan.rs index 41b98f9..c4a5164 100644 --- a/rave/src/scan.rs +++ b/rave/src/scan.rs @@ -2,7 +2,8 @@ use audiotags::MimeType; use color_eyre::{Report, Result}; use entities::{ cover_art, genre, music_folder, - prelude::{CoverArt, Genre, MusicFolder}, + prelude::{CoverArt, Genre, MusicFolder, Track}, + track, }; use futures::StreamExt; use once_cell::sync::Lazy; @@ -132,6 +133,17 @@ async fn handle_entry( state: Arc>, ) -> Result<()> { let path = entry.path(); + + { + let query = Track::find().filter(track::Column::Path.eq(path.to_string_lossy())); + let res = query.one(tx).await; + + if let Ok(Some(_)) = res { + debug!("Skipping already scanned file {path:?}"); + return Ok(()); + } + } + let file_type = entry.file_type().await?; if !file_type.is_file() {