add event data

This commit is contained in:
Brian Cao 2022-10-21 16:42:44 -07:00
parent 67394194af
commit 75778fdfc7
22 changed files with 446 additions and 84 deletions

View file

@ -9,16 +9,12 @@ export async function getEventData(...args) {
});
}
async function relationalQuery(
websiteId,
{ startDate, endDate, timezone = 'utc', unit = 'day', event_name, columns, filters },
) {
const { rawQuery, getDateQuery, getEventDataColumnsQuery, getEventDataFilterQuery } = prisma;
async function relationalQuery(websiteId, { startDate, endDate, event_name, columns, filters }) {
const { rawQuery, getEventDataColumnsQuery, getEventDataFilterQuery } = prisma;
const params = [startDate, endDate];
return rawQuery(
`select
${getDateQuery('event.created_at', unit, timezone)} t,
${getEventDataColumnsQuery('event_data.event_data', columns)}
from event
join website
@ -28,38 +24,40 @@ async function relationalQuery(
where website_uuid='${websiteId}'
and event.created_at between $1 and $2
${event_name ? `and event_name = ${event_name}` : ''}
${filters ? `and ${getEventDataFilterQuery('event_data.event_data', filters)}` : ''}
group by 1
order by 2`,
${
Object.keys(filters).length > 0
? `and ${getEventDataFilterQuery('event_data.event_data', filters)}`
: ''
}`,
params,
);
).then(results => {
return Object.keys(results[0]).map(a => {
return { x: a, y: results[0][`${a}`] };
});
});
}
async function clickhouseQuery(
websiteId,
{ startDate, endDate, timezone = 'UTC', unit = 'day', event_name, columns, filters },
) {
const {
rawQuery,
getDateQuery,
getBetweenDates,
getEventDataColumnsQuery,
getEventDataFilterQuery,
} = clickhouse;
async function clickhouseQuery(websiteId, { startDate, endDate, event_name, columns, filters }) {
const { rawQuery, getBetweenDates, getEventDataColumnsQuery, getEventDataFilterQuery } =
clickhouse;
const params = [websiteId];
return rawQuery(
`select
event_name x,
${getDateQuery('created_at', unit, timezone)} t,
${getEventDataColumnsQuery('event_data', columns)}
from event
where website_id= $1
${event_name ? `and event_name = ${event_name}` : ''}
and ${getBetweenDates('created_at', startDate, endDate)}
${filters ? `and ${getEventDataFilterQuery('event_data', filters)}` : ''}
group by x, t
order by t`,
${
Object.keys(filters).length > 0
? `and ${getEventDataFilterQuery('event_data', filters)}`
: ''
}`,
params,
);
).then(results => {
return Object.keys(results[0]).map(a => {
return { x: a, y: results[0][`${a}`] };
});
});
}