SlotKeeper 設計と品質

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