設計書 → 40.apis → resources → update_resource → detail-design_gen.md
update_resource detail design
- Operation:
updateResource
- Endpoint:
PUT /resources/{resourceId}
1. 正常系入力
| Location |
Name |
Type |
説明 |
path |
resourceId |
ResourceId |
予約対象の資源を一意に識別するIDです。 |
body |
request |
UpdateResourceRequest |
- |
Request body UpdateResourceRequest
| 項目 |
型 |
説明 |
name |
ResourceName |
利用者に表示する資源名です。空白除去後1〜100文字です。 |
description |
DescriptionText |
資源の設備や用途を説明する文章です。0〜1,000文字です。 |
kind |
ResourceKind |
会議室または備品を表す資源種別です。 |
active |
bool |
新規予約を受け付けるかどうかです。 |
version |
RowVersion |
編集前に取得した資源の公開版です。 |
2. 正常系前提
- 条件分岐: 呼び出し元が資源を管理できる管理者でない場合。: 不成立
- 条件分岐: 編集要求の公開版が資源の現在の公開版と一致しない場合。: 不成立
- 条件分岐: 無効化する資源に開始前の確定予約が残っている場合。: 不成立
- 例外処理: ROUTER_HANDLED_EXCEPTIONS: 発生しない
3. 正常系リソース変更
DB resources 更新 (001_update_resources_control_version.sql)
- SQL:
001_update_resources_control_version.sql
- 目的: 同一資源の予約作成・取消と競合させるため、資源の内部制御版を進めて現在値を取得する。
| カラム |
カラム説明 |
パラメータ/SQL式 |
値の取得元 |
control_version |
同一資源の予約作成・取消・無効化を競合させる内部制御版。 |
control_version + 1 |
SQL式: control_version + 1 |
DB resources 更新 (003_update_resources.sql)
- SQL:
003_update_resources.sql
- 目的: 資源の名前・説明・種別・有効状態を更新し、公開版を1つ進める。
| カラム |
カラム説明 |
パラメータ/SQL式 |
値の取得元 |
name |
資源名。空白除去後1〜100文字。 |
name |
request.body.name |
description |
資源の説明。0〜1,000文字。 |
description |
request.body.description |
kind |
資源種別。roomまたはequipment。 |
kind |
request.body.kind |
active |
新規予約を受け付けるかどうか。 |
active |
request.body.active |
row_version |
利用者に公開する楽観ロック用の行バージョン。 |
row_version + 1 |
SQL式: row_version + 1 |
4. 正常系レスポンス
- Response model:
UpdateResourceResponse
| 項目 |
説明 |
値の取得元 |
resourceId |
予約対象の資源を一意に識別するIDです。 |
resource.resource_id |
name |
利用者に表示する資源名です。 |
resource.name |
description |
資源の設備や用途を説明する文章です。 |
resource.description |
kind |
会議室または備品を表す資源種別です。 |
resource.kind |
active |
新規予約を受け付けるかどうかです。 |
resource.active |
version |
資源編集の楽観ロックに使う公開版です。 |
resource.version |