A date shown as free in a calendar may be unavailable once return inspection or preparation is included. Before buying a hire-booking website, define the resource identity, interval boundaries and turnaround rule. This brief covers one named physical asset, not a fleet forecast or a live booking integration.
Technical fact, business assumption
PostgreSQL 17 documents range boundaries and exclusion constraints for non-overlapping reservations. Checked 16 October 2026. That establishes one possible enforcement mechanism, not a deployed database or a universal hire policy. The business’s turnaround duration remains an explicit input.
Filled interval matrix
Synthetic same-day example, AEDT: asset A is hired from 09:00 until 12:00. Intervals are half-open: the end is excluded. The business separately requires 60 minutes after return, making A unavailable until 13:00. There is no travel time in this fixture.
On narrow screens, scroll sideways to read the full table.
| Request | Without buffer | With 60-minute buffer | Decision |
|---|---|---|---|
| A, 11:30–12:30 | Overlap | Overlap | Do not confirm |
| A, 12:00–13:00 | Adjacent, no overlap | Conflicts until 13:00 | Do not confirm under buffer rule |
| A, 13:00–14:00 | No overlap | Adjacent, no overlap | May proceed to other checks |
| B, 10:00–11:00 | Different asset | Different asset | Check B’s own records |
| A, missing return time | Unknown | Unknown | Manual review |
Choose an honest booking mode
If asset identity or turnaround is unknown, a request-to-book form can collect preferred times without confirming availability. Instant confirmation needs an authoritative allocation mechanism. A front-end calendar alone is insufficient. A pooled fleet needs a capacity model and cannot use this single-asset constraint unchanged.
Acceptance sequence
- Give the supplier the exact asset ID and the business-approved buffer.
- Replay all matrix rows, including the exact 12:00 and 13:00 boundaries.
- In an isolated system test, make two concurrent requests for the same interval; require one authoritative outcome rather than two green calendar screens.
- Test cancellation, delayed return and preparation overrun separately before enabling automatic confirmation.
Required output
Keep resource ID, timezone, start, return, preparation end, overlap IDs and allocation status. A rejected request should show a useful alternative or an enquiry path without revealing another customer’s details. “May proceed” means other checks remain; it is not proof of payment or a confirmed hire.
Limits
The download compares numeric teaching intervals serially. It does not execute SQL, lock stock, handle timezones or test a production race. Confirm timezone conversion, staff availability, maintenance, delivery, deposits and legal terms separately. The Melbourne booking timezone resource handles clock interpretation, a separate problem from resource overlap.
Replay the teaching example
These files run locally without network access. They model only the stated cases, not a live vendor integration. Filled inputs and expected results · Inspectable teaching functions
Save both files in one folder. With Node 22.13 or newer, run:
node decision-check.mjs hire-availability-overlap-test.json