import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";

export class AddTiendaPrintConfig1761700000000 implements MigrationInterface {
  name = "AddTiendaPrintConfig1761700000000";

  public async up(queryRunner: QueryRunner): Promise<void> {
    const table = await queryRunner.getTable("maetie");

    if (!table) {
      return;
    }

    if (!table.findColumnByName("taller_nombre_impresion")) {
      await queryRunner.addColumn(
        "maetie",
        new TableColumn({
          name: "taller_nombre_impresion",
          type: "varchar",
          length: "255",
          isNullable: true,
        }),
      );
    }

    if (!table.findColumnByName("taller_direccion_impresion")) {
      await queryRunner.addColumn(
        "maetie",
        new TableColumn({
          name: "taller_direccion_impresion",
          type: "varchar",
          length: "255",
          isNullable: true,
        }),
      );
    }

    if (!table.findColumnByName("taller_telefono_impresion")) {
      await queryRunner.addColumn(
        "maetie",
        new TableColumn({
          name: "taller_telefono_impresion",
          type: "varchar",
          length: "80",
          isNullable: true,
        }),
      );
    }

    if (!table.findColumnByName("taller_logo_url")) {
      await queryRunner.addColumn(
        "maetie",
        new TableColumn({
          name: "taller_logo_url",
          type: "varchar",
          length: "500",
          isNullable: true,
        }),
      );
    }
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    const table = await queryRunner.getTable("maetie");

    if (!table) {
      return;
    }

    for (const column of [
      "taller_logo_url",
      "taller_telefono_impresion",
      "taller_direccion_impresion",
      "taller_nombre_impresion",
    ]) {
      if (table.findColumnByName(column)) {
        await queryRunner.dropColumn("maetie", column);
      }
    }
  }
}
