import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1740133403767 implements MigrationInterface {
    name = 'Migrations1740133403767'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TYPE "public"."campaign_payment_history_payment_mode_enum" AS ENUM('offline', 'online')`);
        await queryRunner.query(`CREATE TYPE "public"."campaign_payment_history_payment_status_enum" AS ENUM('credited', 'debited', 'refunded')`);
        await queryRunner.query(`CREATE TABLE "campaign_payment_history" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "currency" character varying, "amount" numeric(10,2) NOT NULL DEFAULT '0', "amount_usd" numeric(10,2) NOT NULL DEFAULT '0', "payment_mode" "public"."campaign_payment_history_payment_mode_enum" NOT NULL DEFAULT 'online', "payment_status" "public"."campaign_payment_history_payment_status_enum" NOT NULL DEFAULT 'credited', "created_at" TIMESTAMP(0) NOT NULL DEFAULT now(), "updated_at" TIMESTAMP(0) NOT NULL DEFAULT now(), "deleted_at" TIMESTAMP(0), "user_id" uuid, "campaign_id" uuid, "campaign_payment_id" uuid, CONSTRAINT "PK_87c1ff601ccaf33a3712cd89d01" PRIMARY KEY ("id"))`);
        await queryRunner.query(`ALTER TABLE "campaign_payment_history" ADD CONSTRAINT "FK_094e3aa6c609138125698ed0913" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE "campaign_payment_history" ADD CONSTRAINT "FK_b0aef25fe52df68749929368b49" FOREIGN KEY ("campaign_id") REFERENCES "campaigns"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE "campaign_payment_history" ADD CONSTRAINT "FK_8e2f6c5be89c5b1f8d954221a6c" FOREIGN KEY ("campaign_payment_id") REFERENCES "campaign_payments"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE "campaign_payment_history" DROP CONSTRAINT "FK_8e2f6c5be89c5b1f8d954221a6c"`);
        await queryRunner.query(`ALTER TABLE "campaign_payment_history" DROP CONSTRAINT "FK_b0aef25fe52df68749929368b49"`);
        await queryRunner.query(`ALTER TABLE "campaign_payment_history" DROP CONSTRAINT "FK_094e3aa6c609138125698ed0913"`);
        await queryRunner.query(`DROP TABLE "campaign_payment_history"`);
        await queryRunner.query(`DROP TYPE "public"."campaign_payment_history_payment_status_enum"`);
        await queryRunner.query(`DROP TYPE "public"."campaign_payment_history_payment_mode_enum"`);
    }

}
