survey_versions
概要
案件の版(バージョン)を管理するテーブル。保存・ロールバックのたびに追加され、削除はされない。
テーブル定義
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL許可 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| 版 | survey_versions | id | uuid | ◯ | gen_random_uuid() | ||||
| survey_id | uuid | surveys:id (cascade) | |||||||
| version_no | integer | 版番号。案件内で連番 | |||||||
| status | survey_status | 版が作られた時点のステータス | |||||||
| source_version_id | uuid | ◯ | 複製元の版 ID。外部キー制約なし | ||||||
| rollback_from_version_id | uuid | ◯ | ロールバック元の版 ID。外部キー制約なし | ||||||
| created_by | uuid | users:id (restrict) | 版を作成したユーザー | ||||||
| created_at | timestamptz | now() |
リレーション
- survey_id → surveys.id (onDelete: cascade)
- created_by → users.id (onDelete: restrict)
- 参照される側:
survey_version_sections.survey_version_id(cascade) - 参照される側:
survey_version_pointers.version_id(cascade)
インデックス
- 主キー (id)
- UNIQUE INDEX: survey_versions_survey_id_version_no_idx (survey_id, version_no)
注記
- 案件の作成時に版 1 が作られる
- 保存操作では、最新版の全スナップショットを複製した新しい版が作られる
- ロールバックでは、指定した版の内容を復元した新しい版が作られる。過去の版は削除されない
source_version_id/rollback_from_version_idは同一テーブルへの自己参照であり、外部キー制約は張っていない- 出力(
POST /api/surveys/{surveyId}/export)を実行すると、最新版のstatusも出力済みに更新される