ZOD-341-Add unique constraint to user email and clean up duplicates

This commit is contained in:
Abdalhamid Alhamad
2025-10-21 10:49:43 +03:00
parent 4f778f7904
commit e966f95463
4 changed files with 30 additions and 3 deletions

View File

@ -0,0 +1,26 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class AddUniqueConstraintToUserEmail1761032305682 implements MigrationInterface {
name = 'AddUniqueConstraintToUserEmail1761032305682'
public async up(queryRunner: QueryRunner): Promise<void> {
// Clean up duplicate emails - keep the oldest record (MIN id)
await queryRunner.query(`
DELETE FROM users
WHERE id IN (
SELECT u1.id
FROM users u1
INNER JOIN users u2 ON u1.email = u2.email AND u1.id > u2.id
WHERE u1.email IS NOT NULL
)
`);
// Add unique constraint
await queryRunner.query(`ALTER TABLE "users" ADD CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3" UNIQUE ("email")`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "users" DROP CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3"`);
}
}