import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateCompanySubscriptionEnums1763545890399 implements MigrationInterface {
  name = "CreateCompanySubscriptionEnums1763545890399"

  public async up(queryRunner: QueryRunner): Promise<void> {
    // Create Duration enum only if missing
    await queryRunner.query(`
      DO $$
      BEGIN
        IF NOT EXISTS (
          SELECT 1 FROM pg_type WHERE typname = 'company_subscriptions_duration_type_enum'
        ) THEN
          CREATE TYPE "public"."company_subscriptions_duration_type_enum"
          AS ENUM ('Months', 'Years');
        END IF;
      END
      $$;
    `)

    // Create Status enum only if missing
    await queryRunner.query(`
      DO $$
      BEGIN
        IF NOT EXISTS (
          SELECT 1 FROM pg_type WHERE typname = 'company_subscriptions_status_enum'
        ) THEN
          CREATE TYPE "public"."company_subscriptions_status_enum"
          AS ENUM ('active', 'expired', 'upcoming');
        END IF;
      END
      $$;
    `)
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    // Drop Status enum if exists
    await queryRunner.query(`
      DO $$
      BEGIN
        IF EXISTS (
          SELECT 1 FROM pg_type WHERE typname = 'company_subscriptions_status_enum'
        ) THEN
          DROP TYPE "public"."company_subscriptions_status_enum";
        END IF;
      END
      $$;
    `)

    // Drop Duration enum if exists
    await queryRunner.query(`
      DO $$
      BEGIN
        IF EXISTS (
          SELECT 1 FROM pg_type WHERE typname = 'company_subscriptions_duration_type_enum'
        ) THEN
          DROP TYPE "public"."company_subscriptions_duration_type_enum";
        END IF;
      END
      $$;
    `)
  }
}
