diff options
Diffstat (limited to '')
| -rw-r--r-- | Cargo.lock | 242 | ||||
| -rw-r--r-- | Cargo.toml | 6 | ||||
| -rw-r--r-- | src/db.rs | 32 | 
3 files changed, 276 insertions, 4 deletions
| @@ -3,6 +3,15 @@  version = 4  [[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]]  name = "android-tzdata"  version = "0.1.1"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -161,6 +170,27 @@ dependencies = [  ]  [[package]] +name = "env_filter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +dependencies = [ + "log", +] + +[[package]] +name = "env_logger" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "log", +] + +[[package]]  name = "fallible-iterator"  version = "0.3.0"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -180,7 +210,9 @@ dependencies = [   "clap",   "cron",   "rusqlite", + "test-log",   "thiserror", + "tracing",   "uuid",  ] @@ -260,6 +292,12 @@ dependencies = [  ]  [[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]]  name = "libc"  version = "0.2.155"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -282,6 +320,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"  [[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]]  name = "memchr"  version = "2.7.4"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -304,6 +351,16 @@ dependencies = [  ]  [[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]]  name = "num-traits"  version = "0.2.19"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -319,6 +376,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"  [[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]]  name = "pkg-config"  version = "0.3.32"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -349,6 +418,50 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"  [[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]]  name = "rusqlite"  version = "0.36.0"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -371,6 +484,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"  [[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]]  name = "smallvec"  version = "1.15.0"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -394,6 +516,28 @@ dependencies = [  ]  [[package]] +name = "test-log" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f46083d221181166e5b6f6b1e5f1d499f3a76888826e6cb1d057554157cd0f" +dependencies = [ + "env_logger", + "test-log-macros", + "tracing-subscriber", +] + +[[package]] +name = "test-log-macros" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "888d0c3c6db53c0fdab160d2ed5e12ba745383d3e85813f2ea0f2b1475ab553f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]]  name = "thiserror"  version = "2.0.12"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -414,6 +558,76 @@ dependencies = [  ]  [[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]]  name = "unicode-ident"  version = "1.0.12"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -437,6 +651,12 @@ dependencies = [  ]  [[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]]  name = "vcpkg"  version = "0.2.15"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -510,6 +730,28 @@ dependencies = [  ]  [[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]]  name = "windows-core"  version = "0.52.0"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -9,6 +9,10 @@ edition = "2021"  chrono = "0.4.38"  clap = "4.5.9"  cron = "0.12.1" -rusqlite = { version = "0.36.0", features = ["uuid", "chrono"] } +rusqlite = { version = "0.36.0", features = ["uuid", "chrono", "trace"] }  thiserror = "2.0.12" +tracing = "0.1.41"  uuid = { version = "1.17.0", features = ["v4"] } + +[dev-dependencies] +test-log = { version = "0.2.17", features = ["trace"] } @@ -1,7 +1,12 @@ -use std::{collections::HashSet, path::Path}; +use std::{collections::HashSet, ffi::c_int, path::Path};  use chrono::NaiveDateTime; -use rusqlite::{params, params_from_iter, Connection, ToSql}; +use rusqlite::{ +    params, params_from_iter, +    trace::{config_log, TraceEvent, TraceEventCodes}, +    Connection, ToSql, +}; +use tracing::{debug, info};  use uuid::Uuid;  use crate::{ @@ -12,6 +17,21 @@ use crate::{  struct Db(Connection); +fn log(int: c_int, log: &str) { +    info!("sqlite: {}", log); +} + +fn trace_fn(event: &str) { +    debug!("sqlite: {}", event); +    // match event { +    //     TraceEvent::Stmt(stmt_ref, _) => debug!("sqlite: {}", stmt_ref.sql()), +    //     TraceEvent::Profile(stmt_ref, duration) => {} +    //     TraceEvent::Row(stmt_ref) => debug!("sqlite: {}", stmt_ref.sql()), +    //     TraceEvent::Close(conn_ref) => {} +    //     _ => {} +    // } +} +  impl Db {      pub fn create_connect_and_migrate(          path: impl AsRef<Path>, @@ -41,7 +61,11 @@ impl Db {      }      pub fn create_connect_memory() -> std::result::Result<Self, DatabaseOpenError> { -        let db = Connection::open_in_memory()?; +        let mut db = Connection::open_in_memory()?; +        db.trace(Some(trace_fn)); +        // unsafe { +        //     config_log(Some(log))?; +        // }          db.execute_batch(include_str!("../migrations/1.sql"))?;          Ok(Self(db))      } @@ -239,6 +263,8 @@ impl ToSql for LogFilter {  mod tests {      use std::collections::HashSet; +    use test_log::test; +      use crate::task::{Category, Task};      use super::Db; | 
