チャット機能のデータを管理する4テーブルです。
店舗と連絡先間のチャットルームを管理するテーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
shopId | text | NO | — | 店舗 ID |
contactId | text | NO | — | 連絡先 ID |
roomId | text | NO | — | ルーム識別子(ユニーク) |
roomType | text | NO | 'one_to_one' | ルーム種別 |
customerEntered | boolean | NO | false | 顧客が入室済みか |
lastMessage | text | YES | — | 最新メッセージ(プレビュー用) |
lastMessageAt | timestamptz(3) | YES | — | 最新メッセージ日時 |
lastUserMessageAt | timestamptz(3) | YES | — | 最新のユーザーメッセージ日時 |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
updatedAt | timestamptz(3) | NO | NOW() | 更新日時 |
| 名前 | カラム | 種別 |
|---|
| — | roomId | UNIQUE |
chat_room_shopId_idx | shopId | INDEX |
chat_room_lastMessageAt_idx | lastMessageAt | INDEX |
chat_room_lastUserMessageAt_idx | lastUserMessageAt | INDEX |
チャットメッセージを保存するテーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
roomId | text | NO | — | ルーム ID |
senderId | text | NO | — | 送信者 ID |
senderType | text | NO | — | 送信者種別(‘shop’ | ‘customer’ | ‘system’) |
content | text | NO | — | メッセージ本文 |
contentType | text | NO | 'text' | コンテンツ種別(‘text’ | ‘image’ | ‘file’) |
messageType | text | NO | 'normal' | メッセージ種別(‘normal’ | ‘broadcast’ | ‘system’) |
displayDays | integer | NO | 90 | 表示期間(日数、TTL) |
metadata | jsonb | YES | — | メタデータ(添付情報等) |
sentAt | timestamptz(3) | NO | NOW() | 送信日時 |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
| 名前 | カラム | 種別 |
|---|
chat_message_roomId_idx | roomId | INDEX |
chat_message_roomId_sentAt_idx | roomId, sentAt | INDEX(複合) |
chat_message_sentAt_idx | sentAt | INDEX |
ユーザーごとのチャットルーム既読状態を管理するテーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
userId | text | NO | — | ユーザー ID(複合主キー) |
roomId | text | NO | — | ルーム ID(複合主キー) |
userType | text | NO | — | ユーザー種別(‘shop’ | ‘customer’) |
lastReadAt | timestamptz(3) | NO | NOW() | 最終既読日時 |
(userId, roomId) の複合主キー。
| 名前 | カラム | 種別 |
|---|
| — | userId, roomId | PRIMARY KEY |
user_room_state_userId_idx | userId | INDEX |
user_room_state_roomId_idx | roomId | INDEX |
チャットの添付ファイルメタデータを管理するテーブルです。実際のファイルは R2 に保存されます。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
messageId | text | NO | — | メッセージ ID |
fileName | text | NO | — | ファイル名 |
mimeType | text | NO | — | MIME タイプ |
size | integer | NO | — | ファイルサイズ(バイト) |
r2Key | text | NO | — | R2 オブジェクトキー(ユニーク) |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
| 名前 | カラム | 種別 |
|---|
| — | r2Key | UNIQUE |
chat_attachment_messageId_idx | messageId | INDEX |