import { MigrationInterface, QueryRunner } from "typeorm";

export class AddBreachRecordtable1746705003450 implements MigrationInterface {
    name = 'AddBreachRecordtable1746705003450'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TABLE \`breached_record_identifiers\` (\`id\` int NOT NULL AUTO_INCREMENT, \`type\` varchar(255) NOT NULL, \`value\` varchar(255) NOT NULL, \`created_at\` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), \`updated_at\` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX \`IDX_0bd01f04cf5047b8ed2c849e6e\` (\`type\`, \`value\`), PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
        await queryRunner.query(`CREATE TABLE \`breach_records\` (\`id\` int NOT NULL AUTO_INCREMENT, \`breached_year\` int NULL, \`metadata\` json NULL, \`source\` varchar(255) NULL, \`created_at\` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), \`updated_at\` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`identifierId\` int NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
        await queryRunner.query(`ALTER TABLE \`reports\` ADD \`question_type\` varchar(255) NOT NULL`);
        await queryRunner.query(`ALTER TABLE \`reports\` ADD \`pdf_url\` varchar(255) NULL`);
        await queryRunner.query(`ALTER TABLE \`breach_records\` ADD CONSTRAINT \`FK_c4117d87cb9ea3a88041dfa7c3e\` FOREIGN KEY (\`identifierId\`) REFERENCES \`breached_record_identifiers\`(\`id\`) ON DELETE CASCADE ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`breach_records\` DROP FOREIGN KEY \`FK_c4117d87cb9ea3a88041dfa7c3e\``);
        await queryRunner.query(`ALTER TABLE \`reports\` DROP COLUMN \`pdf_url\``);
        await queryRunner.query(`ALTER TABLE \`reports\` DROP COLUMN \`question_type\``);
        await queryRunner.query(`DROP TABLE \`breach_records\``);
        await queryRunner.query(`DROP INDEX \`IDX_0bd01f04cf5047b8ed2c849e6e\` ON \`breached_record_identifiers\``);
        await queryRunner.query(`DROP TABLE \`breached_record_identifiers\``);
    }

}
