import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1729578701628 implements MigrationInterface {
    name = 'Migrations1729578701628'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TABLE "tiktok_profiles" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "avatar_url" character varying NOT NULL DEFAULT '', "bio_description" text NOT NULL DEFAULT '', "open_id" text NOT NULL DEFAULT '', "username" text NOT NULL DEFAULT '', "display_name" text NOT NULL DEFAULT '', "is_verified" boolean NOT NULL DEFAULT false, "profile_deep_link" text NOT NULL DEFAULT '', "union_id" text NOT NULL DEFAULT '', "likes_count" integer NOT NULL DEFAULT '0', "video_count" integer NOT NULL DEFAULT '0', "following_count" integer NOT NULL DEFAULT '0', "follower_count" integer NOT NULL DEFAULT '0', "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_2526d2aa2d6d2e657bd659dce54" PRIMARY KEY ("id"))`);
        await queryRunner.query(`CREATE TABLE "tiktok_videos" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "video_id" text NOT NULL DEFAULT '', "create_time" character varying NOT NULL DEFAULT '', "title" text NOT NULL DEFAULT '', "cover_image_url" text NOT NULL DEFAULT '', "embed_html" text NOT NULL DEFAULT '', "share_url" text NOT NULL DEFAULT '', "embed_link" text NOT NULL DEFAULT '', "is_comment_enabled" text NOT NULL DEFAULT '', "media_product_type" text NOT NULL DEFAULT '', "media_type" text NOT NULL DEFAULT '', "shortcode" text NOT NULL DEFAULT '', "instagram_timestamp" text NOT NULL DEFAULT '', "height" integer NOT NULL DEFAULT '0', "width" integer NOT NULL DEFAULT '0', "like_count" integer NOT NULL DEFAULT '0', "share_count" integer NOT NULL DEFAULT '0', "comment_count" integer NOT NULL DEFAULT '0', "duration" integer NOT NULL DEFAULT '0', "view_count" integer NOT NULL DEFAULT '0', "created_at" TIMESTAMP(0) NOT NULL DEFAULT now(), "updated_at" TIMESTAMP(0) NOT NULL DEFAULT now(), "deleted_at" TIMESTAMP(0), "users" uuid, "socialMedia" uuid, "tikTokProfiles" uuid, CONSTRAINT "PK_4666ba905d93fbc75b5d9ce36b0" PRIMARY KEY ("id"))`);
        await queryRunner.query(`ALTER TABLE "tiktok_profiles" ADD CONSTRAINT "FK_bad95a80d1b8bf349750c4f935a" FOREIGN KEY ("users") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE "tiktok_profiles" ADD CONSTRAINT "FK_a1b03c324605a9a10bbb7a13208" FOREIGN KEY ("socialMedia") REFERENCES "social_medias"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE "tiktok_videos" ADD CONSTRAINT "FK_fb8ff0782745e2b1a5533f64ac3" FOREIGN KEY ("users") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE "tiktok_videos" ADD CONSTRAINT "FK_4981145fd85d6420c24cf714bed" FOREIGN KEY ("socialMedia") REFERENCES "social_medias"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE "tiktok_videos" ADD CONSTRAINT "FK_561933dc6710491eb4d67b5b12a" FOREIGN KEY ("tikTokProfiles") REFERENCES "tiktok_profiles"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE "tiktok_videos" DROP CONSTRAINT "FK_561933dc6710491eb4d67b5b12a"`);
        await queryRunner.query(`ALTER TABLE "tiktok_videos" DROP CONSTRAINT "FK_4981145fd85d6420c24cf714bed"`);
        await queryRunner.query(`ALTER TABLE "tiktok_videos" DROP CONSTRAINT "FK_fb8ff0782745e2b1a5533f64ac3"`);
        await queryRunner.query(`ALTER TABLE "tiktok_profiles" DROP CONSTRAINT "FK_a1b03c324605a9a10bbb7a13208"`);
        await queryRunner.query(`ALTER TABLE "tiktok_profiles" DROP CONSTRAINT "FK_bad95a80d1b8bf349750c4f935a"`);
        await queryRunner.query(`DROP TABLE "tiktok_videos"`);
        await queryRunner.query(`DROP TABLE "tiktok_profiles"`);
    }

}
