survey_permissions
概要
案件ごとの共有権限を管理する中間テーブル。ユーザーが案件に対して持つ役割(閲覧/編集)を表す。
テーブル定義
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL許可 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| 案件権限 | survey_permissions | survey_id | uuid | ◯ | surveys:id (cascade) | ||||
| user_id | uuid | ◯ | users:id (cascade) | ||||||
| role_type | permission_role | ◯ | view / edit | ||||||
| created_at | timestamptz | now() |
リレーション
- survey_id → surveys.id (onDelete: cascade)
- user_id → users.id (onDelete: cascade)
インデックス
- 主キー (survey_id, user_id, role_type) の複合主キー
注記
- 案件の作成時、作成者に
edit権限が自動で付与される - 案件の複製時、複製元の権限がすべて引き継がれる
- 権限の更新は一括更新(
PUT /api/surveys/{surveyId}/permissions)で、既存の権限をすべて削除してから指定内容を挿入する - 管理者はこのテーブルにレコードがなくてもすべての案件にアクセスできる
- 複合主キーの構成上、同じユーザーが同じ案件に
viewとeditの両方を持つことは技術的に可能だが、UI 上は 1 ユーザー 1 役割として扱う