1use crate::error::Result;
7use rusqlite::Connection;
8pub use videre_core::library_stats::LibraryStats;
9
10pub fn library_stats(conn: &Connection) -> Result<LibraryStats> {
11 Ok(videre_core::library_stats::compute(conn)?)
12}
13
14#[cfg(test)]
15mod tests {
16 use super::*;
17
18 #[test]
19 fn library_stats_returns_totals_from_an_empty_db() {
20 let conn = Connection::open_in_memory().unwrap();
21 conn.execute_batch(
22 "CREATE TABLE file_hashes (
23 path TEXT PRIMARY KEY,
24 hash TEXT NOT NULL,
25 size_bytes INTEGER,
26 ext TEXT
27 );",
28 )
29 .unwrap();
30 videre_core::db::ensure_file_hashes_columns(&conn);
31
32 let stats = library_stats(&conn).unwrap();
33 assert_eq!(stats.total_files, 0);
34 assert_eq!(stats.total_size_bytes, 0);
35 assert_eq!(stats.faces_detected, 0); }
37}