Allow filtering of events with url.

pull/1107/head
Mike Cao 2022-04-13 19:04:06 -07:00
parent 1cff704379
commit f69dbaeaf6
2 changed files with 11 additions and 6 deletions

View File

@ -64,7 +64,7 @@ export function getFilterQuery(table, filters = {}, params = []) {
switch (key) { switch (key) {
case 'url': case 'url':
if (table === 'session' || table === 'pageview') { if (table === 'pageview' || table === 'event') {
arr.push(`and ${table}.${key}=$${params.length + 1}`); arr.push(`and ${table}.${key}=$${params.length + 1}`);
params.push(decodeURIComponent(value)); params.push(decodeURIComponent(value));
} }
@ -110,11 +110,11 @@ export function getFilterQuery(table, filters = {}, params = []) {
} }
export function parseFilters(table, filters = {}, params = []) { export function parseFilters(table, filters = {}, params = []) {
const { domain, url, referrer, os, browser, device, country, event_type } = filters; const { domain, url, event_url, referrer, os, browser, device, country, event_type } = filters;
const pageviewFilters = { domain, url, referrer }; const pageviewFilters = { domain, url, referrer };
const sessionFilters = { os, browser, device, country }; const sessionFilters = { os, browser, device, country };
const eventFilters = { event_type }; const eventFilters = { url: event_url, event_type };
return { return {
pageviewFilters, pageviewFilters,
@ -502,8 +502,11 @@ export function getSessionMetrics(website_id, start_at, end_at, field, filters =
export function getPageviewMetrics(website_id, start_at, end_at, field, table, filters = {}) { export function getPageviewMetrics(website_id, start_at, end_at, field, table, filters = {}) {
const params = [website_id, start_at, end_at]; const params = [website_id, start_at, end_at];
console.log({ table, filters }); const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(table, filters, params); table,
filters,
params,
);
return rawQuery( return rawQuery(
` `
@ -514,6 +517,7 @@ export function getPageviewMetrics(website_id, start_at, end_at, field, table, f
and ${table}.created_at between $2 and $3 and ${table}.created_at between $2 and $3
${pageviewQuery} ${pageviewQuery}
${joinSession && sessionQuery} ${joinSession && sessionQuery}
${eventQuery}
group by 1 group by 1
order by 2 desc order by 2 desc
`, `,

View File

@ -83,12 +83,13 @@ export default async (req, res) => {
const data = await getPageviewMetrics(websiteId, startDate, endDate, column, table, { const data = await getPageviewMetrics(websiteId, startDate, endDate, column, table, {
domain, domain,
url: type !== 'url' ? url : undefined, url: type !== 'url' && table !== 'event' ? url : undefined,
referrer: type !== 'referrer' ? referrer : undefined, referrer: type !== 'referrer' ? referrer : undefined,
os: type !== 'os' ? os : undefined, os: type !== 'os' ? os : undefined,
browser: type !== 'browser' ? browser : undefined, browser: type !== 'browser' ? browser : undefined,
device: type !== 'device' ? device : undefined, device: type !== 'device' ? device : undefined,
country: type !== 'country' ? country : undefined, country: type !== 'country' ? country : undefined,
event_url: type !== 'url' && table === 'event' ? url : undefined,
}); });
return ok(res, data); return ok(res, data);