mirror of
https://github.com/umami-software/umami.git
synced 2026-02-19 20:15:41 +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),
|
||||
subdivision2 LowCardinality(String),
|
||||
city String,
|
||||
ip String,
|
||||
--pageviews
|
||||
url_path String,
|
||||
url_query String,
|
||||
|
|
|
|||
|
|
@ -19,10 +19,10 @@ model User {
|
|||
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamp(0)
|
||||
deletedAt DateTime? @map("deleted_at") @db.Timestamp(0)
|
||||
|
||||
websiteUser Website[] @relation("user")
|
||||
websiteCreateUser Website[] @relation("createUser")
|
||||
teamUser TeamUser[]
|
||||
report Report[]
|
||||
websiteUser Website[] @relation("user")
|
||||
websiteCreateUser Website[] @relation("createUser")
|
||||
teamUser TeamUser[]
|
||||
report Report[]
|
||||
|
||||
@@map("user")
|
||||
}
|
||||
|
|
@ -40,6 +40,7 @@ model Session {
|
|||
subdivision1 String? @db.Char(20)
|
||||
subdivision2 String? @db.VarChar(50)
|
||||
city String? @db.VarChar(50)
|
||||
ip String? @db.VarChar(100)
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||
|
||||
websiteEvent WebsiteEvent[]
|
||||
|
|
@ -174,8 +175,8 @@ model Team {
|
|||
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamp(0)
|
||||
deletedAt DateTime? @map("deleted_at") @db.Timestamp(0)
|
||||
|
||||
website Website[]
|
||||
teamUser TeamUser[]
|
||||
website Website[]
|
||||
teamUser TeamUser[]
|
||||
|
||||
@@index([accessCode])
|
||||
@@map("team")
|
||||
|
|
|
|||
|
|
@ -19,8 +19,8 @@ model User {
|
|||
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz(6)
|
||||
deletedAt DateTime? @map("deleted_at") @db.Timestamptz(6)
|
||||
|
||||
websiteUser Website[] @relation("user")
|
||||
websiteCreateUser Website[] @relation("createUser")
|
||||
websiteUser Website[] @relation("user")
|
||||
websiteCreateUser Website[] @relation("createUser")
|
||||
teamUser TeamUser[]
|
||||
report Report[]
|
||||
|
||||
|
|
@ -40,6 +40,7 @@ model Session {
|
|||
subdivision1 String? @db.VarChar(20)
|
||||
subdivision2 String? @db.VarChar(50)
|
||||
city String? @db.VarChar(50)
|
||||
ip String? @db.VarChar(100)
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||
|
||||
websiteEvent WebsiteEvent[]
|
||||
|
|
@ -147,7 +148,7 @@ model SessionData {
|
|||
id String @id() @map("session_data_id") @db.Uuid
|
||||
websiteId String @map("website_id") @db.Uuid
|
||||
sessionId String @map("session_id") @db.Uuid
|
||||
dataKey String @map("data_key") @db.VarChar(500)
|
||||
dataKey String @map("data_key") @db.VarChar(500)
|
||||
stringValue String? @map("string_value") @db.VarChar(500)
|
||||
numberValue Decimal? @map("number_value") @db.Decimal(19, 4)
|
||||
dateValue DateTime? @map("date_value") @db.Timestamptz(6)
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ export async function getSession(req: NextApiRequestCollect): Promise<SessionDat
|
|||
subdivision1,
|
||||
subdivision2,
|
||||
city,
|
||||
ip,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -80,6 +81,7 @@ export async function getSession(req: NextApiRequestCollect): Promise<SessionDat
|
|||
subdivision1,
|
||||
subdivision2,
|
||||
city,
|
||||
ip,
|
||||
});
|
||||
} catch (e: any) {
|
||||
if (!e.message.toLowerCase().includes('unique constraint')) {
|
||||
|
|
|
|||
|
|
@ -221,4 +221,5 @@ export interface SessionData {
|
|||
subdivision1: string;
|
||||
subdivision2: string;
|
||||
city: string;
|
||||
ip: string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ export async function createSession(data: Prisma.SessionCreateInput) {
|
|||
subdivision1,
|
||||
subdivision2,
|
||||
city,
|
||||
ip,
|
||||
} = data;
|
||||
|
||||
return prisma.client.session.create({
|
||||
|
|
@ -31,6 +32,7 @@ export async function createSession(data: Prisma.SessionCreateInput) {
|
|||
subdivision1,
|
||||
subdivision2,
|
||||
city,
|
||||
ip,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ async function relationalQuery(websiteId: string, sessionId: string) {
|
|||
country,
|
||||
subdivision1,
|
||||
city,
|
||||
ip,
|
||||
min(min_time) as "firstAt",
|
||||
max(max_time) as "lastAt",
|
||||
count(distinct visit_id) as visits,
|
||||
|
|
@ -44,6 +45,7 @@ async function relationalQuery(websiteId: string, sessionId: string) {
|
|||
session.country,
|
||||
session.subdivision1,
|
||||
session.city,
|
||||
session.ip,
|
||||
min(website_event.created_at) as min_time,
|
||||
max(website_event.created_at) as max_time,
|
||||
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,
|
||||
subdivision1,
|
||||
city,
|
||||
ip,
|
||||
${getDateStringSQL('min(min_time)')} as firstAt,
|
||||
${getDateStringSQL('max(max_time)')} as lastAt,
|
||||
uniq(visit_id) visits,
|
||||
|
|
@ -94,6 +97,7 @@ async function clickhouseQuery(websiteId: string, sessionId: string) {
|
|||
country,
|
||||
subdivision1,
|
||||
city,
|
||||
ip,
|
||||
min(min_time) as min_time,
|
||||
max(max_time) as max_time,
|
||||
sum(views) as views,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue