[package] name = "lumotia-storage" version.workspace = true edition.workspace = true repository.workspace = true license.workspace = true description = "SQLite persistence, BM25 search, and file storage for Lumotia" [dependencies] lumotia-core = { path = "../core" } # SQLite with compile-time checked queries # default-features = false strips sqlx's `any`, `macros`, `migrate`, `json` — # none of which this crate uses (it calls sqlx::query() / query_scalar() # directly and runs its own migration machinery). Cuts ~40% of sqlx's # compile graph, most visibly on Windows MSVC where each proc-macro crate # (which `macros` pulls in) becomes a slow .dll link. sqlx = { version = "0.8", default-features = false, features = ["runtime-tokio", "sqlite"] } # Async runtime tokio = { version = "1", features = ["rt", "sync", "macros"] } # Serialisation (DailyCompletionCount exposed to frontend via Tauri commands) serde = { version = "1", features = ["derive"] } # Structured logging via `tracing` so storage events bridge into the # subscriber installed by src-tauri/src/lib.rs::install_subscriber and # land in both stderr and the rolling lumotia.log forensic stream. The # storage crate was on the `log` crate up to Phase B.8; without a # log→tracing bridge (e.g. tracing-log::LogTracer) those events # vanished even though the EnvFilter directive `lumotia_storage=info` # advertised them as visible. tracing = "0.1" # Structured error derivation for lumotia_storage::Error. thiserror = "1" # UUIDs for profile + profile_terms ids (v7 random). uuid = { version = "1", features = ["v4"] } [dev-dependencies] # Real-file tempdirs for integration tests that need an on-disk DB (the # in-memory `sqlite::memory:` connection in src/database.rs unit tests # doesn't cover the rename-then-reopen path the rebrand migration exercises). tempfile = "3" # `rt-multi-thread` is required for the `#[tokio::test(flavor = "multi_thread")]` # variants that drive blocking lumotia_core::paths migrations from async tests. tokio = { version = "1", features = ["rt", "rt-multi-thread", "sync", "macros"] }