mirror of
https://github.com/umami-software/umami.git
synced 2026-02-20 04:25:39 +01:00
func(session): add Ip address to session,for analyze
This commit is contained in:
parent
e881735a23
commit
3feacde18d
7 changed files with 21 additions and 9 deletions
|
|
@ -16,6 +16,7 @@ CREATE TABLE umami.website_event
|
||||||
subdivision1 LowCardinality(String),
|
subdivision1 LowCardinality(String),
|
||||||
subdivision2 LowCardinality(String),
|
subdivision2 LowCardinality(String),
|
||||||
city String,
|
city String,
|
||||||
|
ip String,
|
||||||
--pageviews
|
--pageviews
|
||||||
url_path String,
|
url_path String,
|
||||||
url_query String,
|
url_query String,
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ model Session {
|
||||||
subdivision1 String? @db.Char(20)
|
subdivision1 String? @db.Char(20)
|
||||||
subdivision2 String? @db.VarChar(50)
|
subdivision2 String? @db.VarChar(50)
|
||||||
city String? @db.VarChar(50)
|
city String? @db.VarChar(50)
|
||||||
|
ip String? @db.VarChar(100)
|
||||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||||
|
|
||||||
websiteEvent WebsiteEvent[]
|
websiteEvent WebsiteEvent[]
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ model Session {
|
||||||
subdivision1 String? @db.VarChar(20)
|
subdivision1 String? @db.VarChar(20)
|
||||||
subdivision2 String? @db.VarChar(50)
|
subdivision2 String? @db.VarChar(50)
|
||||||
city String? @db.VarChar(50)
|
city String? @db.VarChar(50)
|
||||||
|
ip String? @db.VarChar(100)
|
||||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
|
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||||
|
|
||||||
websiteEvent WebsiteEvent[]
|
websiteEvent WebsiteEvent[]
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ export async function getSession(req: NextApiRequestCollect): Promise<SessionDat
|
||||||
subdivision1,
|
subdivision1,
|
||||||
subdivision2,
|
subdivision2,
|
||||||
city,
|
city,
|
||||||
|
ip,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,6 +81,7 @@ export async function getSession(req: NextApiRequestCollect): Promise<SessionDat
|
||||||
subdivision1,
|
subdivision1,
|
||||||
subdivision2,
|
subdivision2,
|
||||||
city,
|
city,
|
||||||
|
ip,
|
||||||
});
|
});
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (!e.message.toLowerCase().includes('unique constraint')) {
|
if (!e.message.toLowerCase().includes('unique constraint')) {
|
||||||
|
|
|
||||||
|
|
@ -221,4 +221,5 @@ export interface SessionData {
|
||||||
subdivision1: string;
|
subdivision1: string;
|
||||||
subdivision2: string;
|
subdivision2: string;
|
||||||
city: string;
|
city: string;
|
||||||
|
ip: string;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ export async function createSession(data: Prisma.SessionCreateInput) {
|
||||||
subdivision1,
|
subdivision1,
|
||||||
subdivision2,
|
subdivision2,
|
||||||
city,
|
city,
|
||||||
|
ip,
|
||||||
} = data;
|
} = data;
|
||||||
|
|
||||||
return prisma.client.session.create({
|
return prisma.client.session.create({
|
||||||
|
|
@ -31,6 +32,7 @@ export async function createSession(data: Prisma.SessionCreateInput) {
|
||||||
subdivision1,
|
subdivision1,
|
||||||
subdivision2,
|
subdivision2,
|
||||||
city,
|
city,
|
||||||
|
ip,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ async function relationalQuery(websiteId: string, sessionId: string) {
|
||||||
country,
|
country,
|
||||||
subdivision1,
|
subdivision1,
|
||||||
city,
|
city,
|
||||||
|
ip,
|
||||||
min(min_time) as "firstAt",
|
min(min_time) as "firstAt",
|
||||||
max(max_time) as "lastAt",
|
max(max_time) as "lastAt",
|
||||||
count(distinct visit_id) as visits,
|
count(distinct visit_id) as visits,
|
||||||
|
|
@ -44,6 +45,7 @@ async function relationalQuery(websiteId: string, sessionId: string) {
|
||||||
session.country,
|
session.country,
|
||||||
session.subdivision1,
|
session.subdivision1,
|
||||||
session.city,
|
session.city,
|
||||||
|
session.ip,
|
||||||
min(website_event.created_at) as min_time,
|
min(website_event.created_at) as min_time,
|
||||||
max(website_event.created_at) as max_time,
|
max(website_event.created_at) as max_time,
|
||||||
sum(case when website_event.event_type = 1 then 1 else 0 end) as views,
|
sum(case when website_event.event_type = 1 then 1 else 0 end) as views,
|
||||||
|
|
@ -75,6 +77,7 @@ async function clickhouseQuery(websiteId: string, sessionId: string) {
|
||||||
country,
|
country,
|
||||||
subdivision1,
|
subdivision1,
|
||||||
city,
|
city,
|
||||||
|
ip,
|
||||||
${getDateStringSQL('min(min_time)')} as firstAt,
|
${getDateStringSQL('min(min_time)')} as firstAt,
|
||||||
${getDateStringSQL('max(max_time)')} as lastAt,
|
${getDateStringSQL('max(max_time)')} as lastAt,
|
||||||
uniq(visit_id) visits,
|
uniq(visit_id) visits,
|
||||||
|
|
@ -94,6 +97,7 @@ async function clickhouseQuery(websiteId: string, sessionId: string) {
|
||||||
country,
|
country,
|
||||||
subdivision1,
|
subdivision1,
|
||||||
city,
|
city,
|
||||||
|
ip,
|
||||||
min(min_time) as min_time,
|
min(min_time) as min_time,
|
||||||
max(max_time) as max_time,
|
max(max_time) as max_time,
|
||||||
sum(views) as views,
|
sum(views) as views,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue