SlotKeeper 設計と品質

get_resource_schedule query

001_select_resources.sql

SQL種別

SELECT

SQLの概要

予約表の対象資源が存在することを確認するため、資源IDを取得する。

利用するテーブル

  • resources

引数

DDLテーブル DDL項目 SQL項目 日本語名 型 nullable
resources resource_id resource_id 資源ID。 VARCHAR(36) no

戻り値

DDLテーブル DDL項目 SQL項目 日本語名 型 nullable
resources resource_id resource_id 資源ID。 VARCHAR(36) no

条件

  • WHERE
    • resources.resource_id = @resource_id

002_select_reservations.sql

SQL種別

SELECT

SQLの概要

指定日の予約表を返すため、日付範囲に重なる確定予約を開始日時とIDの順に取得する。

利用するテーブル

  • reservations

引数

DDLテーブル DDL項目 SQL項目 日本語名 型 nullable
reservations resource_id resource_id 予約対象の資源ID。 VARCHAR(36) no
reservations start_at day_end 予約開始日時。UTCで保存する。 TIMESTAMPTZ no
reservations end_at day_start 予約終了日時。UTCで保存し、この時刻を含まない。 TIMESTAMPTZ no
- after_start_at after_start_at - datetime | None yes
- after_reservation_id after_reservation_id - str | None yes
- limit limit - int no

戻り値

DDLテーブル DDL項目 SQL項目 日本語名 型 nullable
reservations reservation_id reservation_id 予約ID。 VARCHAR(36) no
reservations resource_id resource_id 予約対象の資源ID。 VARCHAR(36) no
reservations owner_principal_id owner_principal_id 予約者の認証subject。 VARCHAR(200) no
reservations start_at start_at 予約開始日時。UTCで保存する。 TIMESTAMPTZ no
reservations end_at end_at 予約終了日時。UTCで保存し、この時刻を含まない。 TIMESTAMPTZ no
reservations purpose purpose 予約目的。1〜200文字。本人と管理者だけに返す。 VARCHAR(200) no
reservations status status 予約状態。confirmedまたはcancelled。 VARCHAR(20) no
reservations row_version row_version 楽観ロック用の行バージョン。 INT no

条件

  • WHERE
    • reservations.resource_id = @resource_id
    • AND reservations.status = 'confirmed'
    • AND reservations.start_at < @day_end
    • AND reservations.end_at > @day_start
    • AND (CAST(@after_start_at AS TIMESTAMPTZ) IS NULL
    • OR CAST(@after_reservation_id AS VARCHAR) IS NULL
    • OR (reservations.start_at, reservations.reservation_id) > (CAST(@after_start_at AS TIMESTAMPTZ), CAST(@after_reservation_id AS VARCHAR)))