Referrer filtering.

This commit is contained in:
Mike Cao 2021-11-21 22:00:14 -08:00
parent 65d4094095
commit ebd52335bb
15 changed files with 158 additions and 54 deletions

View file

@ -95,9 +95,7 @@ export const refFilter = (data, { domain, domainOnly, raw }) => {
const url = cleanUrl(x);
if (!domainOnly && !raw) {
links[url] = x;
}
links[url] = x;
if (url) {
if (!obj[url]) {

View file

@ -318,14 +318,20 @@ export async function getEvents(websites, start_at) {
export function getWebsiteStats(website_id, start_at, end_at, filters = {}) {
const params = [website_id, start_at, end_at];
const { url } = filters;
const { url, ref } = filters;
let urlFilter = '';
let refFilter = '';
if (url) {
urlFilter = `and url=$${params.length + 1}`;
params.push(decodeURIComponent(url));
}
if (ref) {
refFilter = `and referrer like $${params.length + 1}`;
params.push(`%${decodeURIComponent(ref)}%`);
}
return rawQuery(
`
select sum(t.c) as "pageviews",
@ -341,6 +347,7 @@ export function getWebsiteStats(website_id, start_at, end_at, filters = {}) {
where website_id=$1
and created_at between $2 and $3
${urlFilter}
${refFilter}
group by 1, 2
) t
`,
@ -355,16 +362,24 @@ export function getPageviewStats(
timezone = 'utc',
unit = 'day',
count = '*',
url,
filters = {},
) {
const params = [website_id, start_at, end_at];
const { url, ref } = filters;
let urlFilter = '';
let refFilter = '';
if (url) {
urlFilter = `and url=$${params.length + 1}`;
params.push(decodeURIComponent(url));
}
if (ref) {
refFilter = `and referrer like $${params.length + 1}`;
params.push(`%${decodeURIComponent(ref)}%`);
}
return rawQuery(
`
select ${getDateQuery('created_at', unit, timezone)} t,
@ -373,6 +388,7 @@ export function getPageviewStats(
where website_id=$1
and created_at between $2 and $3
${urlFilter}
${refFilter}
group by 1
order by 1
`,
@ -411,7 +427,7 @@ export function getSessionMetrics(website_id, start_at, end_at, field, filters =
export function getPageviewMetrics(website_id, start_at, end_at, field, table, filters = {}) {
const params = [website_id, start_at, end_at];
const { domain, url } = filters;
const { domain, url, ref } = filters;
let domainFilter = '';
let urlFilter = '';