import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateVendorsTable1762412300000 implements MigrationInterface {
  name = "CreateVendorsTable1762412300000"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "vendor_types" ("created_by" integer, "updated_by" integer, "deleted_by" integer, "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), "deleted_at" TIMESTAMP, "id" SERIAL NOT NULL, "type_name" character varying(255) NOT NULL, "company_id" integer NOT NULL, CONSTRAINT "PK_vendor_types_id" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `CREATE TABLE "vendors" ("created_by" integer, "updated_by" integer, "deleted_by" integer, "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), "deleted_at" TIMESTAMP, "id" SERIAL NOT NULL, "vendor_name" character varying(255) NOT NULL, "company_id" integer NOT NULL, "type_id" integer NOT NULL, "phone_number" character varying(255), "email" character varying(255), "project_id" integer, "notes" text, CONSTRAINT "PK_vendors_id" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "vendor_types" ADD CONSTRAINT "FK_vendor_types_company_id" FOREIGN KEY ("company_id") REFERENCES "companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "vendors" ADD CONSTRAINT "FK_vendors_company_id" FOREIGN KEY ("company_id") REFERENCES "companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "vendors" ADD CONSTRAINT "FK_vendors_type_id" FOREIGN KEY ("type_id") REFERENCES "vendor_types"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "vendors" ADD CONSTRAINT "FK_vendors_project_id" FOREIGN KEY ("project_id") REFERENCES "projects"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "vendors" DROP CONSTRAINT "FK_vendors_project_id"`,
    )
    await queryRunner.query(
      `ALTER TABLE "vendors" DROP CONSTRAINT "FK_vendors_type_id"`,
    )
    await queryRunner.query(
      `ALTER TABLE "vendors" DROP CONSTRAINT "FK_vendors_company_id"`,
    )
    await queryRunner.query(
      `ALTER TABLE "vendor_types" DROP CONSTRAINT "FK_vendor_types_company_id"`,
    )
    await queryRunner.query(`DROP TABLE "vendors"`)
    await queryRunner.query(`DROP TABLE "vendor_types"`)
  }
}
