CREATE TYPE "AuthProvider" AS ENUM ('GOOGLE', 'DISCORD'); CREATE TABLE "auth_identities" ( "id" TEXT NOT NULL, "provider" "AuthProvider" NOT NULL, "provider_subject" TEXT NOT NULL, "provider_email" TEXT, "provider_name" TEXT, "provider_username" TEXT, "provider_picture" TEXT, "email_verified" BOOLEAN NOT NULL DEFAULT false, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "user_id" TEXT NOT NULL, CONSTRAINT "auth_identities_pkey" PRIMARY KEY ("id") ); CREATE TABLE "auth_sessions" ( "id" TEXT NOT NULL, "provider" "AuthProvider", "refresh_token_hash" TEXT NOT NULL, "expires_at" TIMESTAMP(3) NOT NULL, "revoked_at" TIMESTAMP(3), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "user_id" TEXT NOT NULL, CONSTRAINT "auth_sessions_pkey" PRIMARY KEY ("id") ); CREATE TABLE "auth_exchange_codes" ( "id" TEXT NOT NULL, "provider" "AuthProvider" NOT NULL, "code_hash" TEXT NOT NULL, "expires_at" TIMESTAMP(3) NOT NULL, "consumed_at" TIMESTAMP(3), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "user_id" TEXT NOT NULL, CONSTRAINT "auth_exchange_codes_pkey" PRIMARY KEY ("id") ); CREATE UNIQUE INDEX "auth_identities_provider_provider_subject_key" ON "auth_identities"("provider", "provider_subject"); CREATE INDEX "auth_identities_user_id_idx" ON "auth_identities"("user_id"); CREATE UNIQUE INDEX "auth_sessions_refresh_token_hash_key" ON "auth_sessions"("refresh_token_hash"); CREATE INDEX "auth_sessions_user_id_idx" ON "auth_sessions"("user_id"); CREATE UNIQUE INDEX "auth_exchange_codes_code_hash_key" ON "auth_exchange_codes"("code_hash"); CREATE INDEX "auth_exchange_codes_user_id_idx" ON "auth_exchange_codes"("user_id"); ALTER TABLE "auth_identities" ADD CONSTRAINT "auth_identities_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "auth_sessions" ADD CONSTRAINT "auth_sessions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "auth_exchange_codes" ADD CONSTRAINT "auth_exchange_codes_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;