import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1780574884114 implements MigrationInterface {
    name = 'Migrations1780574884114'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TYPE "public"."whatsapp_messages_registration_status_enum" AS ENUM('registered', 'non_registered')`);
        await queryRunner.query(`CREATE TYPE "public"."whatsapp_messages_direction_enum" AS ENUM('inbound', 'outbound')`);
        await queryRunner.query(`CREATE TABLE "whatsapp_messages" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "whatsapp_message_id" character varying, "phone_number" character varying NOT NULL, "registration_status" "public"."whatsapp_messages_registration_status_enum" NOT NULL, "message_type" character varying, "message_content" text, "customer_name" character varying, "direction" "public"."whatsapp_messages_direction_enum" NOT NULL DEFAULT 'inbound', "is_auto_reply" boolean NOT NULL DEFAULT false, "raw_payload" jsonb, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "user_id" uuid, CONSTRAINT "PK_807bc612c6b98de7645a99805ca" PRIMARY KEY ("id"))`);
        await queryRunner.query(`CREATE UNIQUE INDEX "IDX_394f40b8189b52c1bddbe1bde4" ON "whatsapp_messages" ("whatsapp_message_id") `);
        await queryRunner.query(`CREATE INDEX "IDX_7ffeda086434030332fa1b4694" ON "whatsapp_messages" ("phone_number") `);
        await queryRunner.query(`ALTER TABLE "whatsapp_messages" ADD CONSTRAINT "FK_e014aae763f41e25cacfe4e0885" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE "whatsapp_messages" DROP CONSTRAINT "FK_e014aae763f41e25cacfe4e0885"`);
        await queryRunner.query(`DROP INDEX "public"."IDX_7ffeda086434030332fa1b4694"`);
        await queryRunner.query(`DROP INDEX "public"."IDX_394f40b8189b52c1bddbe1bde4"`);
        await queryRunner.query(`DROP TABLE "whatsapp_messages"`);
        await queryRunner.query(`DROP TYPE "public"."whatsapp_messages_direction_enum"`);
        await queryRunner.query(`DROP TYPE "public"."whatsapp_messages_registration_status_enum"`);
    }

}
