import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateCompanySubscriptionHistoriesTable1767610721975 implements MigrationInterface {
  name = "CreateCompanySubscriptionHistoriesTable1767610721975"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "company_subscription_histories" ("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, "company_id" integer NOT NULL, "subscription_id" integer NOT NULL, "subscription_start_date" date NOT NULL, "subscription_end_date" date NOT NULL, "duration" integer NOT NULL, "duration_type" character varying NOT NULL, "subscription_amount" numeric(10,2) NOT NULL, "status" character varying NOT NULL, CONSTRAINT "PK_c57e23f27f0b5466083b3cc59c3" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_subscription_histories" ADD CONSTRAINT "FK_1e69ed7ba7c2b29f559a3a57ecd" FOREIGN KEY ("company_id") REFERENCES "companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_subscription_histories" ADD CONSTRAINT "FK_c5a755c5d01b497551d2fba8d2e" FOREIGN KEY ("subscription_id") REFERENCES "company_subscriptions"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "company_subscription_histories" DROP CONSTRAINT "FK_c5a755c5d01b497551d2fba8d2e"`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_subscription_histories" DROP CONSTRAINT "FK_1e69ed7ba7c2b29f559a3a57ecd"`,
    )
    await queryRunner.query(`DROP TABLE "company_subscription_histories"`)
  }
}
