添付ファイル
チャットメッセージには画像やファイルを添付できます。ファイルは Cloudflare R2 に保存され、メタデータは Cellar DB の chat_attachment テーブルで管理されます。
添付ファイル構造
Section titled “添付ファイル構造”| フィールド | 型 | 説明 |
|---|---|---|
id | UUID | 添付ファイル ID |
messageId | UUID | 紐付くメッセージ ID |
fileName | text | ファイル名 |
mimeType | text | MIME タイプ |
size | int | ファイルサイズ (bytes) |
r2Key | text | R2 ストレージのオブジェクトキー |
createdAt | timestamp | 作成日時 |
アップロードフロー
Section titled “アップロードフロー”R2 キーの形式
Section titled “R2 キーの形式”chat/{shopId}/{roomId}/{messageId}/{fileName}ダウンロード
Section titled “ダウンロード”添付ファイルのダウンロードは R2 から直接取得します。
メッセージとの関連
Section titled “メッセージとの関連”メッセージ取得時に添付ファイルも一緒に取得されます。
const messages = await db.query.chatMessage.findMany({ where: { roomId }, with: { attachments: true // chatAttachment を JOIN }});| 項目 | 制約 |
|---|---|
| ファイルサイズ上限 | R2 の制約に準拠 |
| 対応形式 | 制限なし(MIME タイプで管理) |
| メッセージあたりの添付数 | 複数可 |
| 保存期間 | メッセージ削除まで永続 |
- メッセージ - メッセージ送受信
- Cellar チャットテーブル - chat_attachment テーブル
- インフラストラクチャ - R2 設定