Merge branch 'dev' into feat/um-185-event-data-redirect

This commit is contained in:
Brian Cao 2023-03-01 16:40:06 -08:00
commit 53a6a8924d
23 changed files with 3791 additions and 98 deletions

View file

@ -7,7 +7,7 @@ import { badRequest, methodNotAllowed, ok, unauthorized } from 'next-basics';
import { getPageviewMetrics, getSessionMetrics, getWebsite } from 'queries';
const sessionColumns = ['browser', 'os', 'device', 'screen', 'country', 'language'];
const pageviewColumns = ['url', 'referrer', 'query'];
const pageviewColumns = ['url', 'referrer', 'query', 'pageTitle'];
function getTable(type) {
if (type === 'event') {
@ -42,10 +42,14 @@ export interface WebsiteMetricsRequestQuery {
endAt: number;
url: string;
referrer: string;
pageTitle: string;
os: string;
browser: string;
device: string;
country: string;
subdivision1: string;
subdivision2: string;
city: string;
}
export default async (
@ -62,10 +66,14 @@ export default async (
endAt,
url,
referrer,
pageTitle,
os,
browser,
device,
country,
subdivision1,
subdivision2,
city,
} = req.query;
if (req.method === 'GET') {
@ -86,6 +94,9 @@ export default async (
browser,
device,
country,
subdivision1,
subdivision2,
city,
},
});
@ -127,10 +138,14 @@ export default async (
domain,
url: type !== 'url' && table !== 'event' ? url : undefined,
referrer: type !== 'referrer' && table !== 'event' ? referrer : FILTER_IGNORED,
pageTitle: type !== 'pageTitle' && table !== 'event' ? pageTitle : undefined,
os: type !== 'os' ? os : undefined,
browser: type !== 'browser' ? browser : undefined,
device: type !== 'device' ? device : undefined,
country: type !== 'country' ? country : undefined,
subdivision1: type !== 'subdivision1' ? subdivision1 : undefined,
subdivision2: type !== 'subdivision2' ? subdivision2 : undefined,
city: type !== 'city' ? city : undefined,
eventUrl: type !== 'url' && table === 'event' ? url : undefined,
query: type === 'query' && table !== 'event' ? true : undefined,
};

View file

@ -17,10 +17,14 @@ export interface WebsitePageviewRequestQuery {
timezone: string;
url?: string;
referrer?: string;
pageTitle?: string;
os?: string;
browser?: string;
device?: string;
country?: string;
subdivision1?: string;
subdivision2?: string;
city?: string;
}
export default async (
@ -38,10 +42,14 @@ export default async (
timezone,
url,
referrer,
pageTitle,
os,
browser,
device,
country,
subdivision1,
subdivision2,
city,
} = req.query;
if (req.method === 'GET') {
@ -66,10 +74,14 @@ export default async (
filters: {
url,
referrer,
pageTitle,
os,
browser,
device,
country,
subdivision1,
subdivision2,
city,
},
}),
getPageviewStats(websiteId, {
@ -80,10 +92,14 @@ export default async (
count: 'distinct website_event.',
filters: {
url,
pageTitle,
os,
browser,
device,
country,
subdivision1,
subdivision2,
city,
},
}),
]);

View file

@ -1,7 +1,6 @@
import { WebsiteStats } from 'lib/types';
import { NextApiRequestQueryBody } from 'lib/types';
import { canViewWebsite } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
import { NextApiRequestQueryBody, WebsiteStats } from 'lib/types';
import { NextApiResponse } from 'next';
import { methodNotAllowed, ok, unauthorized } from 'next-basics';
import { getWebsiteStats } from 'queries';
@ -13,10 +12,14 @@ export interface WebsiteStatsRequestQuery {
endAt: number;
url: string;
referrer: string;
pageTitle: string;
os: string;
browser: string;
device: string;
country: string;
subdivision1: string;
subdivision2: string;
city: string;
}
export default async (
@ -26,7 +29,21 @@ export default async (
await useCors(req, res);
await useAuth(req, res);
const { id: websiteId, startAt, endAt, url, referrer, os, browser, device, country } = req.query;
const {
id: websiteId,
startAt,
endAt,
url,
referrer,
pageTitle,
os,
browser,
device,
country,
subdivision1,
subdivision2,
city,
} = req.query;
if (req.method === 'GET') {
if (!(await canViewWebsite(req.auth, websiteId))) {
@ -46,10 +63,14 @@ export default async (
filters: {
url,
referrer,
pageTitle,
os,
browser,
device,
country,
subdivision1,
subdivision2,
city,
},
});
const prevPeriod = await getWebsiteStats(websiteId, {
@ -58,10 +79,14 @@ export default async (
filters: {
url,
referrer,
pageTitle,
os,
browser,
device,
country,
subdivision1,
subdivision2,
city,
},
});