import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1777373305389 implements MigrationInterface {
    name = 'Migrations1777373305389'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TYPE "public"."notifications_type_enum" RENAME TO "notifications_type_enum_old"`);
        await queryRunner.query(`CREATE TYPE "public"."notifications_type_enum" AS ENUM('notification', 'system', 'guest', 'user', 'chase_up')`);
        await queryRunner.query(`ALTER TABLE "notifications" ALTER COLUMN "type" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "notifications" ALTER COLUMN "type" TYPE "public"."notifications_type_enum" USING "type"::"text"::"public"."notifications_type_enum"`);
        await queryRunner.query(`ALTER TABLE "notifications" ALTER COLUMN "type" SET DEFAULT 'notification'`);
        await queryRunner.query(`DROP TYPE "public"."notifications_type_enum_old"`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TYPE "public"."notifications_type_enum_old" AS ENUM('notification', 'system', 'guest', 'user')`);
        await queryRunner.query(`ALTER TABLE "notifications" ALTER COLUMN "type" DROP DEFAULT`);
        await queryRunner.query(`ALTER TABLE "notifications" ALTER COLUMN "type" TYPE "public"."notifications_type_enum_old" USING "type"::"text"::"public"."notifications_type_enum_old"`);
        await queryRunner.query(`ALTER TABLE "notifications" ALTER COLUMN "type" SET DEFAULT 'notification'`);
        await queryRunner.query(`DROP TYPE "public"."notifications_type_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."notifications_type_enum_old" RENAME TO "notifications_type_enum"`);
        await queryRunner.query(`CREATE TYPE "public"."user_notification_preferences_channel_enum_old" AS ENUM('whatsapp_notification', 'email_notification', 'notification')`);
        await queryRunner.query(`ALTER TABLE "user_notification_preferences" ALTER COLUMN "channel" TYPE "public"."user_notification_preferences_channel_enum_old" USING "channel"::"text"::"public"."user_notification_preferences_channel_enum_old"`);
        await queryRunner.query(`DROP TYPE "public"."user_notification_preferences_channel_enum"`);
        await queryRunner.query(`ALTER TYPE "public"."user_notification_preferences_channel_enum_old" RENAME TO "user_notification_preferences_channel_enum"`);
        await queryRunner.query(`ALTER TABLE "campaigns" ALTER COLUMN "post_sync_cron_at" SET DEFAULT CURRENT_DATE`);
    }

}
