diff --git a/src/app/(main)/websites/[websiteId]/WebsiteControls.tsx b/src/app/(main)/websites/[websiteId]/WebsiteControls.tsx index ea993ac0d..6223dbc0b 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteControls.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteControls.tsx @@ -1,5 +1,4 @@ import { Column, Grid, Row } from '@umami/react-zen'; -import { BounceFilter } from '@/components/input/BounceFilter'; import { ExportButton } from '@/components/input/ExportButton'; import { FilterBar } from '@/components/input/FilterBar'; import { MonthFilter } from '@/components/input/MonthFilter'; @@ -9,7 +8,6 @@ import { WebsiteFilterButton } from '@/components/input/WebsiteFilterButton'; export function WebsiteControls({ websiteId, allowFilter = true, - allowBounceFilter = false, allowDateFilter = true, allowMonthFilter, allowDownload = false, @@ -17,7 +15,6 @@ export function WebsiteControls({ }: { websiteId: string; allowFilter?: boolean; - allowBounceFilter?: boolean; allowDateFilter?: boolean; allowMonthFilter?: boolean; allowDownload?: boolean; @@ -26,9 +23,8 @@ export function WebsiteControls({ return ( - - {allowFilter && } - {allowBounceFilter && } + + {allowFilter ? :
} {allowDateFilter && ( diff --git a/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx b/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx index 2bc2fa1cf..9f72c303d 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx @@ -30,7 +30,6 @@ export function WebsiteNav({ compare: undefined, view: undefined, unit: undefined, - excludeBounce: undefined, }); const items = [ diff --git a/src/app/(main)/websites/[websiteId]/WebsitePage.tsx b/src/app/(main)/websites/[websiteId]/WebsitePage.tsx index 5412421e5..5acc9e682 100644 --- a/src/app/(main)/websites/[websiteId]/WebsitePage.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsitePage.tsx @@ -11,7 +11,7 @@ import { WebsitePanels } from './WebsitePanels'; export function WebsitePage({ websiteId }: { websiteId: string }) { return ( - + diff --git a/src/app/api/share/route.ts b/src/app/api/share/route.ts index de8472fa5..a772b4ab4 100644 --- a/src/app/api/share/route.ts +++ b/src/app/api/share/route.ts @@ -11,7 +11,6 @@ export async function POST(request: Request) { const schema = z.object({ entityId: z.uuid(), shareType: z.coerce.number().int(), - name: z.string().max(200), slug: z.string().max(100).optional(), parameters: anyObjectParam, }); @@ -22,8 +21,7 @@ export async function POST(request: Request) { return error(); } - const { entityId, shareType, name, slug, parameters } = body; - const shareParameters = parameters ?? {}; + const { entityId, shareType, slug, parameters } = body; if (!(await canUpdateEntity(auth, entityId))) { return unauthorized(); @@ -33,9 +31,8 @@ export async function POST(request: Request) { id: uuid(), entityId, shareType, - name, slug: slug || getRandomChars(16), - parameters: shareParameters, + parameters, }); return json(share); diff --git a/src/app/api/websites/route.ts b/src/app/api/websites/route.ts index 29e799650..dd8e0ffdd 100644 --- a/src/app/api/websites/route.ts +++ b/src/app/api/websites/route.ts @@ -38,6 +38,7 @@ export async function POST(request: Request) { const schema = z.object({ name: z.string().max(100), domain: z.string().max(500), + shareId: z.string().max(50).nullable().optional(), teamId: z.uuid().nullable().optional(), id: z.uuid().nullable().optional(), }); @@ -48,7 +49,7 @@ export async function POST(request: Request) { return error(); } - const { id, name, domain, teamId } = body; + const { id, name, domain, shareId, teamId } = body; if (process.env.CLOUD_MODE && !teamId) { const account = await fetchAccount(auth.user.id); @@ -71,6 +72,7 @@ export async function POST(request: Request) { createdBy: auth.user.id, name, domain, + shareId, teamId, }; diff --git a/src/components/hooks/useFilterParameters.ts b/src/components/hooks/useFilterParameters.ts index 77edf8837..c141a3be8 100644 --- a/src/components/hooks/useFilterParameters.ts +++ b/src/components/hooks/useFilterParameters.ts @@ -24,7 +24,6 @@ export function useFilterParameters() { search, segment, cohort, - excludeBounce, }, } = useNavigation(); @@ -48,7 +47,6 @@ export function useFilterParameters() { search, segment, cohort, - excludeBounce, }; }, [ path, @@ -71,6 +69,5 @@ export function useFilterParameters() { search, segment, cohort, - excludeBounce, ]); } diff --git a/src/components/input/BounceFilter.tsx b/src/components/input/BounceFilter.tsx deleted file mode 100644 index e8a4b31b6..000000000 --- a/src/components/input/BounceFilter.tsx +++ /dev/null @@ -1,26 +0,0 @@ -'use client'; -import { Checkbox, Row } from '@umami/react-zen'; -import { useMessages } from '@/components/hooks/useMessages'; -import { useNavigation } from '@/components/hooks/useNavigation'; - -export function BounceFilter() { - const { router, query, updateParams } = useNavigation(); - const { formatMessage, labels } = useMessages(); - const isSelected = query.excludeBounce === 'true'; - - const handleChange = (value: boolean) => { - if (value) { - router.push(updateParams({ excludeBounce: 'true' })); - } else { - router.push(updateParams({ excludeBounce: undefined })); - } - }; - - return ( - - - {formatMessage(labels.excludeBounce)} - - - ); -} diff --git a/src/components/messages.ts b/src/components/messages.ts index cebb8c1db..de29c3064 100644 --- a/src/components/messages.ts +++ b/src/components/messages.ts @@ -111,7 +111,6 @@ export const labels = defineMessages({ event: { id: 'label.event', defaultMessage: 'Event' }, events: { id: 'label.events', defaultMessage: 'Events' }, eventName: { id: 'label.event-name', defaultMessage: 'Event name' }, - excludeBounce: { id: 'label.exclude-bounce', defaultMessage: 'Exclude bounces' }, query: { id: 'label.query', defaultMessage: 'Query' }, queryParameters: { id: 'label.query-parameters', defaultMessage: 'Query parameters' }, back: { id: 'label.back', defaultMessage: 'Back' }, diff --git a/src/lib/clickhouse.ts b/src/lib/clickhouse.ts index 3160dbfea..0a336f804 100644 --- a/src/lib/clickhouse.ts +++ b/src/lib/clickhouse.ts @@ -131,25 +131,6 @@ function getCohortQuery(filters: Record) { `; } -function getExcludeBounceQuery(filters: Record) { - if (!filters.excludeBounce === true) { - return ''; - } - - return `join - (select distinct session_id, visit_id - from website_event - where website_id = {websiteId:UUID} - and created_at between {startDate:DateTime64} and {endDate:DateTime64} - and event_type = 1 - group by session_id, visit_id - having count(*) > 1 - ) excludeBounce - on excludeBounce.session_id = website_event.session_id - and excludeBounce.visit_id = website_event.visit_id - `; -} - function getDateQuery(filters: Record) { const { startDate, endDate, timezone } = filters; @@ -193,7 +174,6 @@ function parseFilters(filters: Record, options?: QueryOptions) { dateQuery: getDateQuery(filters), queryParams: getQueryParams(filters), cohortQuery: getCohortQuery(cohortFilters), - excludeBounceQuery: getExcludeBounceQuery(filters), }; } diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index 41e42fbcc..c2f98b573 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -141,25 +141,6 @@ function getCohortQuery(filters: QueryFilters = {}) { `; } -function getExcludeBounceQuery(filters: Record) { - if (!filters.excludeBounce === true) { - return ''; - } - - return `join - (select distinct session_id, visit_id - from website_event - where website_id = {{websiteId}} - and created_at between {{startDate}} and {{endDate}} - and event_type = 1 - group by session_id, visit_id - having count(*) > 1 - ) excludeBounce - on excludeBounce.session_id = website_event.session_id - and excludeBounce.visit_id = website_event.visit_id - `; -} - function getDateQuery(filters: Record) { const { startDate, endDate } = filters; @@ -205,7 +186,6 @@ function parseFilters(filters: Record, options?: QueryOptions) { filterQuery: getFilterQuery(filters, options), queryParams: getQueryParams(filters), cohortQuery: getCohortQuery(cohortFilters), - excludeBounceQuery: getExcludeBounceQuery(filters), }; } diff --git a/src/lib/request.ts b/src/lib/request.ts index 0b7c1a424..7f9163cca 100644 --- a/src/lib/request.ts +++ b/src/lib/request.ts @@ -140,10 +140,6 @@ export async function getQueryFilters( cohort_endDate: endDate, }); } - - if (params.excludeBounce) { - Object.assign(filters, { excludeBounce: true }); - } } return { diff --git a/src/lib/schema.ts b/src/lib/schema.ts index 020ed0c25..a3c56a0f1 100644 --- a/src/lib/schema.ts +++ b/src/lib/schema.ts @@ -42,7 +42,6 @@ export const filterParams = { segment: z.uuid().optional(), cohort: z.uuid().optional(), eventType: z.coerce.number().int().positive().optional(), - excludeBounce: z.string().optional(), }; export const searchParams = { diff --git a/src/lib/types.ts b/src/lib/types.ts index 9a6775a01..f3466734d 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -90,7 +90,6 @@ export interface FilterParams { segment?: string; cohort?: string; compare?: string; - excludeBounce?: boolean; } export interface SortParams { diff --git a/src/queries/sql/getChannelExpandedMetrics.ts b/src/queries/sql/getChannelExpandedMetrics.ts index 2a055ff36..f674d182f 100644 --- a/src/queries/sql/getChannelExpandedMetrics.ts +++ b/src/queries/sql/getChannelExpandedMetrics.ts @@ -41,11 +41,10 @@ async function relationalQuery( filters: QueryFilters, ): Promise { const { rawQuery, parseFilters, getTimestampDiffSQL } = prisma; - const { queryParams, filterQuery, joinSessionQuery, cohortQuery, excludeBounceQuery, dateQuery } = - parseFilters({ - ...filters, - websiteId, - }); + const { queryParams, filterQuery, joinSessionQuery, cohortQuery, dateQuery } = parseFilters({ + ...filters, + websiteId, + }); return rawQuery( ` @@ -65,7 +64,6 @@ async function relationalQuery( max(website_event.created_at) max_time from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} where website_event.website_id = {{websiteId::uuid}} and website_event.event_type != 2 @@ -121,7 +119,7 @@ async function clickhouseQuery( filters: QueryFilters, ): Promise { const { rawQuery, parseFilters } = clickhouse; - const { queryParams, filterQuery, cohortQuery, excludeBounceQuery } = parseFilters({ + const { queryParams, filterQuery, cohortQuery } = parseFilters({ ...filters, websiteId, }); @@ -168,7 +166,6 @@ async function clickhouseQuery( max(created_at) max_time from website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 diff --git a/src/queries/sql/getChannelMetrics.ts b/src/queries/sql/getChannelMetrics.ts index 9d14af058..78e4142ef 100644 --- a/src/queries/sql/getChannelMetrics.ts +++ b/src/queries/sql/getChannelMetrics.ts @@ -22,11 +22,10 @@ export async function getChannelMetrics(...args: [websiteId: string, filters?: Q async function relationalQuery(websiteId: string, filters: QueryFilters) { const { rawQuery, parseFilters } = prisma; - const { queryParams, filterQuery, joinSessionQuery, cohortQuery, excludeBounceQuery, dateQuery } = - parseFilters({ - ...filters, - websiteId, - }); + const { queryParams, filterQuery, joinSessionQuery, cohortQuery, dateQuery } = parseFilters({ + ...filters, + websiteId, + }); return rawQuery( ` @@ -42,7 +41,6 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) { website_event.session_id from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} where website_event.website_id = {{websiteId::uuid}} and website_event.event_type != 2 @@ -83,7 +81,7 @@ async function clickhouseQuery( filters: QueryFilters, ): Promise<{ x: string; y: number }[]> { const { rawQuery, parseFilters } = clickhouse; - const { queryParams, filterQuery, cohortQuery, excludeBounceQuery, dateQuery } = parseFilters({ + const { queryParams, filterQuery, cohortQuery, dateQuery } = parseFilters({ ...filters, websiteId, }); @@ -118,7 +116,6 @@ async function clickhouseQuery( count(distinct session_id) y from website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and event_type != 2 ${dateQuery} diff --git a/src/queries/sql/getWebsiteStats.ts b/src/queries/sql/getWebsiteStats.ts index 7aceff9f1..69068394d 100644 --- a/src/queries/sql/getWebsiteStats.ts +++ b/src/queries/sql/getWebsiteStats.ts @@ -28,11 +28,10 @@ async function relationalQuery( filters: QueryFilters, ): Promise { const { getTimestampDiffSQL, parseFilters, rawQuery } = prisma; - const { filterQuery, joinSessionQuery, cohortQuery, excludeBounceQuery, queryParams } = - parseFilters({ - ...filters, - websiteId, - }); + const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters({ + ...filters, + websiteId, + }); return rawQuery( ` @@ -51,14 +50,12 @@ async function relationalQuery( max(website_event.created_at) as "max_time" from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} and website_event.event_type != 2 ${filterQuery} group by 1, 2 - ) as t `, queryParams, @@ -71,7 +68,7 @@ async function clickhouseQuery( filters: QueryFilters, ): Promise { const { rawQuery, parseFilters } = clickhouse; - const { filterQuery, cohortQuery, excludeBounceQuery, queryParams } = parseFilters({ + const { filterQuery, cohortQuery, queryParams } = parseFilters({ ...filters, websiteId, }); @@ -95,7 +92,6 @@ async function clickhouseQuery( max(created_at) max_time from website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 @@ -119,7 +115,6 @@ async function clickhouseQuery( max(max_time) max_time from website_event_stats_hourly "website_event" ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 diff --git a/src/queries/sql/getWeeklyTraffic.ts b/src/queries/sql/getWeeklyTraffic.ts index f129048fb..1868b9221 100644 --- a/src/queries/sql/getWeeklyTraffic.ts +++ b/src/queries/sql/getWeeklyTraffic.ts @@ -16,11 +16,10 @@ export async function getWeeklyTraffic(...args: [websiteId: string, filters: Que async function relationalQuery(websiteId: string, filters: QueryFilters) { const { timezone = 'utc' } = filters; const { rawQuery, getDateWeeklySQL, parseFilters } = prisma; - const { filterQuery, joinSessionQuery, cohortQuery, excludeBounceQuery, queryParams } = - parseFilters({ - ...filters, - websiteId, - }); + const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters({ + ...filters, + websiteId, + }); return rawQuery( ` @@ -29,7 +28,6 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) { count(distinct website_event.session_id) as value from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} @@ -45,10 +43,7 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) { async function clickhouseQuery(websiteId: string, filters: QueryFilters) { const { timezone = 'utc' } = filters; const { rawQuery, parseFilters } = clickhouse; - const { filterQuery, cohortQuery, excludeBounceQuery, queryParams } = await parseFilters({ - ...filters, - websiteId, - }); + const { filterQuery, cohortQuery, queryParams } = await parseFilters({ ...filters, websiteId }); let sql = ''; @@ -72,7 +67,6 @@ async function clickhouseQuery(websiteId: string, filters: QueryFilters) { count(distinct session_id) as value from website_event_stats_hourly website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} ${filterQuery} diff --git a/src/queries/sql/pageviews/getPageviewExpandedMetrics.ts b/src/queries/sql/pageviews/getPageviewExpandedMetrics.ts index 29576a478..54164973c 100644 --- a/src/queries/sql/pageviews/getPageviewExpandedMetrics.ts +++ b/src/queries/sql/pageviews/getPageviewExpandedMetrics.ts @@ -38,14 +38,13 @@ async function relationalQuery( const { type, limit = 500, offset = 0 } = parameters; let column = FILTER_COLUMNS[type] || type; const { rawQuery, parseFilters, getTimestampDiffSQL } = prisma; - const { filterQuery, joinSessionQuery, cohortQuery, excludeBounceQuery, queryParams } = - parseFilters( - { - ...filters, - websiteId, - }, - { joinSession: SESSION_COLUMNS.includes(type) }, - ); + const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters( + { + ...filters, + websiteId, + }, + { joinSession: SESSION_COLUMNS.includes(type) }, + ); let entryExitQuery = ''; let excludeDomain = ''; @@ -95,7 +94,6 @@ async function relationalQuery( max(website_event.created_at) as "max_time" from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} ${entryExitQuery} where website_event.website_id = {{websiteId::uuid}} @@ -124,7 +122,7 @@ async function clickhouseQuery( const { type, limit = 500, offset = 0 } = parameters; let column = FILTER_COLUMNS[type] || type; const { rawQuery, parseFilters } = clickhouse; - const { filterQuery, cohortQuery, excludeBounceQuery, queryParams } = parseFilters({ + const { filterQuery, cohortQuery, queryParams } = parseFilters({ ...filters, websiteId, }); @@ -173,7 +171,6 @@ async function clickhouseQuery( max(created_at) max_time from website_event ${cohortQuery} - ${excludeBounceQuery} ${entryExitQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} diff --git a/src/queries/sql/pageviews/getPageviewMetrics.ts b/src/queries/sql/pageviews/getPageviewMetrics.ts index 748d13665..b41ea0582 100644 --- a/src/queries/sql/pageviews/getPageviewMetrics.ts +++ b/src/queries/sql/pageviews/getPageviewMetrics.ts @@ -34,14 +34,13 @@ async function relationalQuery( const { type, limit = 500, offset = 0 } = parameters; let column = FILTER_COLUMNS[type] || type; const { rawQuery, parseFilters } = prisma; - const { filterQuery, joinSessionQuery, cohortQuery, excludeBounceQuery, queryParams } = - parseFilters( - { - ...filters, - websiteId, - }, - { joinSession: SESSION_COLUMNS.includes(type) }, - ); + const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters( + { + ...filters, + websiteId, + }, + { joinSession: SESSION_COLUMNS.includes(type) }, + ); let entryExitQuery = ''; let excludeDomain = ''; @@ -76,7 +75,6 @@ async function relationalQuery( count(distinct website_event.session_id) as y from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} ${entryExitQuery} where website_event.website_id = {{websiteId::uuid}} @@ -102,7 +100,7 @@ async function clickhouseQuery( const { type, limit = 500, offset = 0 } = parameters; let column = FILTER_COLUMNS[type] || type; const { rawQuery, parseFilters } = clickhouse; - const { filterQuery, cohortQuery, excludeBounceQuery, queryParams } = parseFilters({ + const { filterQuery, cohortQuery, queryParams } = parseFilters({ ...filters, websiteId, }); @@ -137,7 +135,6 @@ async function clickhouseQuery( uniq(website_event.session_id) as y from website_event ${cohortQuery} - ${excludeBounceQuery} ${entryExitQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} @@ -177,7 +174,6 @@ async function clickhouseQuery( ${columnQuery} as t from website_event_stats_hourly as website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 diff --git a/src/queries/sql/pageviews/getPageviewStats.ts b/src/queries/sql/pageviews/getPageviewStats.ts index a0aa27689..251d5b142 100644 --- a/src/queries/sql/pageviews/getPageviewStats.ts +++ b/src/queries/sql/pageviews/getPageviewStats.ts @@ -16,11 +16,10 @@ export async function getPageviewStats(...args: [websiteId: string, filters: Que async function relationalQuery(websiteId: string, filters: QueryFilters) { const { timezone = 'utc', unit = 'day' } = filters; const { getDateSQL, parseFilters, rawQuery } = prisma; - const { filterQuery, cohortQuery, excludeBounceQuery, joinSessionQuery, queryParams } = - parseFilters({ - ...filters, - websiteId, - }); + const { filterQuery, cohortQuery, joinSessionQuery, queryParams } = parseFilters({ + ...filters, + websiteId, + }); return rawQuery( ` @@ -29,7 +28,6 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) { count(*) y from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} @@ -49,7 +47,7 @@ async function clickhouseQuery( ): Promise<{ x: string; y: number }[]> { const { timezone = 'UTC', unit = 'day' } = filters; const { parseFilters, rawQuery, getDateSQL } = clickhouse; - const { filterQuery, cohortQuery, excludeBounceQuery, queryParams } = parseFilters({ + const { filterQuery, cohortQuery, queryParams } = parseFilters({ ...filters, websiteId, }); @@ -67,7 +65,6 @@ async function clickhouseQuery( count(*) as y from website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 @@ -87,7 +84,6 @@ async function clickhouseQuery( sum(views) as y from website_event_stats_hourly as website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 diff --git a/src/queries/sql/sessions/getSessionExpandedMetrics.ts b/src/queries/sql/sessions/getSessionExpandedMetrics.ts index 24cad9433..6b85cd452 100644 --- a/src/queries/sql/sessions/getSessionExpandedMetrics.ts +++ b/src/queries/sql/sessions/getSessionExpandedMetrics.ts @@ -38,16 +38,15 @@ async function relationalQuery( const { type, limit = 500, offset = 0 } = parameters; let column = FILTER_COLUMNS[type] || type; const { parseFilters, rawQuery, getTimestampDiffSQL } = prisma; - const { filterQuery, joinSessionQuery, cohortQuery, excludeBounceQuery, queryParams } = - parseFilters( - { - ...filters, - websiteId, - }, - { - joinSession: SESSION_COLUMNS.includes(type), - }, - ); + const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters( + { + ...filters, + websiteId, + }, + { + joinSession: SESSION_COLUMNS.includes(type), + }, + ); const includeCountry = column === 'city' || column === 'region'; if (type === 'language') { @@ -75,7 +74,6 @@ async function relationalQuery( max(website_event.created_at) as "max_time" from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} @@ -104,7 +102,7 @@ async function clickhouseQuery( const { type, limit = 500, offset = 0 } = parameters; let column = FILTER_COLUMNS[type] || type; const { parseFilters, rawQuery } = clickhouse; - const { filterQuery, cohortQuery, excludeBounceQuery, queryParams } = parseFilters({ + const { filterQuery, cohortQuery, queryParams } = parseFilters({ ...filters, websiteId, }); @@ -135,7 +133,6 @@ async function clickhouseQuery( max(created_at) max_time from website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 diff --git a/src/queries/sql/sessions/getSessionMetrics.ts b/src/queries/sql/sessions/getSessionMetrics.ts index 32a915c4c..c519bdd0d 100644 --- a/src/queries/sql/sessions/getSessionMetrics.ts +++ b/src/queries/sql/sessions/getSessionMetrics.ts @@ -29,16 +29,15 @@ async function relationalQuery( const { type, limit = 500, offset = 0 } = parameters; let column = FILTER_COLUMNS[type] || type; const { parseFilters, rawQuery } = prisma; - const { filterQuery, joinSessionQuery, cohortQuery, excludeBounceQuery, queryParams } = - parseFilters( - { - ...filters, - websiteId, - }, - { - joinSession: SESSION_COLUMNS.includes(type), - }, - ); + const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters( + { + ...filters, + websiteId, + }, + { + joinSession: SESSION_COLUMNS.includes(type), + }, + ); const includeCountry = column === 'city' || column === 'region'; if (type === 'language') { @@ -53,7 +52,6 @@ async function relationalQuery( ${includeCountry ? ', country' : ''} from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} @@ -78,7 +76,7 @@ async function clickhouseQuery( const { type, limit = 500, offset = 0 } = parameters; let column = FILTER_COLUMNS[type] || type; const { parseFilters, rawQuery } = clickhouse; - const { filterQuery, cohortQuery, excludeBounceQuery, queryParams } = parseFilters({ + const { filterQuery, cohortQuery, queryParams } = parseFilters({ ...filters, websiteId, }); @@ -98,7 +96,6 @@ async function clickhouseQuery( ${includeCountry ? ', country' : ''} from website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 @@ -117,7 +114,6 @@ async function clickhouseQuery( ${includeCountry ? ', country' : ''} from website_event_stats_hourly as website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 diff --git a/src/queries/sql/sessions/getSessionStats.ts b/src/queries/sql/sessions/getSessionStats.ts index 150346810..fd457720c 100644 --- a/src/queries/sql/sessions/getSessionStats.ts +++ b/src/queries/sql/sessions/getSessionStats.ts @@ -16,11 +16,10 @@ export async function getSessionStats(...args: [websiteId: string, filters: Quer async function relationalQuery(websiteId: string, filters: QueryFilters) { const { timezone = 'utc', unit = 'day' } = filters; const { getDateSQL, parseFilters, rawQuery } = prisma; - const { filterQuery, joinSessionQuery, cohortQuery, excludeBounceQuery, queryParams } = - parseFilters({ - ...filters, - websiteId, - }); + const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters({ + ...filters, + websiteId, + }); return rawQuery( ` @@ -29,7 +28,6 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) { count(distinct website_event.session_id) y from website_event ${cohortQuery} - ${excludeBounceQuery} ${joinSessionQuery} where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} @@ -49,7 +47,7 @@ async function clickhouseQuery( ): Promise<{ x: string; y: number }[]> { const { timezone = 'UTC', unit = 'day' } = filters; const { parseFilters, rawQuery, getDateSQL } = clickhouse; - const { filterQuery, cohortQuery, excludeBounceQuery, queryParams } = parseFilters({ + const { filterQuery, cohortQuery, queryParams } = parseFilters({ ...filters, websiteId, }); @@ -67,7 +65,6 @@ async function clickhouseQuery( count(distinct session_id) as y from website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2 @@ -87,7 +84,6 @@ async function clickhouseQuery( uniq(session_id) as y from website_event_stats_hourly as website_event ${cohortQuery} - ${excludeBounceQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_type != 2