-- CreateTable CREATE TABLE "Badge" ( "id" SERIAL NOT NULL, "name" TEXT NOT NULL, "iconUrl" VARCHAR(512), "description" TEXT, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "Badge_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "UserBadge" ( "userId" INTEGER NOT NULL, "badgeId" INTEGER NOT NULL, "earnedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "UserBadge_pkey" PRIMARY KEY ("userId","badgeId") ); -- CreateIndex CREATE UNIQUE INDEX "Badge_name_key" ON "Badge"("name"); -- CreateIndex CREATE INDEX "UserBadge_userId_earnedAt_idx" ON "UserBadge"("userId", "earnedAt"); -- CreateIndex CREATE INDEX "UserBadge_badgeId_idx" ON "UserBadge"("badgeId"); -- AddForeignKey ALTER TABLE "UserBadge" ADD CONSTRAINT "UserBadge_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "UserBadge" ADD CONSTRAINT "UserBadge_badgeId_fkey" FOREIGN KEY ("badgeId") REFERENCES "Badge"("id") ON DELETE CASCADE ON UPDATE CASCADE;