import { MigrationInterface, QueryRunner } from 'typeorm';

export class changeInquiryTables1688166068698 implements MigrationInterface {
  name = 'changeInquiryTables1688166068698';

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`ALTER TABLE \`driving_offense_bills\` 
ADD COLUMN \`status\` ENUM('unpaid', 'waiting_pay', 'paid') NOT NULL DEFAULT 'unpaid' AFTER \`imageId\`,
CHANGE COLUMN \`amount\` \`amount\` VARCHAR(128) NOT NULL ,
CHANGE COLUMN \`billId\` \`billId\` VARCHAR(128) NOT NULL ,
CHANGE COLUMN \`payId\` \`payId\` VARCHAR(128) NOT NULL ;`);

    await queryRunner.query(`ALTER TABLE \`driving_offenses\` 
DROP COLUMN \`totalAmount\`,
ADD COLUMN \`paymentId\` INT(11) NULL DEFAULT NULL AFTER \`carId\`,
ADD COLUMN \`offenseAmount\` INT(11) NULL DEFAULT NULL AFTER \`plateNumber\`,
ADD COLUMN \`inquiryAmount\` INT(11) NOT NULL AFTER \`offenseAmount\`,
ADD COLUMN \`status\` ENUM('pending', 'paid_inquiry', 'inquired', 'paid_offense') NOT NULL DEFAULT 'pending' AFTER \`inquiryAmount\`,
ADD COLUMN \`type\` ENUM('basic', 'advanced') NULL DEFAULT 'basic' AFTER \`status\`,
CHANGE COLUMN \`plateNumber\` \`plateNumber\` VARCHAR(128) NOT NULL AFTER \`totalPayId\`,
ADD INDEX \`fk_driving_offenses_payments1_idx\` (\`paymentId\` ASC);`);

    await queryRunner.query(`ALTER TABLE \`negative_scores\` 
ADD COLUMN \`paymentId\` INT(11) NULL DEFAULT NULL AFTER \`userId\`,
ADD COLUMN \`inquiryAmount\` INT(11) NOT NULL AFTER \`allowedToDrive\`,
ADD COLUMN \`status\` ENUM('pending', 'paid_inquiry', 'inquired') NOT NULL DEFAULT 'pending' AFTER \`rule\`,
ADD COLUMN \`type\` ENUM('basic', 'advanced') NULL DEFAULT 'basic' AFTER \`status\`,
CHANGE COLUMN \`offenseCount\` \`offenseCount\` INT(11) NULL DEFAULT NULL ,
ADD INDEX \`fk_negative_scores_payments1_idx\` (\`paymentId\` ASC);`);

    await queryRunner.query(`ALTER TABLE \`payments\` 
ADD COLUMN \`type\` ENUM('shop', 'service', 'oil_gov_service', 'oil_gov_shop', 'inquiry') NULL DEFAULT NULL AFTER \`status\`;`);

    await queryRunner.query(`ALTER TABLE \`driving_offenses\` 
ADD CONSTRAINT \`fk_driving_offenses_payments1\`
  FOREIGN KEY (\`paymentId\`)
  REFERENCES \`payments\` (\`id\`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;`);

    await queryRunner.query(`ALTER TABLE \`negative_scores\` 
ADD CONSTRAINT \`fk_negative_scores_payments1\`
  FOREIGN KEY (\`paymentId\`)
  REFERENCES \`payments\` (\`id\`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;`);
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    //
  }
}
