From 889a404650be079a4299c96c0c53456f57d83732 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Wed, 14 Jan 2026 15:33:06 -0800 Subject: [PATCH] share table schema + migration --- prisma/migrations/15_add_share/migration.sql | 41 ++++++++++++++++++++ prisma/schema.prisma | 15 ++++++- src/lib/constants.ts | 7 ++++ 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 prisma/migrations/15_add_share/migration.sql diff --git a/prisma/migrations/15_add_share/migration.sql b/prisma/migrations/15_add_share/migration.sql new file mode 100644 index 00000000..2a867bb5 --- /dev/null +++ b/prisma/migrations/15_add_share/migration.sql @@ -0,0 +1,41 @@ +-- CreateTable +CREATE TABLE "share" ( + "share_id" UUID NOT NULL, + "entity_id" UUID NOT NULL, + "share_type" INTEGER NOT NULL, + "share_code" VARCHAR(50), + "parameters" JSONB NOT NULL, + "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMPTZ(6), + + CONSTRAINT "share_pkey" PRIMARY KEY ("share_id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "share_share_id_key" ON "share"("share_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "share_share_code_key" ON "share"("share_code"); + +-- CreateIndex +CREATE INDEX "share_entity_id_idx" ON "share"("entity_id"); + +-- MigrateData +INSERT INTO "share" (share_id, entity_id, share_type, share_code, parameters, created_at) +SELECT gen_random_uuid(), + website_id, + 1, + share_id, + '{}'::jsonb, + now() +FROM "website" +WHERE share_id IS NOT NULL; + +-- DropIndex +DROP INDEX "website_share_id_idx"; + +-- DropIndex +DROP INDEX "website_share_id_key"; + +-- AlterTable +ALTER TABLE "website" DROP COLUMN "share_id"; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index aeb11648..e0600db0 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -67,7 +67,6 @@ model Website { id String @id @unique @map("website_id") @db.Uuid name String @db.VarChar(100) domain String? @db.VarChar(500) - shareId String? @unique @map("share_id") @db.VarChar(50) resetAt DateTime? @map("reset_at") @db.Timestamptz(6) userId String? @map("user_id") @db.Uuid teamId String? @map("team_id") @db.Uuid @@ -88,7 +87,6 @@ model Website { @@index([userId]) @@index([teamId]) @@index([createdAt]) - @@index([shareId]) @@index([createdBy]) @@map("website") } @@ -316,3 +314,16 @@ model Pixel { @@index([createdAt]) @@map("pixel") } + +model Share { + id String @id() @unique() @map("share_id") @db.Uuid + entityId String @map("entity_id") @db.Uuid + shareType Int @map("share_type") @db.Integer + shareCode String? @unique @map("share_code") @db.VarChar(50) + parameters Json + createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6) + updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz(6) + + @@index([entityId]) + @@map("share") +} diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 502a3df6..bfc80a13 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -95,6 +95,13 @@ export const EVENT_TYPE = { pixelEvent: 4, } as const; +export const ENTITY_TYPE = { + website: 1, + link: 2, + pixel: 3, + board: 4, +} as const; + export const DATA_TYPE = { string: 1, number: 2,