通知関連のデータを管理する7テーブルです。店舗向け通知BOX、通知チャネル設定、PUSH サブスクリプション、メール通知先を含みます。
店舗向けの通知BOX(アプリ内通知)テーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
shopId | text | NO | — | 店舗 ID |
type | text | NO | — | 通知種別 |
title | text | NO | — | タイトル |
body | text | NO | — | 本文 |
link | text | YES | — | リンク先 URL |
isRead | boolean | NO | false | 既読フラグ |
isDeleted | boolean | NO | false | 論理削除フラグ |
senderId | text | YES | — | 送信者 ID(contactId) |
actionUserId | text | YES | — | 削除操作ユーザー ID |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
| 名前 | カラム | 種別 |
|---|
shop_notification_shopId_idx | shopId | INDEX |
shop_notification_isRead_idx | isRead | INDEX |
shop_notification_createdAt_idx | createdAt | INDEX |
shop_notification_shopId_isDeleted_idx | shopId, isDeleted | INDEX(複合) |
ユーザーごとの通知チャネル設定テーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
userId | text | NO | — | ユーザー ID |
userType | text | NO | — | ユーザー種別(‘shop’ | ‘customer’) |
channels | jsonb | NO | {} | チャネル設定 |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
updatedAt | timestamptz(3) | NO | NOW() | 更新日時 |
| 名前 | カラム | 種別 |
|---|
notification_setting_userId_userType_key | userId, userType | UNIQUE |
notification_setting_channels_idx | channels | GIN |
店舗単位の通知チャネル設定テーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
shopId | text | NO | — | 店舗 ID(ユニーク) |
channels | jsonb | NO | {} | チャネル設定 |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
updatedAt | timestamptz(3) | NO | NOW() | 更新日時 |
店舗の Web Push サブスクリプションを管理するテーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
shopId | text | NO | — | 店舗 ID |
endpoint | text | NO | — | Push エンドポイント URL(ユニーク) |
p256dh | text | NO | — | 公開鍵(P-256 DH) |
auth | text | NO | — | 認証シークレット |
deviceName | text | YES | — | デバイス名 |
userAgent | text | YES | — | User-Agent |
registeredBy | text | YES | — | 登録者ユーザー ID |
registeredByName | text | YES | — | 登録者表示名(非正規化) |
categories | jsonb | NO | {} | 通知カテゴリ別受信設定 |
isActive | boolean | NO | true | アクティブ状態 |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
updatedAt | timestamptz(3) | NO | NOW() | 更新日時 |
| 名前 | カラム | 種別 |
|---|
| — | endpoint | UNIQUE |
shop_push_subscription_shopId_idx | shopId | INDEX |
shop_push_subscription_shopId_isActive_idx | shopId, isActive | INDEX(複合) |
店舗のメール通知先を管理するテーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
shopId | text | NO | — | 店舗 ID |
email | text | NO | — | メールアドレス |
name | text | YES | — | 受信者名 |
registeredBy | text | YES | — | 登録者ユーザー ID |
registeredByName | text | YES | — | 登録者表示名(非正規化) |
categories | jsonb | NO | {} | 通知カテゴリ別受信設定 |
isActive | boolean | NO | true | アクティブ状態 |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
updatedAt | timestamptz(3) | NO | NOW() | 更新日時 |
| 名前 | カラム | 種別 |
|---|
shop_email_recipient_shopId_email_key | shopId, email | UNIQUE |
shop_email_recipient_shopId_idx | shopId | INDEX |
shop_email_recipient_shopId_isActive_idx | shopId, isActive | INDEX(複合) |
顧客の通知設定テーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
userId | text | NO | — | ユーザー ID(ユニーク) |
emailEnabled | boolean | NO | true | メール通知の有効/無効 |
pushEnabled | boolean | NO | true | PUSH 通知の有効/無効 |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
updatedAt | timestamptz(3) | NO | NOW() | 更新日時 |
顧客の Web Push サブスクリプションを管理するテーブルです。
| カラム | 型 | NULL | デフォルト | 説明 |
|---|
id | text | NO | — | 主キー(UUID) |
userId | text | NO | — | ユーザー ID |
endpoint | text | NO | — | Push エンドポイント URL(ユニーク) |
p256dh | text | NO | — | 公開鍵(P-256 DH) |
auth | text | NO | — | 認証シークレット |
deviceName | text | YES | — | デバイス名 |
userAgent | text | YES | — | User-Agent |
isActive | boolean | NO | true | アクティブ状態 |
createdAt | timestamptz(3) | NO | NOW() | 作成日時 |
updatedAt | timestamptz(3) | NO | NOW() | 更新日時 |
| 名前 | カラム | 種別 |
|---|
| — | endpoint | UNIQUE |
customer_push_subscription_userId_idx | userId | INDEX |
customer_push_subscription_userId_isActive_idx | userId, isActive | INDEX(複合) |