From 4b5b8b30ed38fb77634ccb63789034ac9cc410e4 Mon Sep 17 00:00:00 2001 From: jtricerolph Date: Wed, 15 Jul 2026 08:42:15 +0000 Subject: [PATCH] Fix SQL syntax error in generate_series date cast (SQLAlchemy text() parsing) SQLAlchemy's text() parser treated the ':' in '::date' (PostgreSQL cast syntax) as a second unbound parameter after :start/:end, producing malformed SQL and crashing the scheduled Booking.com scrape silently with no history entry written. Co-Authored-By: Claude Sonnet 4.6 --- backend/jobs/scrape_booking_rates.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/jobs/scrape_booking_rates.py b/backend/jobs/scrape_booking_rates.py index 1b74a25..14861ea 100644 --- a/backend/jobs/scrape_booking_rates.py +++ b/backend/jobs/scrape_booking_rates.py @@ -69,7 +69,7 @@ def _get_oldest_scraped_dates(db: Session, start: date, end: date, limit: int) - text(""" SELECT s.rate_date::date AS rate_date, MAX(r.scraped_at) AS last_scraped - FROM generate_series(:start::date, :end::date, '1 day'::interval) AS s(rate_date) + FROM generate_series(CAST(:start AS date), CAST(:end AS date), INTERVAL '1 day') AS s(rate_date) LEFT JOIN booking_com_rates r ON r.rate_date = s.rate_date::date GROUP BY s.rate_date ORDER BY last_scraped ASC NULLS FIRST