list_reservations query
001_select_reservations.sql
SQL種別
SELECT
SQLの概要
自分の予約一覧を返すため、日付・状態・将来予約の条件で開始日時とIDの順に取得する。
利用するテーブル
reservations
引数
| DDLテーブル | DDL項目 | SQL項目 | 日本語名 | 型 | nullable |
|---|---|---|---|---|---|
reservations |
owner_principal_id |
owner_principal_id |
予約者の認証subject。 | VARCHAR(200) |
no |
reservations |
start_at |
range_end |
予約開始日時。UTCで保存する。 | TIMESTAMPTZ |
no |
reservations |
end_at |
range_start |
予約終了日時。UTCで保存し、この時刻を含まない。 | TIMESTAMPTZ |
no |
reservations |
status |
status |
予約状態。confirmedまたはcancelled。 | VARCHAR(20) |
no |
- |
future_only |
future_only |
- | bool |
no |
reservations |
start_at |
now |
予約開始日時。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 |
条件
WHEREreservations.owner_principal_id = @owner_principal_idAND reservations.start_at < @range_endAND reservations.end_at > @range_startAND (CAST(@status AS VARCHAR) IS NULLOR reservations.status = @status)AND (NOT CAST(@future_only AS BOOLEAN)OR (reservations.status = 'confirmed'AND reservations.start_at > @now))AND (CAST(@after_start_at AS TIMESTAMPTZ) IS NULLOR CAST(@after_reservation_id AS VARCHAR) IS NULLOR (reservations.start_at, reservations.reservation_id) > (CAST(@after_start_at AS TIMESTAMPTZ), CAST(@after_reservation_id AS VARCHAR)))