mirror of
https://github.com/kremalicious/umami.git
synced 2024-06-30 13:41:50 +02:00
add pagetitle to queries
This commit is contained in:
parent
6c302a7325
commit
93650a2f66
|
@ -121,3 +121,6 @@ CREATE TABLE `team_website` (
|
||||||
INDEX `team_website_website_id_idx`(`website_id`),
|
INDEX `team_website_website_id_idx`(`website_id`),
|
||||||
PRIMARY KEY (`team_website_id`)
|
PRIMARY KEY (`team_website_id`)
|
||||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- AddSystemUser
|
||||||
|
INSERT INTO "user" (user_id, username, role, password) VALUES ('41e2b680-648e-4b09-bcd7-3e2b10c06264' , 'admin', 'admin', '$2b$10$BUli0c.muyCW1ErNJc3jL.vFRFtFJWrT8/GcR4A.sUdCznaXiqFXa');
|
|
@ -112,6 +112,7 @@ function getFilterQuery(filters = {}, params = {}) {
|
||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'url':
|
case 'url':
|
||||||
|
case 'pageTitle':
|
||||||
case 'os':
|
case 'os':
|
||||||
case 'browser':
|
case 'browser':
|
||||||
case 'device':
|
case 'device':
|
||||||
|
@ -155,6 +156,7 @@ function parseFilters(filters: any = {}, params: any = {}) {
|
||||||
url,
|
url,
|
||||||
eventUrl,
|
eventUrl,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
os,
|
os,
|
||||||
browser,
|
browser,
|
||||||
device,
|
device,
|
||||||
|
@ -166,7 +168,7 @@ function parseFilters(filters: any = {}, params: any = {}) {
|
||||||
query,
|
query,
|
||||||
} = filters;
|
} = filters;
|
||||||
|
|
||||||
const pageviewFilters = { domain, url, referrer, query };
|
const pageviewFilters = { domain, url, referrer, query, pageTitle };
|
||||||
const sessionFilters = { os, browser, device, country, subdivision1, subdivision2, city };
|
const sessionFilters = { os, browser, device, country, subdivision1, subdivision2, city };
|
||||||
const eventFilters = { url: eventUrl, eventName };
|
const eventFilters = { url: eventUrl, eventName };
|
||||||
|
|
||||||
|
|
|
@ -133,6 +133,7 @@ function getFilterQuery(filters = {}, params = []): string {
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'url':
|
case 'url':
|
||||||
case 'os':
|
case 'os':
|
||||||
|
case 'pageTitle':
|
||||||
case 'browser':
|
case 'browser':
|
||||||
case 'device':
|
case 'device':
|
||||||
case 'subdivision1':
|
case 'subdivision1':
|
||||||
|
@ -179,6 +180,7 @@ function parseFilters(
|
||||||
url,
|
url,
|
||||||
eventUrl,
|
eventUrl,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
os,
|
os,
|
||||||
browser,
|
browser,
|
||||||
device,
|
device,
|
||||||
|
@ -190,7 +192,7 @@ function parseFilters(
|
||||||
query,
|
query,
|
||||||
} = filters;
|
} = filters;
|
||||||
|
|
||||||
const pageviewFilters = { domain, url, referrer, query };
|
const pageviewFilters = { domain, url, referrer, query, pageTitle };
|
||||||
const sessionFilters = { os, browser, device, country, subdivision1, subdivision2, city };
|
const sessionFilters = { os, browser, device, country, subdivision1, subdivision2, city };
|
||||||
const eventFilters = { url: eventUrl, eventName };
|
const eventFilters = { url: eventUrl, eventName };
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ export default async (req: NextApiRequestCollect, res: NextApiResponse) => {
|
||||||
|
|
||||||
const { type, payload } = getJsonBody(req);
|
const { type, payload } = getJsonBody(req);
|
||||||
|
|
||||||
const { referrer, eventName, eventData } = payload;
|
const { referrer, eventName, eventData, pageTitle } = payload;
|
||||||
let { url } = payload;
|
let { url } = payload;
|
||||||
|
|
||||||
// Validate eventData is JSON
|
// Validate eventData is JSON
|
||||||
|
@ -98,12 +98,13 @@ export default async (req: NextApiRequestCollect, res: NextApiResponse) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type === 'pageview') {
|
if (type === 'pageview') {
|
||||||
await savePageView({ ...session, url, referrer });
|
await savePageView({ ...session, url, referrer, pageTitle });
|
||||||
} else if (type === 'event') {
|
} else if (type === 'event') {
|
||||||
await saveEvent({
|
await saveEvent({
|
||||||
...session,
|
...session,
|
||||||
url,
|
url,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
eventName,
|
eventName,
|
||||||
eventData,
|
eventData,
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,7 +7,7 @@ import { badRequest, methodNotAllowed, ok, unauthorized } from 'next-basics';
|
||||||
import { getPageviewMetrics, getSessionMetrics, getWebsite } from 'queries';
|
import { getPageviewMetrics, getSessionMetrics, getWebsite } from 'queries';
|
||||||
|
|
||||||
const sessionColumns = ['browser', 'os', 'device', 'screen', 'country', 'language'];
|
const sessionColumns = ['browser', 'os', 'device', 'screen', 'country', 'language'];
|
||||||
const pageviewColumns = ['url', 'referrer', 'query'];
|
const pageviewColumns = ['url', 'referrer', 'query', 'pageTitle'];
|
||||||
|
|
||||||
function getTable(type) {
|
function getTable(type) {
|
||||||
if (type === 'event') {
|
if (type === 'event') {
|
||||||
|
@ -42,6 +42,7 @@ export interface WebsiteMetricsRequestQuery {
|
||||||
endAt: number;
|
endAt: number;
|
||||||
url: string;
|
url: string;
|
||||||
referrer: string;
|
referrer: string;
|
||||||
|
pageTitle: string;
|
||||||
os: string;
|
os: string;
|
||||||
browser: string;
|
browser: string;
|
||||||
device: string;
|
device: string;
|
||||||
|
@ -65,6 +66,7 @@ export default async (
|
||||||
endAt,
|
endAt,
|
||||||
url,
|
url,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
os,
|
os,
|
||||||
browser,
|
browser,
|
||||||
device,
|
device,
|
||||||
|
@ -136,6 +138,7 @@ export default async (
|
||||||
domain,
|
domain,
|
||||||
url: type !== 'url' && table !== 'event' ? url : undefined,
|
url: type !== 'url' && table !== 'event' ? url : undefined,
|
||||||
referrer: type !== 'referrer' && table !== 'event' ? referrer : FILTER_IGNORED,
|
referrer: type !== 'referrer' && table !== 'event' ? referrer : FILTER_IGNORED,
|
||||||
|
pageTitle: type !== 'pageTitle' && table !== 'event' ? pageTitle : undefined,
|
||||||
os: type !== 'os' ? os : undefined,
|
os: type !== 'os' ? os : undefined,
|
||||||
browser: type !== 'browser' ? browser : undefined,
|
browser: type !== 'browser' ? browser : undefined,
|
||||||
device: type !== 'device' ? device : undefined,
|
device: type !== 'device' ? device : undefined,
|
||||||
|
|
|
@ -17,6 +17,7 @@ export interface WebsitePageviewRequestQuery {
|
||||||
timezone: string;
|
timezone: string;
|
||||||
url?: string;
|
url?: string;
|
||||||
referrer?: string;
|
referrer?: string;
|
||||||
|
pageTitle?: string;
|
||||||
os?: string;
|
os?: string;
|
||||||
browser?: string;
|
browser?: string;
|
||||||
device?: string;
|
device?: string;
|
||||||
|
@ -41,6 +42,7 @@ export default async (
|
||||||
timezone,
|
timezone,
|
||||||
url,
|
url,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
os,
|
os,
|
||||||
browser,
|
browser,
|
||||||
device,
|
device,
|
||||||
|
@ -72,6 +74,7 @@ export default async (
|
||||||
filters: {
|
filters: {
|
||||||
url,
|
url,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
os,
|
os,
|
||||||
browser,
|
browser,
|
||||||
device,
|
device,
|
||||||
|
@ -89,6 +92,7 @@ export default async (
|
||||||
count: 'distinct website_event.',
|
count: 'distinct website_event.',
|
||||||
filters: {
|
filters: {
|
||||||
url,
|
url,
|
||||||
|
pageTitle,
|
||||||
os,
|
os,
|
||||||
browser,
|
browser,
|
||||||
device,
|
device,
|
||||||
|
|
|
@ -13,6 +13,7 @@ export interface WebsiteStatsRequestQuery {
|
||||||
endAt: number;
|
endAt: number;
|
||||||
url: string;
|
url: string;
|
||||||
referrer: string;
|
referrer: string;
|
||||||
|
pageTitle: string;
|
||||||
os: string;
|
os: string;
|
||||||
browser: string;
|
browser: string;
|
||||||
device: string;
|
device: string;
|
||||||
|
@ -35,6 +36,7 @@ export default async (
|
||||||
endAt,
|
endAt,
|
||||||
url,
|
url,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
os,
|
os,
|
||||||
browser,
|
browser,
|
||||||
device,
|
device,
|
||||||
|
@ -62,6 +64,7 @@ export default async (
|
||||||
filters: {
|
filters: {
|
||||||
url,
|
url,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
os,
|
os,
|
||||||
browser,
|
browser,
|
||||||
device,
|
device,
|
||||||
|
@ -77,6 +80,7 @@ export default async (
|
||||||
filters: {
|
filters: {
|
||||||
url,
|
url,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
os,
|
os,
|
||||||
browser,
|
browser,
|
||||||
device,
|
device,
|
||||||
|
|
|
@ -10,6 +10,7 @@ export async function saveEvent(args: {
|
||||||
websiteId: string;
|
websiteId: string;
|
||||||
url: string;
|
url: string;
|
||||||
referrer?: string;
|
referrer?: string;
|
||||||
|
pageTitle?: string;
|
||||||
eventName?: string;
|
eventName?: string;
|
||||||
eventData?: any;
|
eventData?: any;
|
||||||
hostname?: string;
|
hostname?: string;
|
||||||
|
@ -34,10 +35,11 @@ async function relationalQuery(data: {
|
||||||
websiteId: string;
|
websiteId: string;
|
||||||
url: string;
|
url: string;
|
||||||
referrer?: string;
|
referrer?: string;
|
||||||
|
pageTitle?: string;
|
||||||
eventName?: string;
|
eventName?: string;
|
||||||
eventData?: any;
|
eventData?: any;
|
||||||
}) {
|
}) {
|
||||||
const { websiteId, id: sessionId, url, eventName, eventData, referrer } = data;
|
const { websiteId, id: sessionId, url, eventName, eventData, referrer, pageTitle } = data;
|
||||||
|
|
||||||
return prisma.client.websiteEvent.create({
|
return prisma.client.websiteEvent.create({
|
||||||
data: {
|
data: {
|
||||||
|
@ -46,6 +48,7 @@ async function relationalQuery(data: {
|
||||||
sessionId,
|
sessionId,
|
||||||
url: url?.substring(0, URL_LENGTH),
|
url: url?.substring(0, URL_LENGTH),
|
||||||
referrer: referrer?.substring(0, URL_LENGTH),
|
referrer: referrer?.substring(0, URL_LENGTH),
|
||||||
|
pageTitle: pageTitle,
|
||||||
eventType: EVENT_TYPE.customEvent,
|
eventType: EVENT_TYPE.customEvent,
|
||||||
eventName: eventName?.substring(0, EVENT_NAME_LENGTH),
|
eventName: eventName?.substring(0, EVENT_NAME_LENGTH),
|
||||||
eventData,
|
eventData,
|
||||||
|
@ -58,6 +61,7 @@ async function clickhouseQuery(data) {
|
||||||
websiteId,
|
websiteId,
|
||||||
id: sessionId,
|
id: sessionId,
|
||||||
url,
|
url,
|
||||||
|
pageTitle,
|
||||||
eventName,
|
eventName,
|
||||||
eventData,
|
eventData,
|
||||||
country,
|
country,
|
||||||
|
@ -79,6 +83,7 @@ async function clickhouseQuery(data) {
|
||||||
subdivision2: subdivision2 ? subdivision2 : null,
|
subdivision2: subdivision2 ? subdivision2 : null,
|
||||||
city: city ? city : null,
|
city: city ? city : null,
|
||||||
url: url?.substring(0, URL_LENGTH),
|
url: url?.substring(0, URL_LENGTH),
|
||||||
|
page_title: pageTitle,
|
||||||
event_type: EVENT_TYPE.customEvent,
|
event_type: EVENT_TYPE.customEvent,
|
||||||
event_name: eventName?.substring(0, EVENT_NAME_LENGTH),
|
event_name: eventName?.substring(0, EVENT_NAME_LENGTH),
|
||||||
event_data: eventData ? JSON.stringify(eventData) : null,
|
event_data: eventData ? JSON.stringify(eventData) : null,
|
||||||
|
|
|
@ -10,6 +10,7 @@ export async function savePageView(args: {
|
||||||
websiteId: string;
|
websiteId: string;
|
||||||
url: string;
|
url: string;
|
||||||
referrer?: string;
|
referrer?: string;
|
||||||
|
pageTitle?: string;
|
||||||
hostname?: string;
|
hostname?: string;
|
||||||
browser?: string;
|
browser?: string;
|
||||||
os?: string;
|
os?: string;
|
||||||
|
@ -32,8 +33,9 @@ async function relationalQuery(data: {
|
||||||
websiteId: string;
|
websiteId: string;
|
||||||
url: string;
|
url: string;
|
||||||
referrer?: string;
|
referrer?: string;
|
||||||
|
pageTitle?: string;
|
||||||
}) {
|
}) {
|
||||||
const { websiteId, id: sessionId, url, referrer } = data;
|
const { websiteId, id: sessionId, url, referrer, pageTitle } = data;
|
||||||
|
|
||||||
return prisma.client.websiteEvent.create({
|
return prisma.client.websiteEvent.create({
|
||||||
data: {
|
data: {
|
||||||
|
@ -42,6 +44,7 @@ async function relationalQuery(data: {
|
||||||
sessionId,
|
sessionId,
|
||||||
url: url?.substring(0, URL_LENGTH),
|
url: url?.substring(0, URL_LENGTH),
|
||||||
referrer: referrer?.substring(0, URL_LENGTH),
|
referrer: referrer?.substring(0, URL_LENGTH),
|
||||||
|
pageTitle: pageTitle,
|
||||||
eventType: EVENT_TYPE.pageView,
|
eventType: EVENT_TYPE.pageView,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -53,6 +56,7 @@ async function clickhouseQuery(data) {
|
||||||
id: sessionId,
|
id: sessionId,
|
||||||
url,
|
url,
|
||||||
referrer,
|
referrer,
|
||||||
|
pageTitle,
|
||||||
country,
|
country,
|
||||||
subdivision1,
|
subdivision1,
|
||||||
subdivision2,
|
subdivision2,
|
||||||
|
@ -72,6 +76,7 @@ async function clickhouseQuery(data) {
|
||||||
city: city ? city : null,
|
city: city ? city : null,
|
||||||
url: url?.substring(0, URL_LENGTH),
|
url: url?.substring(0, URL_LENGTH),
|
||||||
referrer: referrer?.substring(0, URL_LENGTH),
|
referrer: referrer?.substring(0, URL_LENGTH),
|
||||||
|
page_title: pageTitle,
|
||||||
event_type: EVENT_TYPE.pageView,
|
event_type: EVENT_TYPE.pageView,
|
||||||
created_at: getDateFormat(new Date()),
|
created_at: getDateFormat(new Date()),
|
||||||
...args,
|
...args,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user