import { MigrationInterface, QueryRunner } from "typeorm"; /** * Support email as a second OTP channel alongside phone (e.g. signup lets the * user choose which one to verify). `phone` becomes nullable since an * email-channel row has none, and `email` is added as a nullable unique column * mirroring `phone`'s shape. */ export class AddEmailToOtpVerifications1900000000000 implements MigrationInterface { name = "AddEmailToOtpVerifications1900000000000"; public async up(queryRunner: QueryRunner): Promise { await queryRunner.query(` ALTER TABLE public.otp_verifications ALTER COLUMN phone DROP NOT NULL `); await queryRunner.query(` ALTER TABLE public.otp_verifications ADD COLUMN IF NOT EXISTS email varchar UNIQUE `); } public async down(queryRunner: QueryRunner): Promise { await queryRunner.query(` ALTER TABLE public.otp_verifications DROP COLUMN IF EXISTS email `); await queryRunner.query(` ALTER TABLE public.otp_verifications ALTER COLUMN phone SET NOT NULL `); } }