import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1749727555271 implements MigrationInterface {
    name = 'Migrations1749727555271'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TYPE "public"."subscription_status_enum" RENAME TO "subscription_status_enum_old"`);
        await queryRunner.query(`CREATE TYPE "public"."subscription_status_enum" AS ENUM('pending', 'active', 'decative', 'canceled', 'failed', 'upcoming')`);
        await queryRunner.query(`ALTER TABLE "subscription" ALTER COLUMN "status" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "subscription" ALTER COLUMN "status" TYPE "public"."subscription_status_enum" USING "status"::"text"::"public"."subscription_status_enum"`);
        await queryRunner.query(`ALTER TABLE "subscription" ALTER COLUMN "status" SET DEFAULT 'pending'`);
        await queryRunner.query(`DROP TYPE "public"."subscription_status_enum_old"`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TYPE "public"."subscription_status_enum_old" AS ENUM('pending', 'active', 'decative', 'canceled', 'failed')`);
        await queryRunner.query(`ALTER TABLE "subscription" ALTER COLUMN "status" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "subscription" ALTER COLUMN "status" TYPE "public"."subscription_status_enum_old" USING "status"::"text"::"public"."subscription_status_enum_old"`);
        await queryRunner.query(`ALTER TABLE "subscription" ALTER COLUMN "status" SET DEFAULT 'pending'`);
        await queryRunner.query(`DROP TYPE "public"."subscription_status_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."subscription_status_enum_old" RENAME TO "subscription_status_enum"`);
    }

}
