import { MigrationInterface, QueryRunner } from "typeorm"

export class AddInvoiceTripsTable1759991419250 implements MigrationInterface {
  name = "AddInvoiceTripsTable1759991419250"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "invoice_trips" ("id" SERIAL NOT NULL, "invoice_id" integer NOT NULL, "trip_id" integer NOT NULL, "total_trip_price" integer NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), "deleted_at" TIMESTAMP, CONSTRAINT "PK_414d9e2bf23eaae640aba80b2be" PRIMARY KEY ("id"))`,
    )

    await queryRunner.query(
      `ALTER TABLE "invoices" ADD "base_price_total" character varying NOT NULL DEFAULT '0'`,
    )
    await queryRunner.query(
      `ALTER TABLE "invoices" ADD "addons_price_total" character varying NOT NULL DEFAULT '0'`,
    )
    await queryRunner.query(
      `ALTER TABLE "invoices" ADD "total_amount" character varying NOT NULL DEFAULT '0'`,
    )
    await queryRunner.query(
      `ALTER TABLE "invoice_trips" ADD CONSTRAINT "FK_89fbe49346dfaa27f788afacc1f" FOREIGN KEY ("invoice_id") REFERENCES "invoices"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "invoice_trips" ADD CONSTRAINT "FK_37467fe539de77f84f0927dc90b" FOREIGN KEY ("trip_id") REFERENCES "trips"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "invoice_trips" DROP CONSTRAINT "FK_37467fe539de77f84f0927dc90b"`,
    )
    await queryRunner.query(
      `ALTER TABLE "invoice_trips" DROP CONSTRAINT "FK_89fbe49346dfaa27f788afacc1f"`,
    )
    await queryRunner.query(`ALTER TABLE "invoices" DROP COLUMN "total_amount"`)
    await queryRunner.query(
      `ALTER TABLE "invoices" DROP COLUMN "addons_price_total"`,
    )
    await queryRunner.query(
      `ALTER TABLE "invoices" DROP COLUMN "base_price_total"`,
    )
    await queryRunner.query(`DROP TABLE "invoice_trips"`)
  }
}
