mirror of
https://github.com/umami-software/umami.git
synced 2026-02-07 06:07:17 +01:00
Split out session query.
This commit is contained in:
parent
7b9c29e039
commit
4497951000
9 changed files with 139 additions and 56 deletions
|
|
@ -61,14 +61,13 @@ function getDateFormat(date) {
|
|||
return `'${dateFormat(date, 'UTC:yyyy-mm-dd HH:MM:ss')}'`;
|
||||
}
|
||||
|
||||
function getFilterQuery(filters = {}, params = {}) {
|
||||
function getFilterQuery(filters = {}) {
|
||||
const query = Object.keys(filters).reduce((arr, key) => {
|
||||
const filter = filters[key];
|
||||
|
||||
if (filter !== undefined) {
|
||||
const column = FILTER_COLUMNS[key] || key;
|
||||
arr.push(`and ${column} = {${key}:String}`);
|
||||
params[key] = decodeURIComponent(filter);
|
||||
}
|
||||
|
||||
return arr;
|
||||
|
|
@ -77,9 +76,9 @@ function getFilterQuery(filters = {}, params = {}) {
|
|||
return query.join('\n');
|
||||
}
|
||||
|
||||
function parseFilters(filters: WebsiteMetricFilter = {}, params: any = {}) {
|
||||
function parseFilters(filters: WebsiteMetricFilter = {}) {
|
||||
return {
|
||||
filterQuery: getFilterQuery(filters, params),
|
||||
filterQuery: getFilterQuery(filters),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import prisma from '@umami/prisma-client';
|
||||
import moment from 'moment-timezone';
|
||||
import { MYSQL, POSTGRESQL, getDatabaseType } from 'lib/db';
|
||||
import { FILTER_COLUMNS } from './constants';
|
||||
import { FILTER_COLUMNS, SESSION_COLUMNS } from './constants';
|
||||
|
||||
const MYSQL_DATE_FORMATS = {
|
||||
minute: '%Y-%m-%d %H:%i:00',
|
||||
|
|
@ -64,14 +64,13 @@ function getTimestampIntervalQuery(field: string): string {
|
|||
}
|
||||
}
|
||||
|
||||
function getFilterQuery(filters = {}, params = []): string {
|
||||
function getFilterQuery(filters = {}): string {
|
||||
const query = Object.keys(filters).reduce((arr, key) => {
|
||||
const filter = filters[key];
|
||||
|
||||
if (filter !== undefined) {
|
||||
const column = FILTER_COLUMNS[key] || key;
|
||||
arr.push(`and ${column}={{${key}}}`);
|
||||
params.push(decodeURIComponent(filter));
|
||||
}
|
||||
|
||||
return arr;
|
||||
|
|
@ -80,19 +79,12 @@ function getFilterQuery(filters = {}, params = []): string {
|
|||
return query.join('\n');
|
||||
}
|
||||
|
||||
function parseFilters(
|
||||
filters: { [key: string]: any } = {},
|
||||
params = [],
|
||||
sessionKey = 'session_id',
|
||||
) {
|
||||
const { os, browser, device, country, region, city } = filters;
|
||||
|
||||
function parseFilters(filters: { [key: string]: any } = {}) {
|
||||
return {
|
||||
joinSession:
|
||||
os || browser || device || country || region || city
|
||||
? `inner join session on website_event.${sessionKey} = session.${sessionKey}`
|
||||
: '',
|
||||
filterQuery: getFilterQuery(filters, params),
|
||||
joinSession: Object.keys(filters).find(key => SESSION_COLUMNS[key])
|
||||
? `inner join session on website_event.session_id = session.session_id`
|
||||
: '',
|
||||
filterQuery: getFilterQuery(filters),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue