import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1743146430362 implements MigrationInterface {
    name = 'Migrations1743146430362'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TYPE "public"."campaigns_job_privacy_enum" AS ENUM('in_person', 'remote')`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD "job_privacy" "public"."campaigns_job_privacy_enum" NOT NULL DEFAULT 'in_person'`);
        await queryRunner.query(`ALTER TABLE "campaigns" DROP COLUMN "influencer_type"`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD "influencer_type" jsonb`);
        await queryRunner.query(`ALTER TABLE "campaigns" DROP COLUMN "posting_start_date"`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD "posting_start_date" date`);
        await queryRunner.query(`ALTER TABLE "campaigns" DROP COLUMN "posting_end_date"`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD "posting_end_date" date`);
        await queryRunner.query(`ALTER TABLE "campaigns" DROP COLUMN "first_draft_date"`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD "first_draft_date" date`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE "campaigns" DROP COLUMN "first_draft_date"`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD "first_draft_date" character varying(255) NOT NULL`);
        await queryRunner.query(`ALTER TABLE "campaigns" DROP COLUMN "posting_end_date"`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD "posting_end_date" character varying(255) NOT NULL`);
        await queryRunner.query(`ALTER TABLE "campaigns" DROP COLUMN "posting_start_date"`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD "posting_start_date" character varying(255) NOT NULL`);
        await queryRunner.query(`ALTER TABLE "campaigns" DROP COLUMN "influencer_type"`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD "influencer_type" character varying(255) NOT NULL`);
        await queryRunner.query(`ALTER TABLE "tiktok_profiles" ALTER COLUMN "engagement_rate" SET DEFAULT 0.0000`);
        await queryRunner.query(`ALTER TABLE "instagram_profiles" ALTER COLUMN "engagement_rate" SET DEFAULT 0.0000`);
        await queryRunner.query(`ALTER TABLE "facebook_pages" ALTER COLUMN "engagement_rate" SET DEFAULT 0.0000`);
        await queryRunner.query(`ALTER TABLE "youtube_channels" ALTER COLUMN "engagement_rate" SET DEFAULT 0.0000`);
        await queryRunner.query(`ALTER TABLE "campaigns" DROP COLUMN "job_privacy"`);
        await queryRunner.query(`DROP TYPE "public"."campaigns_job_privacy_enum"`);
    }

}
