From bbf569e8bccec93d819dea622a9c38dc665e7647 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Fri, 20 Feb 2026 15:03:24 -0800 Subject: [PATCH] fix cohort queries with new multiselect --- src/lib/clickhouse.ts | 5 ++++- src/lib/prisma.ts | 5 ++++- src/lib/request.ts | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/lib/clickhouse.ts b/src/lib/clickhouse.ts index 3620a04ce..bb3976c71 100644 --- a/src/lib/clickhouse.ts +++ b/src/lib/clickhouse.ts @@ -178,7 +178,10 @@ function getQueryParams(filters: Record) { return { ...filters, ...filtersObjectToArray(filters).reduce((obj, { name, column, operator, value }) => { - if (!column || !name || value === undefined) return obj; + const resolvedColumn = + column || (name?.startsWith('cohort_') && FILTER_COLUMNS[name.slice('cohort_'.length)]); + + if (!resolvedColumn || !name || value === undefined) return obj; obj[name] = ([OPERATORS.equals, OPERATORS.notEquals] as string[]).includes(operator) ? Array.isArray(value) diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index b8cb82c4d..3d31fcf9b 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -182,7 +182,10 @@ function getQueryParams(filters: Record) { return { ...filters, ...filtersObjectToArray(filters).reduce((obj, { name, column, operator, value }) => { - if (!column) return obj; + const resolvedColumn = + column || (name?.startsWith('cohort_') && FILTER_COLUMNS[name.slice('cohort_'.length)]); + + if (!resolvedColumn) return obj; if (([OPERATORS.contains, OPERATORS.doesNotContain] as Operator[]).includes(operator)) { obj[name] = `%${value}%`; diff --git a/src/lib/request.ts b/src/lib/request.ts index 0b7c1a424..e89f5722f 100644 --- a/src/lib/request.ts +++ b/src/lib/request.ts @@ -1,7 +1,7 @@ import { startOfMonth, subMonths } from 'date-fns'; import { z } from 'zod'; import { checkAuth } from '@/lib/auth'; -import { DEFAULT_PAGE_SIZE, FILTER_COLUMNS } from '@/lib/constants'; +import { DEFAULT_PAGE_SIZE, FILTER_COLUMNS, OPERATORS } from '@/lib/constants'; import { getAllowedUnits, getMinimumUnit, maxDate, parseDateRange } from '@/lib/date'; import { fetchAccount, fetchWebsite } from '@/lib/load'; import { filtersArrayToObject } from '@/lib/params'; @@ -130,7 +130,7 @@ export async function getQueryFilters( cohortFilters.push({ name: `cohort_${cohortParams.action.type}`, - operator: 'eq', + operator: OPERATORS.equals, value: cohortParams.action.value, });