From 1d59fb1b6d3ba825af2ecbcfe4c9ef2e96d7a7d9 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 4 Aug 2026 08:57:26 +0000 Subject: [PATCH] fix(reports): use reservations.id in occupancy-trend SQL Drizzle does not alias reservations as r, so count(distinct r.id) raised "missing FROM-clause entry for table r" and 500'd the occupancy-trend (and booking-pace) reports. Co-authored-by: telivity-otaip --- apps/api/src/modules/reports/reports.service.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/api/src/modules/reports/reports.service.ts b/apps/api/src/modules/reports/reports.service.ts index 87f745d8..12d8fe00 100644 --- a/apps/api/src/modules/reports/reports.service.ts +++ b/apps/api/src/modules/reports/reports.service.ts @@ -440,7 +440,8 @@ export class ReportsService { const dailyRoomsSold = await this.db .select({ date: sql`d.d::date`, - count: sql`count(distinct r.id)::int`, + // Must use the drizzle table ref — alias "r" is not in the generated FROM. + count: sql`count(distinct ${reservations.id})::int`, }) .from(sql`generate_series(${startDate}::date, ${endDate}::date, '1 day'::interval) as d(d)`) .leftJoin( @@ -894,7 +895,8 @@ export class ReportsService { const dailyOnBooks = await this.db .select({ date: sql`d.d::date`, - count: sql`count(distinct r.id)::int`, + // Must use the drizzle table ref — alias "r" is not in the generated FROM. + count: sql`count(distinct ${reservations.id})::int`, }) .from(sql`generate_series(${startDate}::date, ${endDate}::date, '1 day'::interval) as d(d)`) .leftJoin(