import { MigrationInterface, QueryRunner } from 'typeorm';

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

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE\`users\`
        ADD COLUMN \`licenseNumber\` VARCHAR(128) NULL DEFAULT NULL AFTER \`address\``,
    );

    await queryRunner.query(
      `CREATE TABLE IF NOT EXISTS \`driving_offenses\`(
  \`id\` INT(11) NOT NULL AUTO_INCREMENT,
  \`userId\` CHAR(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  \`carId\` INT(11) NOT NULL,
  \`plateNumber\` VARCHAR(128) NOT NULL,
  \`totalBillId\` VARCHAR(128) NULL DEFAULT NULL,
  \`totalPayId\` VARCHAR(128) NULL DEFAULT NULL,
  \`totalAmount\` INT(11) NULL DEFAULT NULL,
  \`complaintCode\` VARCHAR(128) NULL DEFAULT NULL,
  \`complaintStatus\` VARCHAR(128) NULL DEFAULT NULL,
  \`createdAt\` DATETIME NOT NULL,
  \`updatedAt\` DATETIME NOT NULL,
  PRIMARY KEY (\`id\`),
  INDEX \`fk_driving_offenses_users1_idx\` (\`userId\` ASC),
  INDEX \`fk_driving_offenses_cars1_idx\` (\`carId\` ASC),
  CONSTRAINT \`fk_driving_offenses_users1\`
    FOREIGN KEY (\`userId\`)
    REFERENCES \`users\` (\`id\`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT \`fk_driving_offenses_cars1\`
    FOREIGN KEY (\`carId\`)
    REFERENCES \`cars\` (\`id\`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci`,
    );

    await queryRunner.query(
      `CREATE TABLE IF NOT EXISTS \`driving_offense_bills\` (
  \`id\` INT(11) NOT NULL AUTO_INCREMENT,
  \`drivingOffenseId\` INT(11) NOT NULL,
  \`amount\` INT(11) NOT NULL,
  \`billId\` VARCHAR(128) NULL DEFAULT NULL,
  \`payId\` VARCHAR(128) NULL DEFAULT NULL,
  \`city\` VARCHAR(128) NULL DEFAULT NULL,
  \`date\` VARCHAR(128) NULL DEFAULT NULL,
  \`deliveryType\` VARCHAR(128) NULL DEFAULT NULL,
  \`location\` VARCHAR(128) NULL DEFAULT NULL,
  \`type\` VARCHAR(128) NULL DEFAULT NULL,
  \`typeId\` VARCHAR(128) NULL DEFAULT NULL,
  \`imageId\` VARCHAR(128) NULL DEFAULT NULL,
  \`createdAt\` DATETIME NOT NULL,
  \`updatedAt\` DATETIME NOT NULL,
  PRIMARY KEY (\`id\`),
  INDEX \`fk_driving_offenses_bills_driving_offense_idx\` (\`drivingOffenseId\` ASC),
  CONSTRAINT \`fk_driving_offenses_bills_driving_offenses1\`
    FOREIGN KEY (\`drivingOffenseId\`)
    REFERENCES \`driving_offenses\` (\`id\`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci`,
    );

    await queryRunner.query(
      `CREATE TABLE IF NOT EXISTS \`negative_scores\` (
  \`id\` INT(11) NOT NULL AUTO_INCREMENT,
  \`userId\` CHAR(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  \`licenseNumber\` VARCHAR(128) NOT NULL,
  \`negativeScore\` VARCHAR(128) NULL DEFAULT NULL,
  \`offenseCount\` VARCHAR(128) NULL DEFAULT NULL,
  \`allowedToDrive\` TINYINT(1) NULL DEFAULT NULL,
  \`rule\` VARCHAR(128) NULL DEFAULT NULL,
  \`createdAt\` DATETIME NOT NULL,
  \`updatedAt\` DATETIME NOT NULL,
  PRIMARY KEY (\`id\`),
  INDEX \`fk_negative_scores_users1_idx\` (\`userId\` ASC),
  CONSTRAINT \`fk_negative_scores_users1\`
    FOREIGN KEY (\`userId\`)
    REFERENCES \`users\` (\`id\`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;`,
    );
  }

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