mirror of
https://github.com/kremalicious/umami.git
synced 2024-12-18 07:13:37 +01:00
Update queries to calculate correct metrics.
This commit is contained in:
parent
1dfa6d8b16
commit
a24bee815c
@ -333,12 +333,32 @@ export function getPageviews(
|
||||
);
|
||||
}
|
||||
|
||||
export function getRankings(website_id, start_at, end_at, type, table, domain) {
|
||||
const filter = domain ? `and ${type} not like '%${domain}%'` : '';
|
||||
export function getSessionMetrics(website_id, start_at, end_at, field) {
|
||||
return rawQuery(
|
||||
`
|
||||
select ${field} x, count(*) y
|
||||
from session
|
||||
where session_id in (
|
||||
select session_id
|
||||
from pageview
|
||||
where website_id=$1
|
||||
and created_at between $2 and $3
|
||||
)
|
||||
group by 1
|
||||
order by 2 desc
|
||||
`,
|
||||
website_id,
|
||||
start_at,
|
||||
end_at,
|
||||
);
|
||||
}
|
||||
|
||||
export function getPageviewMetrics(website_id, start_at, end_at, field, table, domain) {
|
||||
const filter = domain ? `and ${field} not like '%${domain}%'` : '';
|
||||
|
||||
return rawQuery(
|
||||
`
|
||||
select distinct ${type} x, count(*) y
|
||||
select ${field} x, count(*) y
|
||||
from ${table}
|
||||
where website_id=$1
|
||||
and created_at between $2 and $3
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { getRankings } from 'lib/queries';
|
||||
import { getPageviewMetrics, getSessionMetrics } from 'lib/queries';
|
||||
import { ok, badRequest, methodNotAllowed, unauthorized } from 'lib/response';
|
||||
import { DOMAIN_REGEX } from 'lib/constants';
|
||||
import { allowQuery } from 'lib/auth';
|
||||
@ -33,30 +33,32 @@ export default async (req, res) => {
|
||||
|
||||
const { id, type, start_at, end_at, domain } = req.query;
|
||||
|
||||
if (domain && !DOMAIN_REGEX.test(domain)) {
|
||||
return badRequest(res);
|
||||
}
|
||||
|
||||
const websiteId = +id;
|
||||
const startDate = new Date(+start_at);
|
||||
const endDate = new Date(+end_at);
|
||||
|
||||
if (
|
||||
type !== 'event' &&
|
||||
!sessionColumns.includes(type) &&
|
||||
!pageviewColumns.includes(type) &&
|
||||
domain &&
|
||||
DOMAIN_REGEX.test(domain)
|
||||
) {
|
||||
return badRequest(res);
|
||||
if (sessionColumns.includes(type)) {
|
||||
const data = await getSessionMetrics(websiteId, startDate, endDate, type);
|
||||
|
||||
return ok(res, data);
|
||||
}
|
||||
|
||||
const rankings = await getRankings(
|
||||
websiteId,
|
||||
startDate,
|
||||
endDate,
|
||||
getColumn(type),
|
||||
getTable(type),
|
||||
domain,
|
||||
);
|
||||
if (type === 'event' || pageviewColumns.includes(type)) {
|
||||
const data = await getPageviewMetrics(
|
||||
websiteId,
|
||||
startDate,
|
||||
endDate,
|
||||
getColumn(type),
|
||||
getTable(type),
|
||||
domain,
|
||||
);
|
||||
|
||||
return ok(res, rankings);
|
||||
return ok(res, data);
|
||||
}
|
||||
}
|
||||
|
||||
return methodNotAllowed(res);
|
||||
|
Loading…
Reference in New Issue
Block a user