# ER図

## 概要

Ghosttyプロジェクトにおけるデータ永続化機構のER図を記載します。

本プロジェクトは従来のRDBMSを使用していないため、ファイルベースのキャッシュ構造をエンティティとして表現しています。

## ER図

```mermaid
erDiagram
    SSH_CACHE {
        string hostname PK "ホスト名 or user@hostname"
        int64 timestamp "送信日時(UNIXタイムスタンプ)"
        string terminfo_version "terminfoバージョン"
    }
```

## エンティティ説明

### SSH_CACHE

SSHセッションでリモートホストへGhostty terminfoを送信した履歴を追跡するキャッシュエンティティです。

**主キー**: hostname（ホスト名またはuser@hostname形式）

**属性**:
- `hostname`: リモートホストの識別子。単独のホスト名、user@hostname形式、IPv4アドレス、IPv6アドレスのいずれか
- `timestamp`: terminfoを送信したUNIXタイムスタンプ（秒単位、64bit整数）
- `terminfo_version`: 送信したterminfoの識別子（デフォルト: "xterm-ghostty"）

## リレーションシップ

本システムは単一エンティティで構成されており、エンティティ間のリレーションシップは存在しません。

SSH_CACHEエンティティは完全に独立しており、他のデータストアとの関連を持ちません。

## データフロー

```mermaid
flowchart TD
    A[Ghosttyターミナル] -->|SSH接続| B{キャッシュ確認}
    B -->|キャッシュヒット| C[terminfo送信スキップ]
    B -->|キャッシュミス| D[terminfo送信]
    D --> E[キャッシュに追加]
    E --> F[SSH_CACHE]

    G[ghostty +ssh-cache --add] --> F
    H[ghostty +ssh-cache --remove] --> F
    I[ghostty +ssh-cache --clear] --> F
    J[ghostty +ssh-cache] -->|一覧取得| F
```

## 補足

### ストレージ形式

実際のデータはフラットファイルとしてパイプ区切りのテキスト形式で保存されます：

```
example.com|1709312400|xterm-ghostty
user@server.local|1709398800|xterm-ghostty
192.168.1.100|1709485200|xterm-ghostty
```

### 保存場所

- Linux/macOS: `${XDG_STATE_HOME}/ghostty/ssh_cache`
- デフォルト: `~/.local/state/ghostty/ssh_cache`
