import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1735538187279 implements MigrationInterface {
    name = 'Migrations1735538187279'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TYPE "public"."campaigns_profile_privacy_enum" AS ENUM('public', 'private')`);
        await queryRunner.query(`CREATE TABLE "campaigns" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "campaign_name" character varying(255) NOT NULL, "budget_per_influencer" numeric(10,2) NOT NULL, "number_of_influencers" integer NOT NULL, "content_type" character varying(255) NOT NULL, "influencer_type" character varying(255) NOT NULL, "job_requirement" character varying(255) NOT NULL, "posting_start_date" character varying(255) NOT NULL, "posting_end_date" character varying(255) NOT NULL, "first_draft_date" character varying(255) NOT NULL, "profile_privacy" "public"."campaigns_profile_privacy_enum" NOT NULL DEFAULT 'public', "campaign_requirements" text, "attachment" character varying(255), "created_at" TIMESTAMP(0) NOT NULL DEFAULT now(), "updated_at" TIMESTAMP(0) NOT NULL DEFAULT now(), "deleted_at" TIMESTAMP(0), "users" uuid, CONSTRAINT "PK_831e3fcd4fc45b4e4c3f57a9ee4" PRIMARY KEY ("id"))`);
        await queryRunner.query(`ALTER TABLE "campaigns" ADD CONSTRAINT "FK_c264e926c91205210fb1dfa01f7" FOREIGN KEY ("users") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE "campaigns" DROP CONSTRAINT "FK_c264e926c91205210fb1dfa01f7"`);
        await queryRunner.query(`DROP TABLE "campaigns"`);
        await queryRunner.query(`DROP TYPE "public"."campaigns_profile_privacy_enum"`);
    }

}
