# @CHaT Web版 SQL スキーマ

## ファイル一覧
- `schema_blue.sql` — Blue Pass (ゲーム開催管理) 用テーブル

## セットアップ手順 (norizuki.com サーバー上の MariaDB)

### 1. root で SQL ファイルを実行
```bash
# ローカルから転送
scp sql/schema_blue.sql user@norizuki.com:/tmp/

# サーバー側で実行
ssh user@norizuki.com
sudo mysql < /tmp/schema_blue.sql
```

### 2. 動作確認
```bash
mysql -u atchatuser -patchat blue -e "SHOW TABLES;"
# => gameparticipanttable
#    gametable
```

### 3. 接続テスト (リモート)
```bash
mysql -h atchat.jp -u atchatuser -patchat blue -e "SELECT 1;"
# リモート接続を許可する場合、MariaDB の bind-address と firewall 設定も確認
```

## 設定上の注意

### セキュリティ
原作 Xojo クライアントには DB 接続情報が **平文で埋め込まれていました**:
```
db.UserName = "atchatuser"
db.Password = "atchat"
db.Host = "atchat.org"
```

Web 移植版では **クライアント (ブラウザ) から MariaDB に直接接続しない**方針。
サーバー (`atchat/server`) が DB アクセスを代行し、WebSocket プロトコル経由で
クライアントに結果を返す設計にすべき。

このため、実運用環境では:
- `atchatuser` のパスワードを強固なものに変更
- MariaDB の `bind-address = 127.0.0.1` にしてリモート接続を禁止
- 接続情報をサーバー側の `.env` (git 除外) に配置:

```env
# atchat/server/.env (gitignore 対象)
MARIADB_HOST=127.0.0.1
MARIADB_PORT=3306
MARIADB_USER=atchatuser
MARIADB_PASS=<本番用パスワード>
MARIADB_DATABASE=blue
```

### 文字コード
- 原作: `SET NAMES sjis` (Shift-JIS)
- Web 移植版: `utf8mb4` に変更 (絵文字・Unicode 対応)

既存データを原作から引き継ぐ場合は、別途 `sjis → utf8mb4` 変換スクリプトが必要。

### テーブル対応関係
| 原作参照 | 行番号 | 本 DDL |
|---|---|---|
| `insert into gametable(datetime,roomno,title,comment,GMid,GMname,capacity)` | BluePassDlg L1575 | `gametable` |
| `select * from gametable order by gameid desc limit 0,30` | BluePassDlg L1499 | 同上 |
| `SELECT * FROM gameparticipanttable WHERE gameid=…` | BluePassDlg L1694 | `gameparticipanttable` |

### 未実装 (今後のスライス)
- サーバー側で `gametable` にアクセスする Node.js モジュール (例: `src/db/blue.ts`)
- WebSocket コマンド: `gtm` (gametable 取得)、`ABPSG` (ゲーム開始記録) の受信処理
- MakeGameButt からの登録フロー (client `MakeGame` → server `Agm,*` など)
