mirror of
https://github.com/umami-software/umami.git
synced 2025-12-08 05:12:36 +01:00
Feat/um 305 unique session ch (#2065)
* Add session_data / session redis to CH. * Add mysql migration.
This commit is contained in:
parent
1038a54fe4
commit
b484286523
23 changed files with 405 additions and 300 deletions
4
db/clickhouse/migrations/01_edit_keys.sql
Normal file
4
db/clickhouse/migrations/01_edit_keys.sql
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
ALTER TABLE "event_data" RENAME COLUMN "event_date_value" TO "date_value";
|
||||
ALTER TABLE "event_data" RENAME COLUMN "event_numeric_value" TO "numeric_value";
|
||||
ALTER TABLE "event_data" RENAME COLUMN "event_string_value" TO "string_value";
|
||||
ALTER TABLE "event_data" RENAME COLUMN "event_data_type" TO "data_type";
|
||||
|
|
@ -117,10 +117,10 @@ CREATE TABLE umami.event_data
|
|||
url_path String,
|
||||
event_name String,
|
||||
event_key String,
|
||||
event_string_value Nullable(String),
|
||||
event_numeric_value Nullable(Decimal64(4)), --922337203685477.5625
|
||||
event_date_value Nullable(DateTime('UTC')),
|
||||
event_data_type UInt32,
|
||||
string_value Nullable(String),
|
||||
numeric_value Nullable(Decimal64(4)), --922337203685477.5625
|
||||
date_value Nullable(DateTime('UTC')),
|
||||
data_type UInt32,
|
||||
created_at DateTime('UTC')
|
||||
)
|
||||
engine = MergeTree
|
||||
|
|
@ -134,10 +134,10 @@ CREATE TABLE umami.event_data_queue (
|
|||
url_path String,
|
||||
event_name String,
|
||||
event_key String,
|
||||
event_string_value Nullable(String),
|
||||
event_numeric_value Nullable(Decimal64(4)), --922337203685477.5625
|
||||
event_date_value Nullable(DateTime('UTC')),
|
||||
event_data_type UInt32,
|
||||
string_value Nullable(String),
|
||||
numeric_value Nullable(Decimal64(4)), --922337203685477.5625
|
||||
date_value Nullable(DateTime('UTC')),
|
||||
data_type UInt32,
|
||||
created_at DateTime('UTC'),
|
||||
--virtual columns
|
||||
_error String,
|
||||
|
|
@ -158,10 +158,10 @@ SELECT website_id,
|
|||
url_path,
|
||||
event_name,
|
||||
event_key,
|
||||
event_string_value,
|
||||
event_numeric_value,
|
||||
event_date_value,
|
||||
event_data_type,
|
||||
string_value,
|
||||
numeric_value,
|
||||
date_value,
|
||||
data_type,
|
||||
created_at
|
||||
FROM umami.event_data_queue;
|
||||
|
||||
|
|
|
|||
37
db/mysql/migrations/03_session_data/migration.sql
Normal file
37
db/mysql/migrations/03_session_data/migration.sql
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
Warnings:
|
||||
|
||||
- The primary key for the `event_data` table will be changed. If it partially fails, the table could be left without primary key constraint.
|
||||
- You are about to drop the column `event_data_type` on the `event_data` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `event_date_value` on the `event_data` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `event_id` on the `event_data` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `event_numeric_value` on the `event_data` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `event_string_value` on the `event_data` table. All the data in the column will be lost.
|
||||
- Added the required column `data_type` to the `event_data` table without a default value. This is not possible if the table is not empty.
|
||||
- Added the required column `event_data_id` to the `event_data` table without a default value. This is not possible if the table is not empty.
|
||||
|
||||
*/
|
||||
-- AlterTable
|
||||
ALTER TABLE `event_data` RENAME COLUMN `event_data_type` TO `data_type`;
|
||||
ALTER TABLE `event_data` RENAME COLUMN `event_date_value` TO `date_value`;
|
||||
ALTER TABLE `event_data` RENAME COLUMN `event_id` TO `event_data_id`;
|
||||
ALTER TABLE `event_data` RENAME COLUMN `event_numeric_value` TO `numeric_value`;
|
||||
ALTER TABLE `event_data` RENAME COLUMN `event_string_value` TO `string_value`;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `session_data` (
|
||||
`session_data_id` VARCHAR(36) NOT NULL,
|
||||
`website_id` VARCHAR(36) NOT NULL,
|
||||
`session_id` VARCHAR(36) NOT NULL,
|
||||
`event_key` VARCHAR(500) NOT NULL,
|
||||
`event_string_value` VARCHAR(500) NULL,
|
||||
`event_numeric_value` DECIMAL(19, 4) NULL,
|
||||
`event_date_value` TIMESTAMP(0) NULL,
|
||||
`event_data_type` INTEGER UNSIGNED NOT NULL,
|
||||
`created_at` TIMESTAMP(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
|
||||
|
||||
INDEX `session_data_created_at_idx`(`created_at`),
|
||||
INDEX `session_data_website_id_idx`(`website_id`),
|
||||
INDEX `session_data_session_id_idx`(`session_id`),
|
||||
PRIMARY KEY (`session_data_id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
|
@ -14,12 +14,12 @@ model User {
|
|||
password String @db.VarChar(60)
|
||||
role String @map("role") @db.VarChar(50)
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||
updatedAt DateTime? @map("updated_at") @updatedAt @db.Timestamp(0)
|
||||
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamp(0)
|
||||
deletedAt DateTime? @map("deleted_at") @db.Timestamp(0)
|
||||
|
||||
website Website[]
|
||||
teamUser TeamUser[]
|
||||
Report Report[]
|
||||
report Report[]
|
||||
|
||||
@@map("user")
|
||||
}
|
||||
|
|
@ -40,6 +40,7 @@ model Session {
|
|||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||
|
||||
websiteEvent WebsiteEvent[]
|
||||
sessionData SessionData[]
|
||||
|
||||
@@index([createdAt])
|
||||
@@index([websiteId])
|
||||
|
|
@ -54,13 +55,14 @@ model Website {
|
|||
resetAt DateTime? @map("reset_at") @db.Timestamp(0)
|
||||
userId String? @map("user_id") @db.VarChar(36)
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||
updatedAt DateTime? @map("updated_at") @updatedAt @db.Timestamp(0)
|
||||
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamp(0)
|
||||
deletedAt DateTime? @map("deleted_at") @db.Timestamp(0)
|
||||
|
||||
user User? @relation(fields: [userId], references: [id])
|
||||
teamWebsite TeamWebsite[]
|
||||
eventData EventData[]
|
||||
Report Report[]
|
||||
report Report[]
|
||||
sessionData SessionData[]
|
||||
|
||||
@@index([userId])
|
||||
@@index([createdAt])
|
||||
|
|
@ -94,15 +96,15 @@ model WebsiteEvent {
|
|||
}
|
||||
|
||||
model EventData {
|
||||
id String @id() @map("event_id") @db.VarChar(36)
|
||||
websiteEventId String @map("website_event_id") @db.VarChar(36)
|
||||
websiteId String @map("website_id") @db.VarChar(36)
|
||||
eventKey String @map("event_key") @db.VarChar(500)
|
||||
eventStringValue String? @map("event_string_value") @db.VarChar(500)
|
||||
eventNumericValue Decimal? @map("event_numeric_value") @db.Decimal(19, 4)
|
||||
eventDateValue DateTime? @map("event_date_value") @db.Timestamp(0)
|
||||
eventDataType Int @map("event_data_type") @db.UnsignedInt
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||
id String @id() @map("event_data_id") @db.VarChar(36)
|
||||
websiteEventId String @map("website_event_id") @db.VarChar(36)
|
||||
websiteId String @map("website_id") @db.VarChar(36)
|
||||
eventKey String @map("event_key") @db.VarChar(500)
|
||||
stringValue String? @map("string_value") @db.VarChar(500)
|
||||
numericValue Decimal? @map("numeric_value") @db.Decimal(19, 4)
|
||||
dateValue DateTime? @map("date_value") @db.Timestamp(0)
|
||||
dataType Int @map("data_type") @db.UnsignedInt
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||
|
||||
website Website @relation(fields: [websiteId], references: [id])
|
||||
websiteEvent WebsiteEvent @relation(fields: [websiteEventId], references: [id])
|
||||
|
|
@ -114,12 +116,32 @@ model EventData {
|
|||
@@map("event_data")
|
||||
}
|
||||
|
||||
model SessionData {
|
||||
id String @id() @map("session_data_id") @db.VarChar(36)
|
||||
websiteId String @map("website_id") @db.VarChar(36)
|
||||
sessionId String @map("session_id") @db.VarChar(36)
|
||||
eventKey String @map("event_key") @db.VarChar(500)
|
||||
eventStringValue String? @map("event_string_value") @db.VarChar(500)
|
||||
eventNumericValue Decimal? @map("event_numeric_value") @db.Decimal(19, 4)
|
||||
eventDateValue DateTime? @map("event_date_value") @db.Timestamp(0)
|
||||
eventDataType Int @map("event_data_type") @db.UnsignedInt
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||
|
||||
website Website @relation(fields: [websiteId], references: [id])
|
||||
session Session @relation(fields: [sessionId], references: [id])
|
||||
|
||||
@@index([createdAt])
|
||||
@@index([websiteId])
|
||||
@@index([sessionId])
|
||||
@@map("session_data")
|
||||
}
|
||||
|
||||
model Team {
|
||||
id String @id() @unique() @map("team_id") @db.VarChar(36)
|
||||
name String @db.VarChar(50)
|
||||
accessCode String? @unique @map("access_code") @db.VarChar(50)
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||
updatedAt DateTime? @map("updated_at") @updatedAt @db.Timestamp(0)
|
||||
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamp(0)
|
||||
|
||||
teamUser TeamUser[]
|
||||
teamWebsite TeamWebsite[]
|
||||
|
|
@ -134,7 +156,7 @@ model TeamUser {
|
|||
userId String @map("user_id") @db.VarChar(36)
|
||||
role String @map("role") @db.VarChar(50)
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
|
||||
updatedAt DateTime? @map("updated_at") @updatedAt @db.Timestamp(0)
|
||||
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamp(0)
|
||||
|
||||
team Team @relation(fields: [teamId], references: [id])
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
|
|
@ -177,4 +199,4 @@ model Report {
|
|||
@@index([type])
|
||||
@@index([name])
|
||||
@@map("report")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
31
db/postgresql/migrations/03_session_data/migration.sql
Normal file
31
db/postgresql/migrations/03_session_data/migration.sql
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE "event_data" RENAME COLUMN "event_data_type" TO "data_type";
|
||||
ALTER TABLE "event_data" RENAME COLUMN "event_date_value" TO "date_value";
|
||||
ALTER TABLE "event_data" RENAME COLUMN "event_id" TO "event_data_id";
|
||||
ALTER TABLE "event_data" RENAME COLUMN "event_numeric_value" TO "numeric_value";
|
||||
ALTER TABLE "event_data" RENAME COLUMN "event_string_value" TO "string_value";
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "session_data" (
|
||||
"session_data_id" UUID NOT NULL,
|
||||
"website_id" UUID NOT NULL,
|
||||
"session_id" UUID NOT NULL,
|
||||
"session_key" VARCHAR(500) NOT NULL,
|
||||
"string_value" VARCHAR(500),
|
||||
"numeric_value" DECIMAL(19,4),
|
||||
"date_value" TIMESTAMPTZ(6),
|
||||
"data_type" INTEGER NOT NULL,
|
||||
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "session_data_pkey" PRIMARY KEY ("session_data_id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "session_data_created_at_idx" ON "session_data"("created_at");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "session_data_website_id_idx" ON "session_data"("website_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "session_data_session_id_idx" ON "session_data"("session_id");
|
||||
|
|
@ -19,7 +19,7 @@ model User {
|
|||
|
||||
website Website[]
|
||||
teamUser TeamUser[]
|
||||
Report Report[]
|
||||
report Report[]
|
||||
|
||||
@@map("user")
|
||||
}
|
||||
|
|
@ -40,6 +40,7 @@ model Session {
|
|||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||
|
||||
websiteEvent WebsiteEvent[]
|
||||
sessionData SessionData[]
|
||||
|
||||
@@index([createdAt])
|
||||
@@index([websiteId])
|
||||
|
|
@ -60,7 +61,8 @@ model Website {
|
|||
user User? @relation(fields: [userId], references: [id])
|
||||
teamWebsite TeamWebsite[]
|
||||
eventData EventData[]
|
||||
Report Report[]
|
||||
report Report[]
|
||||
sessionData SessionData[]
|
||||
|
||||
@@index([userId])
|
||||
@@index([createdAt])
|
||||
|
|
@ -94,15 +96,15 @@ model WebsiteEvent {
|
|||
}
|
||||
|
||||
model EventData {
|
||||
id String @id() @map("event_id") @db.Uuid
|
||||
websiteId String @map("website_id") @db.Uuid
|
||||
websiteEventId String @map("website_event_id") @db.Uuid
|
||||
eventKey String @map("event_key") @db.VarChar(500)
|
||||
eventStringValue String? @map("event_string_value") @db.VarChar(500)
|
||||
eventNumericValue Decimal? @map("event_numeric_value") @db.Decimal(19, 4)
|
||||
eventDateValue DateTime? @map("event_date_value") @db.Timestamptz(6)
|
||||
eventDataType Int @map("event_data_type") @db.Integer
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||
id String @id() @map("event_data_id") @db.Uuid
|
||||
websiteId String @map("website_id") @db.Uuid
|
||||
websiteEventId String @map("website_event_id") @db.Uuid
|
||||
eventKey String @map("event_key") @db.VarChar(500)
|
||||
stringValue String? @map("string_value") @db.VarChar(500)
|
||||
numericValue Decimal? @map("numeric_value") @db.Decimal(19, 4)
|
||||
dateValue DateTime? @map("date_value") @db.Timestamptz(6)
|
||||
dataType Int @map("data_type") @db.Integer
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||
|
||||
website Website @relation(fields: [websiteId], references: [id])
|
||||
websiteEvent WebsiteEvent @relation(fields: [websiteEventId], references: [id])
|
||||
|
|
@ -113,6 +115,27 @@ model EventData {
|
|||
@@map("event_data")
|
||||
}
|
||||
|
||||
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
|
||||
sessionKey String @map("session_key") @db.VarChar(500)
|
||||
stringValue String? @map("string_value") @db.VarChar(500)
|
||||
numericValue Decimal? @map("numeric_value") @db.Decimal(19, 4)
|
||||
dateValue DateTime? @map("date_value") @db.Timestamptz(6)
|
||||
dataType Int @map("data_type") @db.Integer
|
||||
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||
deletedAt DateTime? @default(now()) @map("deleted_at") @db.Timestamptz(6)
|
||||
|
||||
website Website @relation(fields: [websiteId], references: [id])
|
||||
session Session @relation(fields: [sessionId], references: [id])
|
||||
|
||||
@@index([createdAt])
|
||||
@@index([websiteId])
|
||||
@@index([sessionId])
|
||||
@@map("session_data")
|
||||
}
|
||||
|
||||
model Team {
|
||||
id String @id() @unique() @map("team_id") @db.Uuid
|
||||
name String @db.VarChar(50)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue