mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 16:28:12 +00:00
41 lines
1.5 KiB
TypeScript
41 lines
1.5 KiB
TypeScript
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<void> {
|
|
// The table lives in the `freight` schema (the OtpVerification entity pins
|
|
// schema: "freight"). An earlier version of this migration targeted
|
|
// `public.otp_verifications`, which does not exist there — leaving the real
|
|
// freight table without an `email` column and OTP send failing with
|
|
// `column OtpVerification.email does not exist`. Target `freight` explicitly.
|
|
await queryRunner.query(`
|
|
ALTER TABLE freight.otp_verifications
|
|
ALTER COLUMN phone DROP NOT NULL
|
|
`);
|
|
await queryRunner.query(`
|
|
ALTER TABLE freight.otp_verifications
|
|
ADD COLUMN IF NOT EXISTS email varchar UNIQUE
|
|
`);
|
|
}
|
|
|
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.query(`
|
|
ALTER TABLE freight.otp_verifications
|
|
DROP COLUMN IF EXISTS email
|
|
`);
|
|
await queryRunner.query(`
|
|
ALTER TABLE freight.otp_verifications
|
|
ALTER COLUMN phone SET NOT NULL
|
|
`);
|
|
}
|
|
}
|