import subprocess
import sys
import os

subprocess.check_call([sys.executable, "-m", "pip", "install", "pymysql", "--quiet"])
import pymysql

DB_CONFIG = {
    "host":            os.environ.get("MYSQL_HOST", "localhost"),
    "port":            int(os.environ.get("MYSQL_PORT", 3306)),
    "user":            os.environ.get("MYSQL_USER", "root"),
    "password":        os.environ.get("MYSQL_PASSWORD", ""),
    "database":        os.environ.get("MYSQL_DATABASE", "admanager"),
    "charset":         "utf8mb4",
    "connect_timeout": 15,
}

conn = pymysql.connect(**DB_CONFIG)
cursor = conn.cursor()

# Torna as colunas LDAP opcionais (NULL permitido, default vazio)
# para permitir criar empresas sem configurar AD/LDAP de imediato
alterations = [
    "MODIFY COLUMN base_dn          VARCHAR(500) NULL DEFAULT ''",
    "MODIFY COLUMN default_user_ou  VARCHAR(500) NULL DEFAULT ''",
    "MODIFY COLUMN default_group_ou VARCHAR(500) NULL DEFAULT ''",
    "MODIFY COLUMN preferred_dc     VARCHAR(255) NULL DEFAULT ''",
    "MODIFY COLUMN ldap_port        SMALLINT     NULL DEFAULT 389",
    "MODIFY COLUMN use_ssl          TINYINT(1)   NULL DEFAULT 0",
    "MODIFY COLUMN upn_suffix       VARCHAR(255) NULL DEFAULT ''",
    "MODIFY COLUMN ad_service_user  VARCHAR(255) NULL DEFAULT ''",
    "MODIFY COLUMN allow_global_admin_access TINYINT(1) NULL DEFAULT 1",
]

# Verifica se a coluna allow_global_admin_access existe
cursor.execute("SHOW COLUMNS FROM tenants LIKE 'allow_global_admin_access'")
if not cursor.fetchone():
    print("[v0] Adicionando coluna allow_global_admin_access...")
    cursor.execute("ALTER TABLE tenants ADD COLUMN allow_global_admin_access TINYINT(1) NULL DEFAULT 1")
    conn.commit()
    print("[v0] Coluna allow_global_admin_access adicionada.")

# Aplica os ALTER COLUMN restantes
sql = "ALTER TABLE tenants " + ",\n  ".join(alterations[:-1])
print(f"[v0] Executando: {sql[:120]}...")
cursor.execute(sql)
conn.commit()
print("[v0] Colunas LDAP agora aceitam NULL com default vazio. Pronto.")

cursor.close()
conn.close()
