import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1731999426300 implements MigrationInterface {
    name = 'Migrations1731999426300'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TABLE "xiaohongshu_profiles" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "name" character varying NOT NULL DEFAULT '', "social_id" text NOT NULL DEFAULT '', "user_name" text NOT NULL DEFAULT '', "profile_picture_url" text NOT NULL DEFAULT '', "follower_count" integer NOT NULL DEFAULT '0', "following_count" integer NOT NULL DEFAULT '0', "engagement_count" integer NOT NULL DEFAULT '0', "engagement_rate" numeric(8,2) NOT NULL DEFAULT '0', "post_count" integer NOT NULL DEFAULT '0', "total_views" integer NOT NULL DEFAULT '0', "country_name" character varying NOT NULL DEFAULT '', "description" text NOT NULL DEFAULT '', "city_name" character varying NOT NULL DEFAULT '', "gender" character varying NOT NULL DEFAULT '', "created_at" TIMESTAMP(0) NOT NULL DEFAULT now(), "updated_at" TIMESTAMP(0) NOT NULL DEFAULT now(), "deleted_at" TIMESTAMP(0), "users" uuid, "socialMedia" uuid, CONSTRAINT "PK_d57107b22a0208d2eb549ee2b20" PRIMARY KEY ("id"))`);
        await queryRunner.query(`ALTER TYPE "public"."social_medias_social_type_enum" RENAME TO "social_medias_social_type_enum_old"`);
        await queryRunner.query(`CREATE TYPE "public"."social_medias_social_type_enum" AS ENUM('youtube', 'facebook', 'instagram', 'tiktok', 'xiaohongshu')`);
        await queryRunner.query(`ALTER TABLE "social_medias" ALTER COLUMN "social_type" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "social_medias" ALTER COLUMN "social_type" TYPE "public"."social_medias_social_type_enum" USING "social_type"::"text"::"public"."social_medias_social_type_enum"`);
        await queryRunner.query(`ALTER TABLE "social_medias" ALTER COLUMN "social_type" SET DEFAULT 'youtube'`);
        await queryRunner.query(`DROP TYPE "public"."social_medias_social_type_enum_old"`);
        await queryRunner.query(`ALTER TABLE "xiaohongshu_profiles" ADD CONSTRAINT "FK_11dac25bb18dff099fe37d921bf" FOREIGN KEY ("users") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE "xiaohongshu_profiles" ADD CONSTRAINT "FK_6eaed7413b9b341840c1673306a" FOREIGN KEY ("socialMedia") REFERENCES "social_medias"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE "xiaohongshu_profiles" DROP CONSTRAINT "FK_6eaed7413b9b341840c1673306a"`);
        await queryRunner.query(`ALTER TABLE "xiaohongshu_profiles" DROP CONSTRAINT "FK_11dac25bb18dff099fe37d921bf"`);
        await queryRunner.query(`CREATE TYPE "public"."social_medias_social_type_enum_old" AS ENUM('youtube', 'facebook', 'instagram', 'tiktok')`);
        await queryRunner.query(`ALTER TABLE "social_medias" ALTER COLUMN "social_type" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "social_medias" ALTER COLUMN "social_type" TYPE "public"."social_medias_social_type_enum_old" USING "social_type"::"text"::"public"."social_medias_social_type_enum_old"`);
        await queryRunner.query(`ALTER TABLE "social_medias" ALTER COLUMN "social_type" SET DEFAULT 'youtube'`);
        await queryRunner.query(`DROP TYPE "public"."social_medias_social_type_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."social_medias_social_type_enum_old" RENAME TO "social_medias_social_type_enum"`);
        await queryRunner.query(`DROP TABLE "xiaohongshu_profiles"`);
    }

}
