Compare commits

...

5 commits

Author SHA1 Message Date
Francis Cao
cb034a1371 prisma schema boards + varchar length increase
Some checks are pending
Node.js CI / build (postgresql, 18.18, 10) (push) Waiting to run
2025-12-01 11:34:43 -08:00
Mike Cao
4b954fbc7c
Merge pull request #3806 from prince0xdev/feat/thumbnail-team-memory
Add favicon icons and auto-redirect to last selected team
2025-12-01 10:43:58 -08:00
Mike Cao
f5d6d0ebaf
Merge branch 'dev' into feat/thumbnail-team-memory 2025-12-01 10:43:48 -08:00
Prince EKPINSE
e5a5aeecb5 feat(#3748): redirect user to last selected team on login 2025-11-29 16:54:45 +01:00
Prince EKPINSE
046cb6ef62 feat(#3748): restore favicon icons in websites list 2025-11-29 16:43:21 +01:00
5 changed files with 97 additions and 18 deletions

View file

@ -0,0 +1,33 @@
-- CreateTable
CREATE TABLE "board" (
"board_id" UUID NOT NULL,
"type" VARCHAR(50) NOT NULL,
"name" VARCHAR(200) NOT NULL,
"description" VARCHAR(500) NOT NULL,
"parameters" JSONB NOT NULL,
"slug" VARCHAR(100) NOT NULL,
"user_id" UUID,
"team_id" UUID,
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMPTZ(6),
CONSTRAINT "board_pkey" PRIMARY KEY ("board_id")
);
-- CreateIndex
CREATE UNIQUE INDEX "board_board_id_key" ON "board"("board_id");
-- CreateIndex
CREATE UNIQUE INDEX "board_slug_key" ON "board"("slug");
-- CreateIndex
CREATE INDEX "board_slug_idx" ON "board"("slug");
-- CreateIndex
CREATE INDEX "board_user_id_idx" ON "board"("user_id");
-- CreateIndex
CREATE INDEX "board_team_id_idx" ON "board"("team_id");
-- CreateIndex
CREATE INDEX "board_created_at_idx" ON "board"("created_at");

View file

@ -0,0 +1,16 @@
-- AlterTable
ALTER TABLE "website_event" ALTER COLUMN "url_path" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "url_query" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "referrer_path" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "referrer_query" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "fbclid" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "gclid" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "li_fat_id" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "msclkid" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "ttclid" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "twclid" SET DATA TYPE VARCHAR(1024),
ALTER COLUMN "utm_campaign" SET DATA TYPE VARCHAR(512),
ALTER COLUMN "utm_content" SET DATA TYPE VARCHAR(512),
ALTER COLUMN "utm_medium" SET DATA TYPE VARCHAR(512),
ALTER COLUMN "utm_source" SET DATA TYPE VARCHAR(512),
ALTER COLUMN "utm_term" SET DATA TYPE VARCHAR(512);

View file

@ -27,6 +27,7 @@ model User {
pixels Pixel[] @relation("user")
teams TeamUser[]
reports Report[]
boards Board[] @relation("user")
@@map("user")
}
@ -99,23 +100,23 @@ model WebsiteEvent {
sessionId String @map("session_id") @db.Uuid
visitId String @map("visit_id") @db.Uuid
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
urlPath String @map("url_path") @db.VarChar(500)
urlQuery String? @map("url_query") @db.VarChar(500)
utmSource String? @map("utm_source") @db.VarChar(255)
utmMedium String? @map("utm_medium") @db.VarChar(255)
utmCampaign String? @map("utm_campaign") @db.VarChar(255)
utmContent String? @map("utm_content") @db.VarChar(255)
utmTerm String? @map("utm_term") @db.VarChar(255)
referrerPath String? @map("referrer_path") @db.VarChar(500)
referrerQuery String? @map("referrer_query") @db.VarChar(500)
urlPath String @map("url_path") @db.VarChar(1024)
urlQuery String? @map("url_query") @db.VarChar(1024)
utmSource String? @map("utm_source") @db.VarChar(512)
utmMedium String? @map("utm_medium") @db.VarChar(512)
utmCampaign String? @map("utm_campaign") @db.VarChar(512)
utmContent String? @map("utm_content") @db.VarChar(512)
utmTerm String? @map("utm_term") @db.VarChar(512)
referrerPath String? @map("referrer_path") @db.VarChar(1024)
referrerQuery String? @map("referrer_query") @db.VarChar(1024)
referrerDomain String? @map("referrer_domain") @db.VarChar(500)
pageTitle String? @map("page_title") @db.VarChar(500)
gclid String? @db.VarChar(255)
fbclid String? @db.VarChar(255)
msclkid String? @db.VarChar(255)
ttclid String? @db.VarChar(255)
lifatid String? @map("li_fat_id") @db.VarChar(255)
twclid String? @db.VarChar(255)
gclid String? @db.VarChar(1024)
fbclid String? @db.VarChar(1024)
msclkid String? @db.VarChar(1024)
ttclid String? @db.VarChar(1024)
lifatid String? @map("li_fat_id") @db.VarChar(1024)
twclid String? @db.VarChar(1024)
eventType Int @default(1) @map("event_type") @db.Integer
eventName String? @map("event_name") @db.VarChar(50)
tag String? @db.VarChar(50)
@ -199,6 +200,7 @@ model Team {
members TeamUser[]
links Link[]
pixels Pixel[]
boards Board[]
@@index([accessCode])
@@map("team")
@ -316,3 +318,25 @@ model Pixel {
@@index([createdAt])
@@map("pixel")
}
model Board {
id String @id() @unique() @map("board_id") @db.Uuid
type String @db.VarChar(50)
name String @db.VarChar(200)
description String @db.VarChar(500)
parameters Json
slug String @unique() @db.VarChar(100)
userId String? @map("user_id") @db.Uuid
teamId String? @map("team_id") @db.Uuid
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz(6)
user User? @relation("user", fields: [userId], references: [id])
team Team? @relation(fields: [teamId], references: [id])
@@index([slug])
@@index([userId])
@@index([teamId])
@@index([createdAt])
@@map("board")
}

View file

@ -1,6 +1,8 @@
import Link from 'next/link';
import { DataGrid } from '@/components/common/DataGrid';
import { useLoginQuery, useNavigation, useUserWebsitesQuery } from '@/components/hooks';
import { Favicon } from '@/index';
import { Icon, Row } from '@umami/react-zen';
import { WebsitesTable } from './WebsitesTable';
export function WebsitesDataTable({
@ -21,7 +23,12 @@ export function WebsitesDataTable({
const { renderUrl } = useNavigation();
const renderLink = (row: any) => (
<Link href={renderUrl(`/websites/${row.id}`, false)}>{row.name}</Link>
<Row alignItems="center" gap="3">
<Icon size="md" color="muted">
<Favicon domain={row.domain} />
</Icon>
<Link href={renderUrl(`/websites/${row.id}`, false)}>{row.name}</Link>
</Row>
);
return (

View file

@ -25,8 +25,7 @@ export function LoginForm() {
onSuccess: async ({ token, user }) => {
setClientAuthToken(token);
setUser(user);
router.push('/websites');
router.push('/');
},
});
};