diff --git a/AGENTS.md b/AGENTS.md index 0a15e61..384fcb6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -7,6 +7,7 @@ ## Development +- Follow all the best practices outlined in the clippy lint. - Define all error types with `thiserror` — avoid manual `impl Display/Error`. - Build new UI components using `gpui-component`. - Run `scripts/precheck.sh` before committing to verify code quality and formatting. diff --git a/src/app.rs b/src/app.rs index 66980a8..78688d1 100644 --- a/src/app.rs +++ b/src/app.rs @@ -341,7 +341,7 @@ mod tests { use std::{thread, time::Duration}; use super::*; - use crate::repository::memory_backend::{MemoryBackend, memory_backend_factory}; + use crate::repository::backend::memory::{MemoryBackend, memory_backend_factory}; fn create_test_repo() -> (tempfile::TempDir, ClipboardRepository) { let temp_dir = tempfile::tempdir().expect("Failed to create temp dir"); @@ -373,7 +373,7 @@ mod tests { #[test] fn test_load_initial_records_when_repository_is_missing_returns_empty() { let records = - load_initial_records::(None, 10); + load_initial_records::(None, 10); assert!(records.is_empty()); } diff --git a/src/repository.rs b/src/repository.rs index ba8db2c..e1766c2 100644 --- a/src/repository.rs +++ b/src/repository.rs @@ -2,20 +2,15 @@ use std::sync::Arc; use gpui::{App, Global, ReadGlobal}; -/// Storage backend traits shared by repository implementations. +/// Storage backend traits and implementations (memory, redb). pub mod backend; mod cleanup; mod display; /// Repository error types. pub mod errors; mod favorites; -#[cfg(test)] -/// In-memory backend used by tests. -pub mod memory_backend; /// Persisted clipboard record models. pub mod models; -/// Production `redb` backend implementation. -pub mod redb_backend; /// Repository entry points and persistence APIs. pub mod repo; mod sidecar; diff --git a/src/repository/backend.rs b/src/repository/backend.rs index 59dc379..25b98e6 100644 --- a/src/repository/backend.rs +++ b/src/repository/backend.rs @@ -9,6 +9,10 @@ use std::path::PathBuf; use super::errors::RepositoryError; +#[cfg(test)] +pub mod memory; +pub mod redb; + /// A named, ordered key-value store with forward and reverse iteration. /// Each "tree" is a logical namespace (e.g. `clipboard_records`, /// `time_index`, `favorites`). diff --git a/src/repository/memory_backend.rs b/src/repository/backend/memory.rs similarity index 99% rename from src/repository/memory_backend.rs rename to src/repository/backend/memory.rs index 25c4ab2..c725856 100644 --- a/src/repository/memory_backend.rs +++ b/src/repository/backend/memory.rs @@ -8,7 +8,7 @@ use std::{ sync::{Arc, LockResult, Mutex, PoisonError, RwLock}, }; -use super::{ +use crate::repository::{ backend::{KvTree, StorageBackend}, errors::RepositoryError, }; diff --git a/src/repository/redb_backend.rs b/src/repository/backend/redb.rs similarity index 99% rename from src/repository/redb_backend.rs rename to src/repository/backend/redb.rs index 57dbe01..fbc412a 100644 --- a/src/repository/redb_backend.rs +++ b/src/repository/backend/redb.rs @@ -15,7 +15,7 @@ use std::{ use redb::{Database, ReadableDatabase, ReadableTable, ReadableTableMetadata, TableDefinition}; -use super::{ +use crate::repository::{ backend::{KvTree, StorageBackend}, errors::RepositoryError, }; diff --git a/src/repository/cleanup.rs b/src/repository/cleanup.rs index a776dbd..33b2ada 100644 --- a/src/repository/cleanup.rs +++ b/src/repository/cleanup.rs @@ -4,10 +4,9 @@ use std::collections::HashSet; use super::{ - backend::{KvTree, StorageBackend}, + backend::{KvTree, StorageBackend, redb::RedbBackend}, errors::RepositoryError, models::ClipboardRecord, - redb_backend::RedbBackend, repo::ClipboardRepository, sidecar::remove_record_sidecars, }; diff --git a/src/repository/display.rs b/src/repository/display.rs index 0ec708b..883b088 100644 --- a/src/repository/display.rs +++ b/src/repository/display.rs @@ -3,8 +3,10 @@ use std::cmp::Ordering; use super::{ - backend::StorageBackend, errors::RepositoryError, models::ClipboardRecord, - redb_backend::RedbBackend, repo::ClipboardRepository, + backend::{StorageBackend, redb::RedbBackend}, + errors::RepositoryError, + models::ClipboardRecord, + repo::ClipboardRepository, }; impl ClipboardRepository { diff --git a/src/repository/repo.rs b/src/repository/repo.rs index dcf8214..2f1e1a4 100644 --- a/src/repository/repo.rs +++ b/src/repository/repo.rs @@ -6,10 +6,12 @@ use std::path::{Path, PathBuf}; use chrono::Local; use super::{ - backend::{BackendFactory, KvTree, StorageBackend}, + backend::{ + BackendFactory, KvTree, StorageBackend, + redb::{RedbBackend, redb_backend_factory}, + }, errors::RepositoryError, models::{ClipboardRecord, ContentType}, - redb_backend::{RedbBackend, redb_backend_factory}, sidecar::{ purge_sidecar_dirs, remove_image_files, remove_record_sidecars, remove_superseded_rich_text_files, diff --git a/src/repository/test_helpers.rs b/src/repository/test_helpers.rs index d10a4c4..8df115d 100644 --- a/src/repository/test_helpers.rs +++ b/src/repository/test_helpers.rs @@ -6,8 +6,10 @@ use std::{thread, time::Duration}; use tempfile::tempdir; use super::{ - backend::{BackendFactory, StorageBackend}, - memory_backend::{MemoryBackend, memory_backend_factory}, + backend::{ + BackendFactory, StorageBackend, + memory::{MemoryBackend, memory_backend_factory}, + }, models::ClipboardRecord, repo::ClipboardRepository, }; diff --git a/src/repository/tests/dedup_tests.rs b/src/repository/tests/dedup_tests.rs index 343fa61..1310b8b 100644 --- a/src/repository/tests/dedup_tests.rs +++ b/src/repository/tests/dedup_tests.rs @@ -6,9 +6,9 @@ use std::{thread, time::Duration}; use rstest::rstest; use crate::repository::{ - backend::{BackendFactory, StorageBackend}, - memory_backend::memory_backend_factory, - redb_backend::redb_backend_factory, + backend::{ + BackendFactory, StorageBackend, memory::memory_backend_factory, redb::redb_backend_factory, + }, repo::ClipboardRepository, test_helpers::{ create_test_repo, create_test_repo_with, load_display_records, save_numbered_records, diff --git a/src/repository/tests/save_tests.rs b/src/repository/tests/save_tests.rs index f175386..4ed6f52 100644 --- a/src/repository/tests/save_tests.rs +++ b/src/repository/tests/save_tests.rs @@ -5,10 +5,10 @@ use std::{thread, time::Duration}; use crate::repository::{ - backend::{BackendFactory, StorageBackend}, - memory_backend::memory_backend_factory, + backend::{ + BackendFactory, StorageBackend, memory::memory_backend_factory, redb::redb_backend_factory, + }, models::{ClipboardRecord, ContentType}, - redb_backend::redb_backend_factory, test_helpers::{create_test_repo, create_test_repo_with}, }; diff --git a/src/repository/time_index.rs b/src/repository/time_index.rs index 64e5825..88068df 100644 --- a/src/repository/time_index.rs +++ b/src/repository/time_index.rs @@ -241,10 +241,10 @@ mod tests { use tempfile::tempdir; use super::*; - use crate::repository::{ - backend::{BackendFactory, StorageBackend}, - memory_backend::{MemoryTreeHandle, memory_backend_factory}, - redb_backend::redb_backend_factory, + use crate::repository::backend::{ + BackendFactory, StorageBackend, + memory::{MemoryTreeHandle, memory_backend_factory}, + redb::redb_backend_factory, }; type MemoryTimeIndex = TimeIndex;