import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1741340902985 implements MigrationInterface {
    name = 'Migrations1741340902985'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TYPE "public"."settings_type_enum" RENAME TO "settings_type_enum_old"`);
        await queryRunner.query(`CREATE TYPE "public"."settings_type_enum" AS ENUM('facebook_followers_count', 'instagram_followers_count', 'tiktok_followers_count', 'youtube_subscriber_count', 'category_min', 'category_max', 'industry_min', 'industry_max', 'platform_charge', 'job_category_score', 'platform_score', 'geography_score', 'currency_score', 'influencer_job_category_score', 'influencer_platform_score', 'influencer_geography_score', 'influencer_currency_score')`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "type" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "type" TYPE "public"."settings_type_enum" USING "type"::"text"::"public"."settings_type_enum"`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "type" SET DEFAULT 'facebook_followers_count'`);
        await queryRunner.query(`DROP TYPE "public"."settings_type_enum_old"`);
        await queryRunner.query(`ALTER TYPE "public"."settings_setting_type_enum" RENAME TO "settings_setting_type_enum_old"`);
        await queryRunner.query(`CREATE TYPE "public"."settings_setting_type_enum" AS ENUM('general', 'platform', 'recommended_score', 'influencer_recommended_score')`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "setting_type" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "setting_type" TYPE "public"."settings_setting_type_enum" USING "setting_type"::"text"::"public"."settings_setting_type_enum"`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "setting_type" SET DEFAULT 'general'`);
        await queryRunner.query(`DROP TYPE "public"."settings_setting_type_enum_old"`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TYPE "public"."settings_setting_type_enum_old" AS ENUM('general', 'platform', 'recommended_score')`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "setting_type" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "setting_type" TYPE "public"."settings_setting_type_enum_old" USING "setting_type"::"text"::"public"."settings_setting_type_enum_old"`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "setting_type" SET DEFAULT 'general'`);
        await queryRunner.query(`DROP TYPE "public"."settings_setting_type_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."settings_setting_type_enum_old" RENAME TO "settings_setting_type_enum"`);
        await queryRunner.query(`CREATE TYPE "public"."settings_type_enum_old" AS ENUM('facebook_followers_count', 'instagram_followers_count', 'tiktok_followers_count', 'youtube_subscriber_count', 'category_min', 'category_max', 'industry_min', 'industry_max', 'platform_charge', 'job_category_score', 'platform_score', 'geography_score', 'currency_score')`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "type" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "type" TYPE "public"."settings_type_enum_old" USING "type"::"text"::"public"."settings_type_enum_old"`);
        await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "type" SET DEFAULT 'facebook_followers_count'`);
        await queryRunner.query(`DROP TYPE "public"."settings_type_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."settings_type_enum_old" RENAME TO "settings_type_enum"`);
    }

}
