diff --git a/cli-bin/docs/cli_cheatsheet.md b/cli-bin/docs/cli_cheatsheet.md index c259009..402fe7f 100644 --- a/cli-bin/docs/cli_cheatsheet.md +++ b/cli-bin/docs/cli_cheatsheet.md @@ -22,6 +22,3 @@ | `event add` | — | | `event timeline` | — | | `backup run` | --dir, --prune, --verify, --file | -| `watch start` | --debounce-ms | -| `watch status` | — | -| `watch stop` | — | diff --git a/libmarlin/src/db/mod.rs b/libmarlin/src/db/mod.rs index 8e0b3dc..eae911c 100644 --- a/libmarlin/src/db/mod.rs +++ b/libmarlin/src/db/mod.rs @@ -188,8 +188,13 @@ 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)) - .map_err(|_| anyhow::anyhow!("file not indexed: {}", path)) + 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)) } /* ─── attributes ──────────────────────────────────────────────────── */ diff --git a/libmarlin/src/db_tests.rs b/libmarlin/src/db_tests.rs index 44aea74..f84d6bc 100644 --- a/libmarlin/src/db_tests.rs +++ b/libmarlin/src/db_tests.rs @@ -193,7 +193,8 @@ fn backup_and_restore_cycle() { // backup let backup = db::backup(&db_path).unwrap(); - // remove original + drop(live); // close connection on Windows + // remove original std::fs::remove_file(&db_path).unwrap(); // restore db::restore(&backup, &db_path).unwrap(); 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();