Fix missing function argument of getFilterQuery
In getEventMetrics no `column` argument is passed to getFilterQuery. Thus, the subsequent arguments are shifted by one. This leads to wrong API responses, since the filters are not properly applied. One option is to pass a null value as the `column` argument. However, it is not used in getFilterQuery. Therefore, I removed it.pull/1574/head
parent
0cb14f3f6c
commit
ce572f09f2
|
@ -62,7 +62,7 @@ function getBetweenDates(field, start_at, end_at) {
|
||||||
and ${getDateFormat(end_at)}`;
|
and ${getDateFormat(end_at)}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFilterQuery(table, column, filters = {}, params = []) {
|
function getFilterQuery(table, filters = {}, params = []) {
|
||||||
const query = Object.keys(filters).reduce((arr, key) => {
|
const query = Object.keys(filters).reduce((arr, key) => {
|
||||||
const filter = filters[key];
|
const filter = filters[key];
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ function getFilterQuery(table, column, filters = {}, params = []) {
|
||||||
return query.join('\n');
|
return query.join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseFilters(table, column, filters = {}, params = [], sessionKey = 'session_id') {
|
function parseFilters(table, filters = {}, params = [], sessionKey = 'session_id') {
|
||||||
const { domain, url, event_url, referrer, os, browser, device, country, event_name, query } =
|
const { domain, url, event_url, referrer, os, browser, device, country, event_name, query } =
|
||||||
filters;
|
filters;
|
||||||
|
|
||||||
|
@ -139,9 +139,9 @@ function parseFilters(table, column, filters = {}, params = [], sessionKey = 'se
|
||||||
os || browser || device || country
|
os || browser || device || country
|
||||||
? `inner join session on ${table}.${sessionKey} = session.${sessionKey}`
|
? `inner join session on ${table}.${sessionKey} = session.${sessionKey}`
|
||||||
: '',
|
: '',
|
||||||
pageviewQuery: getFilterQuery('pageview', column, pageviewFilters, params),
|
pageviewQuery: getFilterQuery('pageview', pageviewFilters, params),
|
||||||
sessionQuery: getFilterQuery('session', column, sessionFilters, params),
|
sessionQuery: getFilterQuery('session', sessionFilters, params),
|
||||||
eventQuery: getFilterQuery('event', column, eventFilters, params),
|
eventQuery: getFilterQuery('event', eventFilters, params),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ function getTimestampInterval(field) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFilterQuery(table, column, filters = {}, params = []) {
|
function getFilterQuery(table, filters = {}, params = []) {
|
||||||
const query = Object.keys(filters).reduce((arr, key) => {
|
const query = Object.keys(filters).reduce((arr, key) => {
|
||||||
const filter = filters[key];
|
const filter = filters[key];
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ function getFilterQuery(table, column, filters = {}, params = []) {
|
||||||
return query.join('\n');
|
return query.join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseFilters(table, column, filters = {}, params = [], sessionKey = 'session_id') {
|
function parseFilters(table, filters = {}, params = [], sessionKey = 'session_id') {
|
||||||
const { domain, url, event_url, referrer, os, browser, device, country, event_name, query } =
|
const { domain, url, event_url, referrer, os, browser, device, country, event_name, query } =
|
||||||
filters;
|
filters;
|
||||||
|
|
||||||
|
@ -162,9 +162,9 @@ function parseFilters(table, column, filters = {}, params = [], sessionKey = 'se
|
||||||
os || browser || device || country
|
os || browser || device || country
|
||||||
? `inner join session on ${table}.${sessionKey} = session.${sessionKey}`
|
? `inner join session on ${table}.${sessionKey} = session.${sessionKey}`
|
||||||
: '',
|
: '',
|
||||||
pageviewQuery: getFilterQuery('pageview', column, pageviewFilters, params),
|
pageviewQuery: getFilterQuery('pageview', pageviewFilters, params),
|
||||||
sessionQuery: getFilterQuery('session', column, sessionFilters, params),
|
sessionQuery: getFilterQuery('session', sessionFilters, params),
|
||||||
eventQuery: getFilterQuery('event', column, eventFilters, params),
|
eventQuery: getFilterQuery('event', eventFilters, params),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ async function relationalQuery(website_id, start_at, end_at, column, table, filt
|
||||||
const params = [website_id, start_at, end_at];
|
const params = [website_id, start_at, end_at];
|
||||||
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
|
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
|
||||||
table,
|
table,
|
||||||
column,
|
|
||||||
filters,
|
filters,
|
||||||
params,
|
params,
|
||||||
);
|
);
|
||||||
|
@ -39,7 +38,6 @@ async function clickhouseQuery(website_id, start_at, end_at, column, table, filt
|
||||||
const params = [website_id];
|
const params = [website_id];
|
||||||
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
|
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
|
||||||
table,
|
table,
|
||||||
column,
|
|
||||||
filters,
|
filters,
|
||||||
params,
|
params,
|
||||||
'session_uuid',
|
'session_uuid',
|
||||||
|
|
|
@ -8,12 +8,11 @@ export async function getPageviewParams(...args) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function relationalQuery(website_id, start_at, end_at, column, table, filters = {}) {
|
async function relationalQuery(website_id, start_at, end_at, table, filters = {}) {
|
||||||
const { parseFilters, rawQuery } = prisma;
|
const { parseFilters, rawQuery } = prisma;
|
||||||
const params = [website_id, start_at, end_at];
|
const params = [website_id, start_at, end_at];
|
||||||
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
|
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
|
||||||
table,
|
table,
|
||||||
column,
|
|
||||||
filters,
|
filters,
|
||||||
params,
|
params,
|
||||||
);
|
);
|
||||||
|
|
|
@ -21,12 +21,7 @@ async function relationalQuery(
|
||||||
) {
|
) {
|
||||||
const { getDateQuery, parseFilters, rawQuery } = prisma;
|
const { getDateQuery, parseFilters, rawQuery } = prisma;
|
||||||
const params = [website_id, start_at, end_at];
|
const params = [website_id, start_at, end_at];
|
||||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
const { pageviewQuery, sessionQuery, joinSession } = parseFilters('pageview', filters, params);
|
||||||
'pageview',
|
|
||||||
null,
|
|
||||||
filters,
|
|
||||||
params,
|
|
||||||
);
|
|
||||||
|
|
||||||
return rawQuery(
|
return rawQuery(
|
||||||
`select ${getDateQuery('pageview.created_at', unit, timezone)} t,
|
`select ${getDateQuery('pageview.created_at', unit, timezone)} t,
|
||||||
|
@ -56,7 +51,6 @@ async function clickhouseQuery(
|
||||||
const params = [website_id];
|
const params = [website_id];
|
||||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
||||||
'pageview',
|
'pageview',
|
||||||
null,
|
|
||||||
filters,
|
filters,
|
||||||
params,
|
params,
|
||||||
sessionKey,
|
sessionKey,
|
||||||
|
|
|
@ -12,12 +12,7 @@ export async function getSessionMetrics(...args) {
|
||||||
async function relationalQuery(website_id, start_at, end_at, field, filters = {}) {
|
async function relationalQuery(website_id, start_at, end_at, field, filters = {}) {
|
||||||
const { parseFilters, rawQuery } = prisma;
|
const { parseFilters, rawQuery } = prisma;
|
||||||
const params = [website_id, start_at, end_at];
|
const params = [website_id, start_at, end_at];
|
||||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
const { pageviewQuery, sessionQuery, joinSession } = parseFilters('pageview', filters, params);
|
||||||
'pageview',
|
|
||||||
null,
|
|
||||||
filters,
|
|
||||||
params,
|
|
||||||
);
|
|
||||||
|
|
||||||
return rawQuery(
|
return rawQuery(
|
||||||
`select ${field} x, count(*) y
|
`select ${field} x, count(*) y
|
||||||
|
@ -42,7 +37,6 @@ async function clickhouseQuery(website_id, start_at, end_at, field, filters = {}
|
||||||
const params = [website_id];
|
const params = [website_id];
|
||||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
||||||
'pageview',
|
'pageview',
|
||||||
null,
|
|
||||||
filters,
|
filters,
|
||||||
params,
|
params,
|
||||||
'session_uuid',
|
'session_uuid',
|
||||||
|
|
|
@ -12,12 +12,7 @@ export async function getWebsiteStats(...args) {
|
||||||
async function relationalQuery(website_id, start_at, end_at, filters = {}) {
|
async function relationalQuery(website_id, start_at, end_at, filters = {}) {
|
||||||
const { getDateQuery, getTimestampInterval, parseFilters, rawQuery } = prisma;
|
const { getDateQuery, getTimestampInterval, parseFilters, rawQuery } = prisma;
|
||||||
const params = [website_id, start_at, end_at];
|
const params = [website_id, start_at, end_at];
|
||||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
const { pageviewQuery, sessionQuery, joinSession } = parseFilters('pageview', filters, params);
|
||||||
'pageview',
|
|
||||||
null,
|
|
||||||
filters,
|
|
||||||
params,
|
|
||||||
);
|
|
||||||
|
|
||||||
return rawQuery(
|
return rawQuery(
|
||||||
`select sum(t.c) as "pageviews",
|
`select sum(t.c) as "pageviews",
|
||||||
|
@ -46,7 +41,6 @@ async function clickhouseQuery(website_id, start_at, end_at, filters = {}) {
|
||||||
const params = [website_id];
|
const params = [website_id];
|
||||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
||||||
'pageview',
|
'pageview',
|
||||||
null,
|
|
||||||
filters,
|
filters,
|
||||||
params,
|
params,
|
||||||
'session_uuid',
|
'session_uuid',
|
||||||
|
|
Loading…
Reference in New Issue