import { MigrationInterface, QueryRunner } from "typeorm";

export class AddDataHash1746687342458 implements MigrationInterface {
    name = 'AddDataHash1746687342458'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`scheduled_post\` DROP COLUMN \`createdAt\``);
        await queryRunner.query(`ALTER TABLE \`scheduled_post\` DROP COLUMN \`updatedAt\``);
        await queryRunner.query(`ALTER TABLE \`scheduled_post\` ADD \`created_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`scheduled_post\` ADD \`updated_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`geo_names\` ADD \`data_hash\` varchar(64) NULL`);
        await queryRunner.query(`ALTER TABLE \`geo_names\` ADD \`created_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`geo_names\` ADD \`updated_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv4\` ADD \`data_hash\` varchar(64) NULL`);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv4\` ADD \`created_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv4\` ADD \`updated_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv6\` ADD \`data_hash\` varchar(64) NULL`);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv6\` ADD \`created_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv6\` ADD \`updated_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`asn_data\` ADD \`data_hash\` varchar(64) NULL`);
        await queryRunner.query(`ALTER TABLE \`asn_data\` ADD \`created_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`asn_data\` ADD \`updated_at\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`CREATE INDEX \`IDX_62371c2e7dcf021657aeef8a4f\` ON \`geo_names\` (\`data_hash\`)`);
        await queryRunner.query(`CREATE INDEX \`IDX_3acc436c0776f8033a968cc882\` ON \`city_block_ipv4\` (\`data_hash\`)`);
        await queryRunner.query(`CREATE INDEX \`IDX_a2265b086c1dcf9cdb3f97087d\` ON \`city_block_ipv6\` (\`data_hash\`)`);
        await queryRunner.query(`CREATE INDEX \`IDX_3659b3f55dba6a2015ee39ceeb\` ON \`asn_data\` (\`data_hash\`)`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`DROP INDEX \`IDX_3659b3f55dba6a2015ee39ceeb\` ON \`asn_data\``);
        await queryRunner.query(`DROP INDEX \`IDX_a2265b086c1dcf9cdb3f97087d\` ON \`city_block_ipv6\``);
        await queryRunner.query(`DROP INDEX \`IDX_3acc436c0776f8033a968cc882\` ON \`city_block_ipv4\``);
        await queryRunner.query(`DROP INDEX \`IDX_62371c2e7dcf021657aeef8a4f\` ON \`geo_names\``);
        await queryRunner.query(`ALTER TABLE \`asn_data\` DROP COLUMN \`updated_at\``);
        await queryRunner.query(`ALTER TABLE \`asn_data\` DROP COLUMN \`created_at\``);
        await queryRunner.query(`ALTER TABLE \`asn_data\` DROP COLUMN \`data_hash\``);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv6\` DROP COLUMN \`updated_at\``);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv6\` DROP COLUMN \`created_at\``);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv6\` DROP COLUMN \`data_hash\``);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv4\` DROP COLUMN \`updated_at\``);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv4\` DROP COLUMN \`created_at\``);
        await queryRunner.query(`ALTER TABLE \`city_block_ipv4\` DROP COLUMN \`data_hash\``);
        await queryRunner.query(`ALTER TABLE \`geo_names\` DROP COLUMN \`updated_at\``);
        await queryRunner.query(`ALTER TABLE \`geo_names\` DROP COLUMN \`created_at\``);
        await queryRunner.query(`ALTER TABLE \`geo_names\` DROP COLUMN \`data_hash\``);
        await queryRunner.query(`ALTER TABLE \`scheduled_post\` DROP COLUMN \`updated_at\``);
        await queryRunner.query(`ALTER TABLE \`scheduled_post\` DROP COLUMN \`created_at\``);
        await queryRunner.query(`ALTER TABLE \`scheduled_post\` ADD \`updatedAt\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6)`);
        await queryRunner.query(`ALTER TABLE \`scheduled_post\` ADD \`createdAt\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)`);
    }

}
