ExBooking.Hold (ExBooking v0.1.0)

View Source

Temporary reservation data.

Holds are caller-owned records. The kernel can emit a reserve intent, treat holds as busy intervals on later searches, and compute a release transition; it never stores, expires, or refreshes them itself.

Example

iex> slot = ExBooking.Interval.new!(~U[2026-07-13 09:00:00Z], ~U[2026-07-13 09:30:00Z])
...>
...> hold = %ExBooking.Hold{
...>   id: "hold_1",
...>   slot: slot,
...>   resource_ids: ["resource_1"],
...>   meeting_type_id: "intro",
...>   expires_at: ~U[2026-07-13 08:45:00Z]
...> }
...>
...> hold.id
"hold_1"

Summary

Types

t()

A hold on a slot.

Types

t()

@type t() :: %ExBooking.Hold{
  expires_at: DateTime.t(),
  id: String.t(),
  meeting_type_id: String.t(),
  resource_ids: [String.t()],
  slot: ExBooking.Interval.t()
}

A hold on a slot.