general destination and verify

This commit is contained in:
2026-05-08 18:23:51 +07:00
parent 2de8ac4086
commit 63349a144d
21 changed files with 2535 additions and 56 deletions
@@ -0,0 +1,19 @@
-- CreateTable
CREATE TABLE "UserProfile" (
"id" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"bio" TEXT,
"city" TEXT,
"interests" TEXT[] DEFAULT ARRAY[]::TEXT[],
"instagram" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "UserProfile_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "UserProfile_userId_key" ON "UserProfile"("userId");
-- AddForeignKey
ALTER TABLE "UserProfile" ADD CONSTRAINT "UserProfile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+22
View File
@@ -30,6 +30,28 @@ model User {
organizerVerification OrganizerVerification? @relation("OrganizerVerificationOwner")
reviewedVerifications OrganizerVerification[] @relation("OrganizerVerificationReviewer")
profile UserProfile?
}
/// Profil sosial publik. Berisi info yang user pilih untuk dibagikan ke peserta lain
/// (bio, kota, minat). Tidak menyimpan data sensitif — KYC tetap di OrganizerVerification.
model UserProfile {
id String @id @default(cuid())
userId String @unique
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
/// Bio singkat, teks bebas
bio String?
/// Kota domisili (teks bebas, mis. "Bandung", "Jakarta Selatan")
city String?
/// Tag minat aktivitas (mis. ["hiking", "fotografi", "yoga"])
interests String[] @default([])
/// Username Instagram (tanpa @, opsional)
instagram String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
/// Tabel link akun OAuth pihak ketiga (Google, dst). Diisi oleh PrismaAdapter NextAuth.