I have the following code:
<code>overlapping: Sequence[Booking] = (
await session.exec(
select(Booking)
.join(Apartment)
.join(User)
.where(
Range(
lower=booking.end_date,
upper=booking.cleaning_deadline,
bounds="[]",
).overlaps(Range(Booking.end_date, Booking.cleaning_deadline))
)
)
).all()
</code>
<code>overlapping: Sequence[Booking] = (
await session.exec(
select(Booking)
.join(Apartment)
.join(User)
.where(
Range(
lower=booking.end_date,
upper=booking.cleaning_deadline,
bounds="[]",
).overlaps(Range(Booking.end_date, Booking.cleaning_deadline))
)
)
).all()
</code>
overlapping: Sequence[Booking] = (
await session.exec(
select(Booking)
.join(Apartment)
.join(User)
.where(
Range(
lower=booking.end_date,
upper=booking.cleaning_deadline,
bounds="[]",
).overlaps(Range(Booking.end_date, Booking.cleaning_deadline))
)
)
).all()
It produces this output:
<code>Traceback (most recent call last):
...
File "/home/jakov/Projects/intis/src/web/server.py", line 120, in import_calendar
).overlaps(Range(Booking.end_date, Booking.cleaning_deadline))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jakov/.cache/pypoetry/virtualenvs/intis-I4I4liA8-py3.12/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/ranges.py", line 381, in overlaps
self._compare_edges(slower, slower_b, olower, olower_b) >= 0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jakov/.cache/pypoetry/virtualenvs/intis-I4I4liA8-py3.12/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/ranges.py", line 274, in _compare_edges
if value1 < value2: # type: ignore
^^^^^^^^^^^^^^^
File "/home/jakov/.cache/pypoetry/virtualenvs/intis-I4I4liA8-py3.12/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 3938, in __bool__
raise TypeError("Boolean value of this clause is not defined")
TypeError: Boolean value of this clause is not defined
</code>
<code>Traceback (most recent call last):
...
File "/home/jakov/Projects/intis/src/web/server.py", line 120, in import_calendar
).overlaps(Range(Booking.end_date, Booking.cleaning_deadline))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jakov/.cache/pypoetry/virtualenvs/intis-I4I4liA8-py3.12/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/ranges.py", line 381, in overlaps
self._compare_edges(slower, slower_b, olower, olower_b) >= 0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jakov/.cache/pypoetry/virtualenvs/intis-I4I4liA8-py3.12/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/ranges.py", line 274, in _compare_edges
if value1 < value2: # type: ignore
^^^^^^^^^^^^^^^
File "/home/jakov/.cache/pypoetry/virtualenvs/intis-I4I4liA8-py3.12/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 3938, in __bool__
raise TypeError("Boolean value of this clause is not defined")
TypeError: Boolean value of this clause is not defined
</code>
Traceback (most recent call last):
...
File "/home/jakov/Projects/intis/src/web/server.py", line 120, in import_calendar
).overlaps(Range(Booking.end_date, Booking.cleaning_deadline))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jakov/.cache/pypoetry/virtualenvs/intis-I4I4liA8-py3.12/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/ranges.py", line 381, in overlaps
self._compare_edges(slower, slower_b, olower, olower_b) >= 0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jakov/.cache/pypoetry/virtualenvs/intis-I4I4liA8-py3.12/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/ranges.py", line 274, in _compare_edges
if value1 < value2: # type: ignore
^^^^^^^^^^^^^^^
File "/home/jakov/.cache/pypoetry/virtualenvs/intis-I4I4liA8-py3.12/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 3938, in __bool__
raise TypeError("Boolean value of this clause is not defined")
TypeError: Boolean value of this clause is not defined
Basically I want to do this query via the ORM:
<code>select * from booking b where (b.end_date , b.cleaning_deadline) overlaps (?, ?);
</code>
<code>select * from booking b where (b.end_date , b.cleaning_deadline) overlaps (?, ?);
</code>
select * from booking b where (b.end_date , b.cleaning_deadline) overlaps (?, ?);
I’ve tested it on the database and it works, but I cannot get SQLAlchemy to do what I want it to do.