diff --git a/libmarlin/src/db/mod.rs b/libmarlin/src/db/mod.rs index 8e0b3dc..45b7454 100644 --- a/libmarlin/src/db/mod.rs +++ b/libmarlin/src/db/mod.rs @@ -188,7 +188,8 @@ pub fn ensure_tag_path(conn: &Connection, path: &str) -> Result { } pub fn file_id(conn: &Connection, path: &str) -> Result { - conn.query_row("SELECT id FROM files WHERE path = ?1", [path], |r| r.get(0)) + let path = to_db_path(path); + conn.query_row("SELECT id FROM files WHERE path = ?1", [path.clone()], |r| r.get(0)) .map_err(|_| anyhow::anyhow!("file not indexed: {}", path)) } diff --git a/libmarlin/src/db_tests.rs b/libmarlin/src/db_tests.rs index 44aea74..f907e10 100644 --- a/libmarlin/src/db_tests.rs +++ b/libmarlin/src/db_tests.rs @@ -193,6 +193,7 @@ fn backup_and_restore_cycle() { // backup let backup = db::backup(&db_path).unwrap(); + drop(live); // close connection on Windows // remove original std::fs::remove_file(&db_path).unwrap(); // restore diff --git a/libmarlin/src/watcher.rs b/libmarlin/src/watcher.rs index 8b7bd0e..aa9335f 100644 --- a/libmarlin/src/watcher.rs +++ b/libmarlin/src/watcher.rs @@ -13,7 +13,6 @@ use notify::{ event::{ModifyKind, RemoveKind, RenameMode}, Event, EventKind, RecommendedWatcher, RecursiveMode, Watcher as NotifyWatcherTrait, }; -#[cfg(not(windows))] use same_file::Handle; use std::collections::HashMap; use std::path::PathBuf; @@ -94,13 +93,12 @@ struct RemoveTracker { impl RemoveTracker { fn record(&mut self, path: &PathBuf) { - #[cfg(not(windows))] if let Ok(h) = Handle::from_path(path) { self.map.insert(h.ino(), (path.clone(), Instant::now())); return; } - // fall back to hashing path if inode not available or on Windows + // fall back to hashing path if handle could not be obtained use std::collections::hash_map::DefaultHasher; use std::hash::{Hash, Hasher}; let mut hasher = DefaultHasher::new(); @@ -110,7 +108,6 @@ impl RemoveTracker { } fn match_create(&mut self, path: &PathBuf, window: Duration) -> Option { - #[cfg(not(windows))] if let Ok(h) = Handle::from_path(path) { if let Some((old, ts)) = self.map.remove(&h.ino()) { if Instant::now().duration_since(ts) <= window { @@ -121,7 +118,7 @@ impl RemoveTracker { } } - // fall back to hashing path when handle not available or on Windows + // fall back to hashing path when handle not available use std::collections::hash_map::DefaultHasher; use std::hash::{Hash, Hasher}; let mut hasher = DefaultHasher::new();