11import prisma from 'lib/prisma' ;
22import clickhouse from 'lib/clickhouse' ;
33import { runQuery , CLICKHOUSE , PRISMA } from 'lib/db' ;
4- import { EVENT_TYPE , SESSION_COLUMNS } from 'lib/constants' ;
4+ import { EVENT_TYPE , FILTER_COLUMNS , SESSION_COLUMNS } from 'lib/constants' ;
55import { QueryFilters } from 'lib/types' ;
66
77export async function getSessionMetrics (
8- ...args : [
9- websiteId : string ,
10- column : string ,
11- filters : QueryFilters ,
12- limit ?: number ,
13- offset ?: number ,
14- ]
8+ ...args : [ websiteId : string , type : string , filters : QueryFilters , limit ?: number , offset ?: number ]
159) {
1610 return runQuery ( {
1711 [ PRISMA ] : ( ) => relationalQuery ( ...args ) ,
@@ -21,11 +15,12 @@ export async function getSessionMetrics(
2115
2216async function relationalQuery (
2317 websiteId : string ,
24- column : string ,
18+ type : string ,
2519 filters : QueryFilters ,
2620 limit : number = 500 ,
2721 offset : number = 0 ,
2822) {
23+ const column = FILTER_COLUMNS [ type ] || type ;
2924 const { parseFilters, rawQuery } = prisma ;
3025 const { filterQuery, joinSession, params } = await parseFilters (
3126 websiteId ,
@@ -34,7 +29,7 @@ async function relationalQuery(
3429 eventType : EVENT_TYPE . pageView ,
3530 } ,
3631 {
37- joinSession : SESSION_COLUMNS . includes ( column ) ,
32+ joinSession : SESSION_COLUMNS . includes ( type ) ,
3833 } ,
3934 ) ;
4035 const includeCountry = column === 'city' || column === 'subdivision1' ;
@@ -63,11 +58,12 @@ async function relationalQuery(
6358
6459async function clickhouseQuery (
6560 websiteId : string ,
66- column : string ,
61+ type : string ,
6762 filters : QueryFilters ,
6863 limit : number = 500 ,
6964 offset : number = 0 ,
7065) : Promise < { x : string ; y : number } [ ] > {
66+ const column = FILTER_COLUMNS [ type ] || type ;
7167 const { parseFilters, rawQuery } = clickhouse ;
7268 const { filterQuery, params } = await parseFilters ( websiteId , {
7369 ...filters ,
0 commit comments