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

// El nombre de una base NO identifica un tenant por si solo — la misma base
// "mbinvautocentrorodriguez" existe en el servidor de pruebas (:3310) y va a
// existir en produccion (:3309): dos tenants distintos, mismo db_name. La
// unicidad real es (db_host, db_port, db_name), nunca db_name solo.
export class AddTenantConnectionUniqueness1762000000000
  implements MigrationInterface
{
  private readonly indexName = "UQ_tenants_host_port_dbname";

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.createIndex(
      "tenants",
      new TableIndex({
        name: this.indexName,
        columnNames: ["db_host", "db_port", "db_name"],
        isUnique: true,
      }),
    );
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.dropIndex("tenants", this.indexName);
  }
}
