BEGIN; -- Ensure pgcrypto extension is available for UUID generation CREATE EXTENSION IF NOT EXISTS pgcrypto; ALTER TABLE "authenticator" DISABLE ROW LEVEL SECURITY;--> statement-breakpoint DROP TABLE "authenticator" CASCADE;--> statement-breakpoint ALTER TABLE "verificationToken" RENAME TO "verification";--> statement-breakpoint ALTER TABLE "session" RENAME COLUMN "expires" TO "expiresAt";--> statement-breakpoint ALTER TABLE "session" RENAME COLUMN "sessionToken" TO "token";--> statement-breakpoint ALTER TABLE "verification" RENAME COLUMN "token" TO "value";--> statement-breakpoint ALTER TABLE "verification" RENAME COLUMN "expires" TO "expiresAt";--> statement-breakpoint ALTER TABLE "account" RENAME COLUMN "providerAccountId" TO "accountId";--> statement-breakpoint ALTER TABLE "account" RENAME COLUMN "provider" TO "providerId";--> statement-breakpoint ALTER TABLE "account" RENAME COLUMN "access_token" TO "accessToken";--> statement-breakpoint ALTER TABLE "account" RENAME COLUMN "refresh_token" TO "refreshToken";--> statement-breakpoint ALTER TABLE "account" RENAME COLUMN "expires_at" TO "accessTokenExpiresAt";--> statement-breakpoint ALTER TABLE "account" RENAME COLUMN "id_token" TO "idToken";--> statement-breakpoint ALTER TABLE "verification" DROP CONSTRAINT "verificationToken_identifier_token_pk";--> statement-breakpoint ALTER TABLE "account" DROP CONSTRAINT "account_provider_providerAccountId_pk";--> statement-breakpoint -- Mark OAuth users as verified before type conversion UPDATE "user" SET "emailVerified" = NOW() WHERE "emailVerified" IS NULL AND id IN (SELECT "userId" FROM account); ALTER TABLE "user" ALTER COLUMN "emailVerified" SET DATA TYPE boolean USING ("emailVerified" IS NOT NULL);--> statement-breakpoint ALTER TABLE "session" DROP CONSTRAINT "session_pkey";--> statement-breakpoint ALTER TABLE "session" ADD COLUMN "id" text PRIMARY KEY NOT NULL DEFAULT gen_random_uuid();--> statement-breakpoint ALTER TABLE "session" ADD COLUMN "createdAt" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "session" ADD COLUMN "updatedAt" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "session" ADD COLUMN "ipAddress" text;--> statement-breakpoint ALTER TABLE "session" ADD COLUMN "userAgent" text;--> statement-breakpoint ALTER TABLE "user" ADD COLUMN "createdAt" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "user" ADD COLUMN "updatedAt" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "verification" ADD COLUMN "id" text PRIMARY KEY NOT NULL DEFAULT gen_random_uuid();--> statement-breakpoint ALTER TABLE "verification" ADD COLUMN "createdAt" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "verification" ADD COLUMN "updatedAt" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "account" ADD COLUMN "id" text PRIMARY KEY NOT NULL DEFAULT gen_random_uuid();--> statement-breakpoint ALTER TABLE "account" ADD COLUMN "refreshTokenExpiresAt" timestamp;--> statement-breakpoint ALTER TABLE "account" ADD COLUMN "password" text;--> statement-breakpoint ALTER TABLE "account" ADD COLUMN "createdAt" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "account" ADD COLUMN "updatedAt" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "account" DROP COLUMN "type";--> statement-breakpoint ALTER TABLE "account" DROP COLUMN "token_type";--> statement-breakpoint ALTER TABLE "account" DROP COLUMN "session_state";--> statement-breakpoint ALTER TABLE "session" ADD CONSTRAINT "session_token_unique" UNIQUE("token");--> statement-breakpoint ALTER TABLE "user" ADD CONSTRAINT "user_email_unique" UNIQUE("email"); -- Drop the uuid defaults so future inserts rely on app-provided values ALTER TABLE "session" ALTER COLUMN "id" DROP DEFAULT;--> statement-breakpoint ALTER TABLE "verification" ALTER COLUMN "id" DROP DEFAULT;--> statement-breakpoint ALTER TABLE "account" ALTER COLUMN "id" DROP DEFAULT; COMMIT;