remove event_data.

This commit is contained in:
Brian Cao 2023-03-01 16:13:11 -08:00
parent 4cb5a14de9
commit 0cc1319e14
19 changed files with 29 additions and 627 deletions

View file

@ -1,93 +0,0 @@
import clickhouse from 'lib/clickhouse';
import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db';
import prisma from 'lib/prisma';
import cache from 'lib/cache';
import { WebsiteMetric } from 'lib/types';
import { EVENT_TYPE } from 'lib/constants';
export async function getEventData(
...args: [
websiteId: string,
data: {
startDate: Date;
endDate: Date;
eventName: string;
columns: any;
filters: object;
},
]
): Promise<WebsiteMetric[]> {
return runQuery({
[PRISMA]: () => relationalQuery(...args),
[CLICKHOUSE]: () => clickhouseQuery(...args),
}).then(results => {
return Object.keys(results[0]).map(a => {
return { x: a, y: results[0][`${a}`] };
});
});
}
async function relationalQuery(
websiteId: string,
data: {
startDate: Date;
endDate: Date;
eventName: string;
columns: any;
filters: object;
},
) {
const { startDate, endDate, eventName, columns, filters } = data;
const { toUuid, rawQuery, getEventDataColumnsQuery, getEventDataFilterQuery } = prisma;
const params: any = [websiteId, startDate, endDate, eventName];
return rawQuery(
`select
${getEventDataColumnsQuery('event_data', columns)}
from website_event
where website_id = $1${toUuid()}
and created_at between $2 and $3
and event_type = ${EVENT_TYPE.customEvent}
${eventName ? `and eventName = $4` : ''}
${
Object.keys(filters).length > 0
? `and ${getEventDataFilterQuery('event_data', filters)}`
: ''
}`,
params,
);
}
async function clickhouseQuery(
websiteId: string,
data: {
startDate: Date;
endDate: Date;
eventName: string;
columns: any;
filters: object;
},
) {
const { startDate, endDate, eventName, columns, filters } = data;
const { rawQuery, getBetweenDates, getEventDataColumnsQuery, getEventDataFilterQuery } =
clickhouse;
const website = await cache.fetchWebsite(websiteId);
const params = { websiteId, revId: website?.revId || 0 };
return rawQuery(
`select
${getEventDataColumnsQuery('event_data', columns)}
from event
where website_id = {websiteId:UUID}
and rev_id = {revId:UInt32}
and event_type = ${EVENT_TYPE.customEvent}
${eventName ? `and eventName = ${eventName}` : ''}
and ${getBetweenDates('created_at', startDate, endDate)}
${
Object.keys(filters).length > 0
? `and ${getEventDataFilterQuery('event_data', filters)}`
: ''
}`,
params,
);
}

View file

@ -11,7 +11,6 @@ export async function saveEvent(args: {
url: string;
referrer?: string;
eventName?: string;
eventData?: any;
hostname?: string;
browser?: string;
os?: string;
@ -32,9 +31,8 @@ async function relationalQuery(data: {
url: string;
referrer?: string;
eventName?: string;
eventData?: any;
}) {
const { websiteId, id: sessionId, url, eventName, eventData, referrer } = data;
const { websiteId, id: sessionId, url, eventName, referrer } = data;
const params = {
id: uuid(),
@ -44,7 +42,6 @@ async function relationalQuery(data: {
referrer: referrer?.substring(0, URL_LENGTH),
eventType: EVENT_TYPE.customEvent,
eventName: eventName?.substring(0, EVENT_NAME_LENGTH),
eventData,
};
return prisma.client.websiteEvent.create({
@ -58,7 +55,7 @@ async function clickhouseQuery(data: {
url: string;
referrer?: string;
eventName?: string;
eventData?: any;
hostname?: string;
browser?: string;
os?: string;
@ -67,7 +64,7 @@ async function clickhouseQuery(data: {
language?: string;
country?: string;
}) {
const { websiteId, id: sessionId, url, eventName, eventData, country, ...args } = data;
const { websiteId, id: sessionId, url, eventName, country, ...args } = data;
const { getDateFormat, sendMessage } = kafka;
const website = await cache.fetchWebsite(websiteId);
@ -78,7 +75,6 @@ async function clickhouseQuery(data: {
url: url?.substring(0, URL_LENGTH),
event_type: EVENT_TYPE.customEvent,
event_name: eventName?.substring(0, EVENT_NAME_LENGTH),
event_data: eventData ? JSON.stringify(eventData) : null,
rev_id: website?.revId || 0,
created_at: getDateFormat(new Date()),
country: country ? country : null,

View file

@ -4,7 +4,6 @@ export * from './admin/user';
export * from './admin/website';
export * from './analytics/event/getEventMetrics';
export * from './analytics/event/getEvents';
export * from './analytics/event/getEventData';
export * from './analytics/event/saveEvent';
export * from './analytics/pageview/getPageviewMetrics';
export * from './analytics/pageview/getPageviews';