Files
incudal/server/prisma/migrations/20251211145415_add_token_invalidation/migration.sql
T
2026-06-20 14:26:29 +08:00

57 lines
1.9 KiB
SQL

-- CreateTable
CREATE TABLE "refresh_tokens" (
"id" SERIAL NOT NULL,
"token" TEXT NOT NULL,
"user_id" INTEGER NOT NULL,
"username" TEXT NOT NULL,
"role" "UserRole" NOT NULL,
"ip" TEXT,
"user_agent" TEXT,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"expires_at" TIMESTAMP(3) NOT NULL,
"last_active_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "refresh_tokens_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "token_invalidations" (
"id" SERIAL NOT NULL,
"user_id" INTEGER NOT NULL,
"session_id" TEXT,
"invalidated_at" INTEGER NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "token_invalidations_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "refresh_tokens_token_key" ON "refresh_tokens"("token");
-- CreateIndex
CREATE INDEX "refresh_tokens_user_id_idx" ON "refresh_tokens"("user_id");
-- CreateIndex
CREATE INDEX "refresh_tokens_token_idx" ON "refresh_tokens"("token");
-- CreateIndex
CREATE INDEX "refresh_tokens_expires_at_idx" ON "refresh_tokens"("expires_at");
-- CreateIndex
CREATE INDEX "token_invalidations_user_id_idx" ON "token_invalidations"("user_id");
-- CreateIndex
CREATE INDEX "token_invalidations_session_id_idx" ON "token_invalidations"("session_id");
-- CreateIndex
CREATE INDEX "token_invalidations_invalidated_at_idx" ON "token_invalidations"("invalidated_at");
-- CreateIndex
CREATE UNIQUE INDEX "token_invalidations_user_id_session_id_key" ON "token_invalidations"("user_id", "session_id");
-- AddForeignKey
ALTER TABLE "refresh_tokens" ADD CONSTRAINT "refresh_tokens_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "token_invalidations" ADD CONSTRAINT "token_invalidations_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;