import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1742301723727 implements MigrationInterface {
    name = 'Migrations1742301723727'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TABLE "user_permissions" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "type" character varying, "limit" integer NOT NULL DEFAULT '0', "used" integer NOT NULL DEFAULT '0', "remaining" integer NOT NULL DEFAULT '0', "created_at" TIMESTAMP(0) NOT NULL DEFAULT now(), "usersId" uuid, CONSTRAINT "PK_01f4295968ba33d73926684264f" PRIMARY KEY ("id"))`);
        await queryRunner.query(`ALTER TABLE "user_permissions" DROP COLUMN "type"`);
        await queryRunner.query(`ALTER TABLE "user_permissions" DROP COLUMN "limit"`);
        await queryRunner.query(`ALTER TABLE "user_permissions" DROP COLUMN "used"`);
        await queryRunner.query(`ALTER TABLE "user_permissions" DROP COLUMN "remaining"`);
        await queryRunner.query(`ALTER TABLE "user_permissions" ADD "type" character varying`);
        await queryRunner.query(`ALTER TABLE "user_permissions" ADD "limit" integer NOT NULL DEFAULT '0'`);
        await queryRunner.query(`ALTER TABLE "user_permissions" ADD "used" integer NOT NULL DEFAULT '0'`);
        await queryRunner.query(`ALTER TABLE "user_permissions" ADD "remaining" integer NOT NULL DEFAULT '0'`);
        await queryRunner.query(`ALTER TABLE "youtube_channels" ALTER COLUMN "engagement_rate" SET DEFAULT '0.0000'`);
        await queryRunner.query(`ALTER TABLE "facebook_pages" ALTER COLUMN "engagement_rate" SET DEFAULT '0.0000'`);
        await queryRunner.query(`ALTER TABLE "instagram_profiles" ALTER COLUMN "engagement_rate" SET DEFAULT '0.0000'`);
        await queryRunner.query(`ALTER TABLE "tiktok_profiles" ALTER COLUMN "engagement_rate" SET DEFAULT '0.0000'`);
        await queryRunner.query(`ALTER TABLE "user_permissions" ADD CONSTRAINT "FK_440db3d6dd15ea8bfb0af417033" FOREIGN KEY ("usersId") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE "user_permissions" DROP CONSTRAINT "FK_440db3d6dd15ea8bfb0af417033"`);
        await queryRunner.query(`ALTER TABLE "tiktok_profiles" ALTER COLUMN "engagement_rate" SET DEFAULT 0.0000`);
        await queryRunner.query(`ALTER TABLE "instagram_profiles" ALTER COLUMN "engagement_rate" SET DEFAULT 0.0000`);
        await queryRunner.query(`ALTER TABLE "facebook_pages" ALTER COLUMN "engagement_rate" SET DEFAULT 0.0000`);
        await queryRunner.query(`ALTER TABLE "youtube_channels" ALTER COLUMN "engagement_rate" SET DEFAULT 0.0000`);
        await queryRunner.query(`ALTER TABLE "user_permissions" DROP COLUMN "remaining"`);
        await queryRunner.query(`ALTER TABLE "user_permissions" DROP COLUMN "used"`);
        await queryRunner.query(`ALTER TABLE "user_permissions" DROP COLUMN "limit"`);
        await queryRunner.query(`ALTER TABLE "user_permissions" DROP COLUMN "type"`);
        await queryRunner.query(`ALTER TABLE "user_permissions" ADD "remaining" integer NOT NULL DEFAULT '0'`);
        await queryRunner.query(`ALTER TABLE "user_permissions" ADD "used" integer NOT NULL DEFAULT '0'`);
        await queryRunner.query(`ALTER TABLE "user_permissions" ADD "limit" integer NOT NULL DEFAULT '0'`);
        await queryRunner.query(`ALTER TABLE "user_permissions" ADD "type" character varying`);
        await queryRunner.query(`DROP TABLE "user_permissions"`);
    }

}
