From c0ef8dace4f622a4951b012e2a9a1422344f60e9 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 4 Aug 2023 13:33:41 -0700 Subject: [PATCH] Fixed session queries. --- pages/api/websites/[id]/pageviews.ts | 3 +-- queries/analytics/sessions/getSessionMetrics.ts | 5 +++-- queries/analytics/sessions/getSessionStats.ts | 5 +++-- queries/index.js | 1 + 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pages/api/websites/[id]/pageviews.ts b/pages/api/websites/[id]/pageviews.ts index 87c60d58..c5532e76 100644 --- a/pages/api/websites/[id]/pageviews.ts +++ b/pages/api/websites/[id]/pageviews.ts @@ -4,9 +4,8 @@ import { badRequest, methodNotAllowed, ok, unauthorized } from 'next-basics'; import { NextApiRequestQueryBody, WebsitePageviews } from 'lib/types'; import { canViewWebsite } from 'lib/auth'; import { useAuth, useCors } from 'lib/middleware'; -import { getPageviewStats } from 'queries'; +import { getPageviewStats, getSessionStats } from 'queries'; import { parseDateRangeQuery } from 'lib/query'; -import { getSessionStats } from '../../../../queries/analytics/sessions/getSessionStats'; export interface WebsitePageviewRequestQuery { id: string; diff --git a/queries/analytics/sessions/getSessionMetrics.ts b/queries/analytics/sessions/getSessionMetrics.ts index 910c9785..5ef387ec 100644 --- a/queries/analytics/sessions/getSessionMetrics.ts +++ b/queries/analytics/sessions/getSessionMetrics.ts @@ -15,7 +15,7 @@ export async function getSessionMetrics( async function relationalQuery(websiteId: string, column: string, filters: QueryFilters) { const { parseFilters, rawQuery } = prisma; - const { filterQuery, joinSession, params } = await parseFilters(websiteId, { + const { filterQuery, params } = await parseFilters(websiteId, { ...filters, eventType: EVENT_TYPE.pageView, }); @@ -23,7 +23,8 @@ async function relationalQuery(websiteId: string, column: string, filters: Query return rawQuery( `select ${column} x, count(*) y from website_event - ${joinSession} + inner join session + on session.session_id = website_event.session_id where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} and website_event.event_type = {{eventType}} diff --git a/queries/analytics/sessions/getSessionStats.ts b/queries/analytics/sessions/getSessionStats.ts index 9ed01a59..b8884a44 100644 --- a/queries/analytics/sessions/getSessionStats.ts +++ b/queries/analytics/sessions/getSessionStats.ts @@ -14,7 +14,7 @@ export async function getSessionStats(...args: [websiteId: string, filters: Quer async function relationalQuery(websiteId: string, filters: QueryFilters) { const { timezone = 'utc', unit = 'day' } = filters; const { getDateQuery, parseFilters, rawQuery } = prisma; - const { filterQuery, joinSession, params } = await parseFilters(websiteId, { + const { filterQuery, params } = await parseFilters(websiteId, { ...filters, eventType: EVENT_TYPE.pageView, }); @@ -25,7 +25,8 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) { ${getDateQuery('website_event.created_at', unit, timezone)} x, count(distinct website_event.session_id) y from website_event - ${joinSession} + inner join session + on session.session_id = website_event.session_id where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} and event_type = {{eventType}} diff --git a/queries/index.js b/queries/index.js index f509e039..474ab31e 100644 --- a/queries/index.js +++ b/queries/index.js @@ -19,6 +19,7 @@ export * from './analytics/sessions/createSession'; export * from './analytics/sessions/getSession'; export * from './analytics/sessions/getSessionMetrics'; export * from './analytics/sessions/getSessions'; +export * from './analytics/sessions/getSessionStats'; export * from './analytics/sessions/saveSessionData'; export * from './analytics/stats/getActiveVisitors'; export * from './analytics/stats/getRealtimeData';