import { MigrationInterface, QueryRunner } from "typeorm";

export class ReportTicket1743444143217 implements MigrationInterface {
    name = 'ReportTicket1743444143217'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`tickets\` DROP FOREIGN KEY \`FK_67714d39d16d1ea5a234b05b094\``);
        await queryRunner.query(`ALTER TABLE \`comments\` DROP FOREIGN KEY \`FK_e6d38899c31997c45d128a8973b\``);
        await queryRunner.query(`ALTER TABLE \`tickets\` ADD \`source\` enum ('manual', 'bot_report', 'email', 'system') NOT NULL DEFAULT 'manual'`);
        await queryRunner.query(`ALTER TABLE \`tickets\` ADD \`ticket_token\` varchar(255) NOT NULL`);
        await queryRunner.query(`ALTER TABLE \`tickets\` ADD UNIQUE INDEX \`IDX_c9f231b447d2bd8d5653f916b2\` (\`ticket_token\`)`);
        await queryRunner.query(`ALTER TABLE \`tickets\` ADD \`reference_id\` int NULL`);
        await queryRunner.query(`ALTER TABLE \`tickets\` ADD \`reference_type\` varchar(255) NULL`);
        await queryRunner.query(`ALTER TABLE \`reports\` ADD \`is_ticket_created\` tinyint NOT NULL DEFAULT 0`);
        await queryRunner.query(`ALTER TABLE \`reports\` ADD \`ticket_id\` int NULL`);
        await queryRunner.query(`ALTER TABLE \`reports\` ADD \`ticket_token\` varchar(255) NULL`);
        await queryRunner.query(`ALTER TABLE \`tickets\` CHANGE \`author_id\` \`author_id\` int NULL`);
        await queryRunner.query(`ALTER TABLE \`comments\` CHANGE \`author_id\` \`author_id\` int NULL`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`comments\` CHANGE \`author_id\` \`author_id\` int NOT NULL`);
        await queryRunner.query(`ALTER TABLE \`tickets\` CHANGE \`author_id\` \`author_id\` int NOT NULL`);
        await queryRunner.query(`ALTER TABLE \`reports\` DROP COLUMN \`ticket_token\``);
        await queryRunner.query(`ALTER TABLE \`reports\` DROP COLUMN \`ticket_id\``);
        await queryRunner.query(`ALTER TABLE \`reports\` DROP COLUMN \`is_ticket_created\``);
        await queryRunner.query(`ALTER TABLE \`tickets\` DROP COLUMN \`reference_type\``);
        await queryRunner.query(`ALTER TABLE \`tickets\` DROP COLUMN \`reference_id\``);
        await queryRunner.query(`ALTER TABLE \`tickets\` DROP INDEX \`IDX_c9f231b447d2bd8d5653f916b2\``);
        await queryRunner.query(`ALTER TABLE \`tickets\` DROP COLUMN \`ticket_token\``);
        await queryRunner.query(`ALTER TABLE \`tickets\` DROP COLUMN \`source\``);
        await queryRunner.query(`ALTER TABLE \`comments\` ADD CONSTRAINT \`FK_e6d38899c31997c45d128a8973b\` FOREIGN KEY (\`author_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`tickets\` ADD CONSTRAINT \`FK_67714d39d16d1ea5a234b05b094\` FOREIGN KEY (\`author_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

}
