Content Addressable Storage (CAS) for images and thread data.
This crate provides a Git-like storage system for the Squigit application, storing images by their BLAKE3 hash (deduplication) and managing thread data with persistent storage.
Example
use squigit_storage::{ThreadStorage, ThreadMetadata, ThreadData};
let storage = ThreadStorage::new().unwrap();
// Store an image
let image_bytes = std::fs::read("screenshot.png").unwrap();
let stored = storage.store_image(&image_bytes, None).unwrap();
println!("Image hash: {}", stored.hash);
println!("Image path: {}", stored.path);
// Create a thread
let metadata = ThreadMetadata::new("My Analysis".to_string(), stored.hash);
let initial = storage.attachment_manifest_entry(&metadata.image_hash, "squigitshot.png", chrono::Utc::now()).unwrap();
let thread = ThreadData::new(metadata, initial);
storage.save_thread(&thread).unwrap();