From 3072f02f1bc2a5fad3347a0389706ea087029aeb Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Fri, 19 Dec 2025 13:32:20 -0800 Subject: [PATCH] =?UTF-8?q?Add=20table=20alias=20to=20filterQuery.=20Close?= =?UTF-8?q?d=20=C2=A0#3869?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/prisma.ts | 14 ++++++++++---- src/queries/sql/reports/getRevenue.ts | 7 ++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index 64cb870f..bfd007d1 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -74,15 +74,21 @@ function getSearchSQL(column: string, param: string = 'search'): string { function mapFilter(column: string, operator: string, name: string, type: string = '') { const value = `{{${name}${type ? `::${type}` : ''}}}`; + if (name.startsWith('cohort_')) { + name = name.slice('cohort_'.length); + } + + const table = SESSION_COLUMNS.includes(name) ? 'session' : 'website_event'; + switch (operator) { case OPERATORS.equals: - return `${column} = ${value}`; + return `${table}.${column} = ${value}`; case OPERATORS.notEquals: - return `${column} != ${value}`; + return `${table}.${column} != ${value}`; case OPERATORS.contains: - return `${column} ilike ${value}`; + return `${table}.${column} ilike ${value}`; case OPERATORS.doesNotContain: - return `${column} not ilike ${value}`; + return `${table}.${column} not ilike ${value}`; default: return ''; } diff --git a/src/queries/sql/reports/getRevenue.ts b/src/queries/sql/reports/getRevenue.ts index 19b75d42..2a4604fe 100644 --- a/src/queries/sql/reports/getRevenue.ts +++ b/src/queries/sql/reports/getRevenue.ts @@ -41,14 +41,15 @@ async function relationalQuery( currency, }); - const joinQuery = filterQuery - ? `join website_event + const joinQuery = + filterQuery || cohortQuery + ? `join website_event on website_event.website_id = revenue.website_id and website_event.session_id = revenue.session_id and website_event.event_id = revenue.event_id and website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}}` - : ''; + : ''; const chart = await rawQuery( `