import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1749046026225 implements MigrationInterface {
    name = 'Migrations1749046026225'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`DROP INDEX "public"."idx_youtube_desc_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_youtube_name_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_youtube_city_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_facebook_name_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_facebook_desc_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_facebook_city_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_instagram_bio_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_instagram_username_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_instagram_name_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_instagram_city_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_tiktok_username_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_tiktok_display_name_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_tiktok_city_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_tiktok_bio_desc_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_xhs_name_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_xhs_city_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_xhs_desc_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_category_title_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_keywords_keyword_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_user_first_name_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_user_last_name_trgm"`);
        await queryRunner.query(`DROP INDEX "public"."idx_user_about_me_trgm"`);
        await queryRunner.query(`ALTER TABLE "social_medias" ADD "description" text`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE "social_medias" DROP COLUMN "description"`);
        await queryRunner.query(`CREATE INDEX "idx_user_about_me_trgm" ON "users" ("about_me") `);
        await queryRunner.query(`CREATE INDEX "idx_user_last_name_trgm" ON "users" ("last_name") `);
        await queryRunner.query(`CREATE INDEX "idx_user_first_name_trgm" ON "users" ("first_name") `);
        await queryRunner.query(`CREATE INDEX "idx_keywords_keyword_trgm" ON "keywords" ("keyword") `);
        await queryRunner.query(`CREATE INDEX "idx_category_title_trgm" ON "categories" ("title") `);
        await queryRunner.query(`CREATE INDEX "idx_xhs_desc_trgm" ON "xiaohongshu_profiles" ("description") `);
        await queryRunner.query(`CREATE INDEX "idx_xhs_city_trgm" ON "xiaohongshu_profiles" ("city_name") `);
        await queryRunner.query(`CREATE INDEX "idx_xhs_name_trgm" ON "xiaohongshu_profiles" ("name") `);
        await queryRunner.query(`CREATE INDEX "idx_tiktok_bio_desc_trgm" ON "tiktok_profiles" ("bio_description") `);
        await queryRunner.query(`CREATE INDEX "idx_tiktok_city_trgm" ON "tiktok_profiles" ("city_name") `);
        await queryRunner.query(`CREATE INDEX "idx_tiktok_display_name_trgm" ON "tiktok_profiles" ("display_name") `);
        await queryRunner.query(`CREATE INDEX "idx_tiktok_username_trgm" ON "tiktok_profiles" ("username") `);
        await queryRunner.query(`CREATE INDEX "idx_instagram_city_trgm" ON "instagram_profiles" ("city_name") `);
        await queryRunner.query(`CREATE INDEX "idx_instagram_name_trgm" ON "instagram_profiles" ("name") `);
        await queryRunner.query(`CREATE INDEX "idx_instagram_username_trgm" ON "instagram_profiles" ("user_name") `);
        await queryRunner.query(`CREATE INDEX "idx_instagram_bio_trgm" ON "instagram_profiles" ("biography") `);
        await queryRunner.query(`CREATE INDEX "idx_facebook_city_trgm" ON "facebook_pages" ("city") `);
        await queryRunner.query(`CREATE INDEX "idx_facebook_desc_trgm" ON "facebook_pages" ("description") `);
        await queryRunner.query(`CREATE INDEX "idx_facebook_name_trgm" ON "facebook_pages" ("name") `);
        await queryRunner.query(`CREATE INDEX "idx_youtube_city_trgm" ON "youtube_channels" ("city_name") `);
        await queryRunner.query(`CREATE INDEX "idx_youtube_name_trgm" ON "youtube_channels" ("channel_name") `);
        await queryRunner.query(`CREATE INDEX "idx_youtube_desc_trgm" ON "youtube_channels" ("description") `);
    }

}
