Unified Connection Map
All connections between modules and databases in one view.Copy
╔══════════════════════════════════════════════════════════════════════╗
║ MODULE ──▶ DATABASE CONNECTION MATRIX ║
╠══════════════════════════════════════════════════════════════════════╣
║ ║
║ │atomic-│session│onit │niia- │work-wiki│ ║
║ MODULE │term.db│ .db │.db │watcher│-diff.db │ Role ║
║ ════════════════│═══════│═══════│═════│═══════│═════════│══════════ ║
║ │ │ │ │ │ │ ║
║ DAEMON LAYER │ │ │ │ │ │ ║
║ File Watcher │ - │ - │ - │ W* │ - │ FS Mon ║
║ │ │ │ │ │ │ ║
║ RUST BACKEND │ │ │ │ │ │ ║
║ PTY Log │ W/R* │ - │ - │ - │ - │ Logger ║
║ Session DB │ - │ W/R* │ - │ - │ - │ Session ║
║ OnIt │ - │ - │W/R* │ - │ - │ Activity ║
║ NIIA Query │ - │ - │ - │ W/R* │ - │ Watcher ║
║ Auto-fix │ W* │ - │ - │ R │ - │ Fixer ║
║ Diff History │ - │ - │ - │ - │ W/R* │ Diff ║
║ │ │ │ │ │ │ ║
║ FRONTEND (TS) │ │ │ │ │ │ ║
║ Worked Polling │ R │ - │ - │ - │ - │ UI ║
║ Watcher Tab │ - │ - │ - │ R │ - │ UI ║
║ OnIt Polling │ - │ - │ R │ - │ - │ UI ║
║ Git Tab │ - │ - │ - │ - │ W/R │ UI ║
║ Terminals Tab │ - │ R │ - │ - │ - │ UI ║
║ │ │ │ │ │ │ ║
║ TOTAL │ 3 │ 2 │ 2 │ 4 │ 3 │ ║
║ ════════════════│═══════│═══════│═════│═══════│═════════│══════════ ║
║ ║
║ Legend: W = Write, R = Read, * = Primary owner, - = No access ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝
Unified Data Flow Graph
Copy
╔══════════════════════════════════════════════════════════════════════╗
║ UNIFIED MODULE-DB CONNECTION GRAPH ║
╠══════════════════════════════════════════════════════════════════════╣
║ ║
║ ══════════════════════ DAEMON LAYER ═════════════════════════════ ║
║ ║
║ ┌─────────────────────┐ ║
║ │ File Watcher Daemon │ ║
║ └──────────┬──────────┘ ║
║ │ ║
║ │ W (Direct rusqlite) ║
║ ▼ ║
║ ║
║ ══════════════════════ DATABASE LAYER ═══════════════════════════ ║
║ ║
║ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌────────┐ ║
║ │ atomic- │ │ session │ │ onit │ │ niia- │ │ work- │ ║
║ │ term.db │ │ .db │ │ .db │ │ watcher.db│ │ wiki- │ ║
║ │ │ │ │ │ │ │ │ │ diff.db│ ║
║ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └────┬───┘ ║
║ │ │ │ │ │ ║
║ ║
║ ══════════════════ RUST BACKEND LAYER ═══════════════════════════ ║
║ ║
║ │ │ │ │ │ ║
║ ▼ ▼ ▼ ▼ ▼ ║
║ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌────────┐ ║
║ │ PTY Log │ │ Session │ │ OnIt │ │ NIIA │ │ Diff │ ║
║ │ W/R │ │ DB W/R │ │ W/R │ │ W/R │ │ Hist │ ║
║ └───────────┘ └───────────┘ └───────────┘ └───────────┘ │ W/R │ ║
║ │ │ └────────┘ ║
║ │ ┌─────────────────────────────┐ │ ║
║ │ │ Auto-fix Module │ │ ║
║ │◀──────│ R:watcher ──▶ W:atomic │───┘ ║
║ │ └─────────────────────────────┘ ║
║ ║
║ ════════════════════ TAURI IPC LAYER ════════════════════════════ ║
║ ║
║ │ invoke() │ invoke() │ invoke() │ invoke() ║
║ ▼ ▼ ▼ ▼ ║
║ ║
║ ════════════════════ FRONTEND LAYER ═════════════════════════════ ║
║ ║
║ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌────────┐ ║
║ │ Worked │ │ Terminals │ │ OnIt │ │ Watcher │ │ Git │ ║
║ │ Polling R │ │ Tab R │ │ Polling R │ │ Tab R │ │ Tab │ ║
║ └───────────┘ └───────────┘ └───────────┘ └───────────┘ │ W/R │ ║
║ └────────┘ ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝
Write Pattern Classification
Copy
╔══════════════════════════════════════════════════════════════════════╗
║ WRITE PATTERN CLASSIFICATION ║
╠══════════════════════════════════════════════════════════════════════╣
║ ║
║ PATTERN A: Daemon Direct Write (No IPC) ║
║ ┌───────────────────────────────────────────────────────────────┐ ║
║ │ │ ║
║ │ File Watcher Daemon ═════▶ niia-watcher.db │ ║
║ │ rusqlite::Connection │ ║
║ │ │ ║
║ │ Characteristics: │ ║
║ │ - No IPC overhead │ ║
║ │ - Highest performance │ ║
║ │ - Daemon owns the connection │ ║
║ └───────────────────────────────────────────────────────────────┘ ║
║ ║
║ PATTERN B: Backend Real-time Write (PTY Stream) ║
║ ┌───────────────────────────────────────────────────────────────┐ ║
║ │ │ ║
║ │ PTY Data ──▶ SessionActor ──▶ PTY Log ═════▶ atomic-term.db │ ║
║ │ │ ║
║ │ Characteristics: │ ║
║ │ - Real-time stream processing │ ║
║ │ - VTE Parser extracts activities │ ║
║ │ - Immediate persistence │ ║
║ └───────────────────────────────────────────────────────────────┘ ║
║ ║
║ PATTERN C: Frontend Invoke Write (User Action) ║
║ ┌───────────────────────────────────────────────────────────────┐ ║
║ │ │ ║
║ │ Frontend ──▶ invoke() ──▶ Tauri Command ──▶ Rust ──▶ DB │ ║
║ │ │ ║
║ │ Characteristics: │ ║
║ │ - User-initiated actions │ ║
║ │ - IPC through Tauri │ ║
║ │ - Response returned to frontend │ ║
║ └───────────────────────────────────────────────────────────────┘ ║
║ ║
║ PATTERN D: Backend Timer Write (Heartbeat) ║
║ ┌───────────────────────────────────────────────────────────────┐ ║
║ │ │ ║
║ │ SessionActor (10s interval) ──▶ heartbeat() ──▶ session.db │ ║
║ │ │ ║
║ │ Characteristics: │ ║
║ │ - Periodic health check │ ║
║ │ - Updates last_heartbeat timestamp │ ║
║ │ - Enables crash recovery │ ║
║ └───────────────────────────────────────────────────────────────┘ ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝
Read Pattern Classification
Copy
╔══════════════════════════════════════════════════════════════════════╗
║ READ PATTERN CLASSIFICATION ║
╠══════════════════════════════════════════════════════════════════════╣
║ ║
║ PATTERN A: Frontend Invoke Read (UI Display) ║
║ ┌───────────────────────────────────────────────────────────────┐ ║
║ │ │ ║
║ │ Frontend ──▶ invoke() ──▶ Tauri Command ──▶ Rust │ ║
║ │ │ │ ║
║ │ SELECT │ ║
║ │ │ │ ║
║ │ ▼ │ ║
║ │ Database │ ║
║ │ │ ║
║ │ Used by: Worked Polling, Watcher Tab, OnIt Polling │ ║
║ └───────────────────────────────────────────────────────────────┘ ║
║ ║
║ PATTERN B: Backend Internal Read (Recovery/Startup) ║
║ ┌───────────────────────────────────────────────────────────────┐ ║
║ │ │ ║
║ │ App Startup ──▶ recover_sessions() ──▶ session.db │ ║
║ │ │ ║
║ │ Used by: Session recovery on app restart │ ║
║ └───────────────────────────────────────────────────────────────┘ ║
║ ║
║ PATTERN C: Cross-DB Read (Path Resolution) ║
║ ┌───────────────────────────────────────────────────────────────┐ ║
║ │ │ ║
║ │ Auto-fix Module │ ║
║ │ │ │ ║
║ │ │ SELECT FROM niia-watcher.db (find full path) │ ║
║ │ │ │ ║
║ │ │ Based on: basename + timestamp window │ ║
║ │ ▼ │ ║
║ │ UPDATE atomic-term.db (set resolved path) │ ║
║ │ │ ║
║ └───────────────────────────────────────────────────────────────┘ ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝
All Connections Table
| # | Source Module | Direction | Target DB | Operation | Trigger |
|---|---|---|---|---|---|
| 1 | File Watcher Daemon | ──▶ | niia-watcher.db | INSERT file_events | FS event |
| 2 | PTY Log | ◀─▶ | atomic-term.db | W/R parsed_activities | PTY stream |
| 3 | Auto-fix | ──▶ | atomic-term.db | UPDATE path | Post-INSERT |
| 4 | Auto-fix | ◀── | niia-watcher.db | SELECT abs_path | Path lookup |
| 5 | Session DB | ◀─▶ | session.db | W/R terminals | Heartbeat/Startup |
| 6 | OnIt | ◀─▶ | onit.db | W/R activity_logs | Frontend invoke |
| 7 | NIIA Query | ◀─▶ | niia-watcher.db | W/R watch_paths | Frontend invoke |
| 8 | Diff History | ◀─▶ | work-wiki-diff.db | W/R file_diffs | File save |
Design Principles Applied
Copy
╔══════════════════════════════════════════════════════════════════════╗
║ DESIGN PRINCIPLES ║
╠══════════════════════════════════════════════════════════════════════╣
║ ║
║ SIMPLICITY (SMPC) ║
║ ┌───────────────────────────────────────────────────────────────┐ ║
║ │ [x] Each Rust module = ONE database owner │ ║
║ │ [x] Auto-fix is only exception (cross-DB, clearly documented) │ ║
║ │ [x] Frontend uses invoke() for all reads │ ║
║ └───────────────────────────────────────────────────────────────┘ ║
║ ║
║ ORDER FROM CHAOS (OFAC) ║
║ ┌───────────────────────────────────────────────────────────────┐ ║
║ │ [x] Daemon ──▶ DB direct (no IPC for performance) │ ║
║ │ [x] Timer-based heartbeat for reliability │ ║
║ │ [x] Module roles clearly separated │ ║
║ └───────────────────────────────────────────────────────────────┘ ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝
Quick Reference by Database
| Database | Primary Owner | Writes From | Reads By |
|---|---|---|---|
| atomic-term.db | PTY Log | PTY Log, Auto-fix | Worked Polling |
| session.db | Session DB | Session DB | Terminals Tab, Recovery |
| onit.db | OnIt | OnIt | OnIt Polling |
| niia-watcher.db | Daemon | Daemon | Watcher Tab, Auto-fix |
| work-wiki-diff.db | Diff History | Diff History | Git Tab |