Added query options.

This commit is contained in:
Mike Cao 2023-08-04 14:23:03 -07:00
parent 2559263e91
commit 688705dbb3
6 changed files with 42 additions and 25 deletions

View file

@ -4,7 +4,7 @@ import { MYSQL, POSTGRESQL, getDatabaseType } from 'lib/db';
import { FILTER_COLUMNS, IGNORED_FILTERS, SESSION_COLUMNS } from './constants';
import { loadWebsite } from './load';
import { maxDate } from './date';
import { QueryFilters } from './types';
import { QueryFilters, QueryOptions } from './types';
const MYSQL_DATE_FORMATS = {
minute: '%Y-%m-%d %H:%i:00',
@ -88,13 +88,18 @@ function getFilterQuery(filters = {}): string {
return query.join('\n');
}
async function parseFilters(websiteId, filters: QueryFilters & { [key: string]: any } = {}) {
async function parseFilters(
websiteId,
filters: QueryFilters & { [key: string]: any } = {},
options: QueryOptions = {},
) {
const website = await loadWebsite(websiteId);
return {
joinSession: Object.keys(filters).find(key => SESSION_COLUMNS[key])
? `inner join session on website_event.session_id = session.session_id`
: '',
joinSession:
options?.joinSession || Object.keys(filters).find(key => SESSION_COLUMNS.includes(key))
? `inner join session on website_event.session_id = session.session_id`
: '',
filterQuery: getFilterQuery(filters),
params: {
...filters,

View file

@ -137,11 +137,11 @@ export interface QueryFilters {
unit?: string;
domain?: string;
eventType?: number;
eventName?: string;
url?: string;
referrer?: string;
title?: string;
query?: string;
event?: string;
os?: string;
browser?: string;
device?: string;
@ -150,3 +150,7 @@ export interface QueryFilters {
city?: string;
language?: string;
}
export interface QueryOptions {
joinSession?: boolean;
}