Skip to main content

Unified Connection Map

All connections between modules and databases in one view.
╔══════════════════════════════════════════════════════════════════════╗
║                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

╔══════════════════════════════════════════════════════════════════════╗
║                  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

╔══════════════════════════════════════════════════════════════════════╗
║                   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

╔══════════════════════════════════════════════════════════════════════╗
║                   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 ModuleDirectionTarget DBOperationTrigger
1File Watcher Daemon──▶niia-watcher.dbINSERT file_eventsFS event
2PTY Log◀─▶atomic-term.dbW/R parsed_activitiesPTY stream
3Auto-fix──▶atomic-term.dbUPDATE pathPost-INSERT
4Auto-fix◀──niia-watcher.dbSELECT abs_pathPath lookup
5Session DB◀─▶session.dbW/R terminalsHeartbeat/Startup
6OnIt◀─▶onit.dbW/R activity_logsFrontend invoke
7NIIA Query◀─▶niia-watcher.dbW/R watch_pathsFrontend invoke
8Diff History◀─▶work-wiki-diff.dbW/R file_diffsFile save

Design Principles Applied

╔══════════════════════════════════════════════════════════════════════╗
║                     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

DatabasePrimary OwnerWrites FromReads By
atomic-term.dbPTY LogPTY Log, Auto-fixWorked Polling
session.dbSession DBSession DBTerminals Tab, Recovery
onit.dbOnItOnItOnIt Polling
niia-watcher.dbDaemonDaemonWatcher Tab, Auto-fix
work-wiki-diff.dbDiff HistoryDiff HistoryGit Tab