import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1740635541274 implements MigrationInterface {
    name = 'Migrations1740635541274'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TYPE "public"."campaign_influencers_status_enum" RENAME TO "campaign_influencers_status_enum_old"`);
        await queryRunner.query(`CREATE TYPE "public"."campaign_influencers_status_enum" AS ENUM('closed', 'completion_request', 'draft_available', 'drafting_deliverables', 'posting_deliverables', 'quotation_available', 'uncontacted', 'waiting_for_quotations', 'archived')`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "status" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "status" TYPE "public"."campaign_influencers_status_enum" USING "status"::"text"::"public"."campaign_influencers_status_enum"`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "status" SET DEFAULT 'uncontacted'`);
        await queryRunner.query(`DROP TYPE "public"."campaign_influencers_status_enum_old"`);
        await queryRunner.query(`ALTER TYPE "public"."campaign_influencers_influencer_status_enum" RENAME TO "campaign_influencers_influencer_status_enum_old"`);
        await queryRunner.query(`CREATE TYPE "public"."campaign_influencers_influencer_status_enum" AS ENUM('closed', 'completion_request', 'draft_available', 'drafting_deliverables', 'posting_deliverables', 'quotation_available', 'uncontacted', 'waiting_for_quotations', 'archived')`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "influencer_status" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "influencer_status" TYPE "public"."campaign_influencers_influencer_status_enum" USING "influencer_status"::"text"::"public"."campaign_influencers_influencer_status_enum"`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "influencer_status" SET DEFAULT 'uncontacted'`);
        await queryRunner.query(`DROP TYPE "public"."campaign_influencers_influencer_status_enum_old"`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TYPE "public"."campaign_influencers_influencer_status_enum_old" AS ENUM('closed', 'completion_request', 'draft_available', 'drafting_deliverables', 'posting_deliverables', 'quotation_available', 'uncontacted', 'waiting_for_quotations')`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "influencer_status" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "influencer_status" TYPE "public"."campaign_influencers_influencer_status_enum_old" USING "influencer_status"::"text"::"public"."campaign_influencers_influencer_status_enum_old"`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "influencer_status" SET DEFAULT 'uncontacted'`);
        await queryRunner.query(`DROP TYPE "public"."campaign_influencers_influencer_status_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."campaign_influencers_influencer_status_enum_old" RENAME TO "campaign_influencers_influencer_status_enum"`);
        await queryRunner.query(`CREATE TYPE "public"."campaign_influencers_status_enum_old" AS ENUM('closed', 'completion_request', 'draft_available', 'drafting_deliverables', 'posting_deliverables', 'quotation_available', 'uncontacted', 'waiting_for_quotations')`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "status" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "status" TYPE "public"."campaign_influencers_status_enum_old" USING "status"::"text"::"public"."campaign_influencers_status_enum_old"`);
        await queryRunner.query(`ALTER TABLE "campaign_influencers" ALTER COLUMN "status" SET DEFAULT 'uncontacted'`);
        await queryRunner.query(`DROP TYPE "public"."campaign_influencers_status_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."campaign_influencers_status_enum_old" RENAME TO "campaign_influencers_status_enum"`);
    }

}
