diff --git a/PLAN.md b/PLAN.md index a105591..2ca5abd 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1,19 +1,19 @@ # Refactoring Plan to Reduce Code Duplication ## Implementation Order: -1. Create core module structure and error types -2. Create common data structures -3. Update database layer for batch operations -4. Create core services with clear boundaries (synchronous) -5. Add async wrappers for API use -6. Refactor CLI modes to use services -7. Refactor REST API to use async services -8. Refactor MCP tools to use services -9. Create unified error handling -10. Add integration tests -11. Add performance optimization guidelines +- [x] 1. Create core module structure and error types +- [x] 2. Create common data structures +- [x] 3. Update database layer for batch operations +- [x] 4. Create core services with clear boundaries (synchronous) +- [ ] 5. Add async wrappers for API use +- [ ] 6. Refactor CLI modes to use services (partially done) +- [ ] 7. Refactor REST API to use async services +- [ ] 8. Refactor MCP tools to use services +- [x] 9. Create unified error handling +- [ ] 10. Add integration tests +- [ ] 11. Add performance optimization guidelines (partially done) -## 1. Create Core Module Structure and Error Types +## 1. Create Core Module Structure and Error Types (DONE) **Files:** - Add: `src/core/error.rs` - Add: `src/core/mod.rs` @@ -28,7 +28,7 @@ - Use `#[derive(thiserror::Error)]` for easy `Display` and `Error` implementations - Provide user-friendly error messages with error codes -## 2. Create Common Data Structures +## 2. Create Common Data Structures (DONE) **Files:** - Add: `src/core/types.rs` @@ -46,7 +46,7 @@ - Add serialization/deserialization support for JSON/YAML - Ensure all fields are properly documented -## 3. Update Database Layer for Batch Operations +## 3. Update Database Layer for Batch Operations (DONE) **Files:** - Change: `src/db.rs` @@ -64,7 +64,7 @@ - Add transaction support for atomic operations - Optimize queries for common access patterns -## 4. Create Core Service Layer with Clear Boundaries +## 4. Create Core Service Layer with Clear Boundaries (DONE) **Files:** - Add: `src/core/item_service.rs` - Add: `src/core/compression_service.rs` @@ -107,24 +107,24 @@ - Provide examples for safe async/sync boundaries - Use `tokio::task::spawn_blocking` for CPU-bound or blocking I/O operations -## 6. Refactor CLI Modes to Use Services +## 6. Refactor CLI Modes to Use Services (PARTIALLY DONE) **Files:** -- Change: `src/modes/get.rs` -- Change: `src/modes/save.rs` -- Change: `src/modes/list.rs` -- Change: `src/modes/info.rs` -- Change: `src/modes/delete.rs` -- Change: `src/modes/diff.rs` -- Change: `src/modes/status.rs` +- Change: `src/modes/get.rs` (DONE) +- Change: `src/modes/save.rs` (DONE) +- Change: `src/modes/list.rs` (DONE) +- Change: `src/modes/info.rs` (DONE) +- Change: `src/modes/delete.rs` (DONE) +- Change: `src/modes/diff.rs` (NOT DONE) +- Change: `src/modes/status.rs` (DONE, uses shared function) **Functions:** -- Change: `mode_get` to use `item_service::get_item_full` -- Change: `mode_save` to use `item_service::save_item` -- Change: `mode_list` to use `item_service::list_items` -- Change: `mode_info` to use `item_service::get_item_full` -- Change: `mode_delete` to use `item_service::delete_item` -- Change: `mode_diff` to use `item_service::get_item_full` for both items -- Change: `mode_status` to use new status service functions +- Change: `mode_get` to use `item_service` (DONE) +- Change: `mode_save` to use `item_service` (DONE) +- Change: `mode_list` to use `item_service` (DONE) +- Change: `mode_info` to use `item_service` (DONE) +- Change: `mode_delete` to use `item_service` (DONE) +- Change: `mode_diff` to use `item_service` (NOT DONE) +- Change: `mode_status` to use new status service functions (DONE, uses shared function) **Reason:** Remove direct database and file system access from modes **Implementation:** @@ -173,7 +173,7 @@ - Use synchronous services directly (MCP is typically local/short-lived) - Standardize response format to match API/CLI -## 9. Create Unified Error Handling +## 9. Create Unified Error Handling (DONE) **Files:** - Change: All files that handle errors @@ -217,7 +217,7 @@ - Use in-memory databases and tempfiles for isolation - Test both sync and async service implementations -## 11. Performance Optimization Guidelines +## 11. Performance Optimization Guidelines (PARTIALLY DONE) **Files:** - Change: All core service files - Change: All mode files