import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1732538627131 implements MigrationInterface {
    name = 'Migrations1732538627131'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE "file_managers" DROP COLUMN "status"`);
        await queryRunner.query(`DROP TYPE "public"."file_managers_status_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."plans_interval_enum" RENAME TO "plans_interval_enum_old"`);
        await queryRunner.query(`CREATE TYPE "public"."plans_interval_enum" AS ENUM('month', 'year')`);
        await queryRunner.query(`ALTER TABLE "plans" ALTER COLUMN "interval" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "plans" ALTER COLUMN "interval" TYPE "public"."plans_interval_enum" USING "interval"::"text"::"public"."plans_interval_enum"`);
        await queryRunner.query(`ALTER TABLE "plans" ALTER COLUMN "interval" SET DEFAULT 'month'`);
        await queryRunner.query(`DROP TYPE "public"."plans_interval_enum_old"`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TYPE "public"."plans_interval_enum_old" AS ENUM('monthly', 'yearly')`);
        await queryRunner.query(`ALTER TABLE "plans" ALTER COLUMN "interval" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "plans" ALTER COLUMN "interval" TYPE "public"."plans_interval_enum_old" USING "interval"::"text"::"public"."plans_interval_enum_old"`);
        await queryRunner.query(`ALTER TABLE "plans" ALTER COLUMN "interval" SET DEFAULT 'monthly'`);
        await queryRunner.query(`DROP TYPE "public"."plans_interval_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."plans_interval_enum_old" RENAME TO "plans_interval_enum"`);
        await queryRunner.query(`CREATE TYPE "public"."file_managers_status_enum" AS ENUM('pending', 'completed')`);
        await queryRunner.query(`ALTER TABLE "file_managers" ADD "status" "public"."file_managers_status_enum" NOT NULL DEFAULT 'pending'`);
    }

}
