The store's layout names live in the core: local::DB_FILE, BLOBS_DIR

"inkwell.db" and "blobs" were spelled out in the ffi and the desktop (whose copy
of DB_FILE sat in the crossover shim). The layout is the core's, the same on
every client, so the names are now core constants and both clients read them.

DRY pass #2, batch 1, F4 (#5372).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 14:17:26 -04:00
co-authored by Claude Opus 5.5
parent 1f2ddd70d3
commit ef839ba0cd
4 changed files with 12 additions and 5 deletions
+2 -2
View File
@@ -163,10 +163,10 @@ impl Inkwell {
let dir = PathBuf::from(data_dir);
std::fs::create_dir_all(&dir).map_err(CoreError::store)?;
let db = local::open(&dir.join("inkwell.db")).map_err(CoreError::store)?;
let db = local::open(&dir.join(local::DB_FILE)).map_err(CoreError::store)?;
log::info!("local store ready — {}", local::summary(&db));
let blobs = BlobStore::new(dir.join("blobs")).map_err(CoreError::store)?;
let blobs = BlobStore::new(dir.join(local::BLOBS_DIR)).map_err(CoreError::store)?;
Ok(Arc::new(Inkwell {
db,
blobs,
+6
View File
@@ -17,6 +17,12 @@ use std::sync::Mutex;
use rusqlite::Connection;
/// The store's file inside a client's data directory. The layout is the same on
/// every client, so a store is readable by any client that opens it.
pub const DB_FILE: &str = "inkwell.db";
/// Attachment bytes, filed by content hash, beside [`DB_FILE`].
pub const BLOBS_DIR: &str = "blobs";
/// The shared database handle. rusqlite connections aren't `Sync`, so a `Mutex`
/// serializes access — fine, since operations are quick and a client is single-user.
/// How it is held is the caller's business: Tauri manages it as state, Android holds
+2 -1
View File
@@ -19,11 +19,12 @@ use std::fs;
use std::io;
use std::path::Path;
use inkwell_core::local::DB_FILE;
/// The identifier ThoughtSync shipped under. Its app-data dir is a sibling of ours.
pub const LEGACY_IDENTIFIER: &str = "com.fabledsword.thoughtsync";
const LEGACY_DB: &str = "thoughtsync.db";
pub const DB_FILE: &str = "inkwell.db";
/// What a crossover did, for the startup log.
#[derive(Debug, PartialEq, Eq)]
+2 -2
View File
@@ -126,7 +126,7 @@ pub fn run() {
log_crossover(&legacy, crossover::adopt_legacy_data(&legacy, &dir));
}
std::fs::create_dir_all(&dir)?;
let db_path = dir.join(crossover::DB_FILE);
let db_path = dir.join(local::DB_FILE);
log::info!("opening local store: {}", db_path.display());
let db = local::open(&db_path)?;
log::info!("local store ready — {}", local::summary(&db));
@@ -142,7 +142,7 @@ pub fn run() {
app.manage(db);
// Attachment bytes live beside the database, filed by content hash, so a
// synced image is readable with no network (M10.7d).
let blobs = sync::blobs::BlobStore::new(dir.join("blobs"))?;
let blobs = sync::blobs::BlobStore::new(dir.join(local::BLOBS_DIR))?;
log::info!("attachment store ready: {}", blobs.root().display());
// Hand the directory to the URI-scheme handler registered below, which
// was built before this path could be resolved.