'; echo ($isDry ? "🔍 DRY RUN — ningún cambio se aplicará\n" : "🚀 EJECUTANDO — actualizando la DB\n"); echo str_repeat('─', 60) . "\n\n"; $companies = db()->query("SELECT id, name, api_base_url FROM companies WHERE api_base_url IS NOT NULL AND api_base_url != ''")->fetchAll(PDO::FETCH_ASSOC); $totalUpdated = 0; foreach ($companies as $co) { $base = rtrim($co['api_base_url'], '/'); $eps = db()->prepare("SELECT id, endpoint_key, url FROM company_endpoints WHERE company_id = ? AND url IS NOT NULL AND url != ''"); $eps->execute([$co['id']]); $rows = $eps->fetchAll(PDO::FETCH_ASSOC); $hits = []; foreach ($rows as $ep) { $url = $ep['url']; if (!str_starts_with($url, $base)) continue; $suffix = substr($url, strlen($base)); if ($suffix === '') $suffix = '/'; $hits[] = ['id' => $ep['id'], 'key' => $ep['endpoint_key'], 'before' => $url, 'after' => $suffix]; } if (empty($hits)) continue; echo "🏢 {$co['name']} (id={$co['id']})\n"; echo " Base: {$base}\n"; foreach ($hits as $h) { echo " [{$h['key']}]\n"; echo " antes: {$h['before']}\n"; echo " después: {$h['after']}\n"; if (!$isDry) { db()->prepare("UPDATE company_endpoints SET url = ? WHERE id = ?")->execute([$h['after'], $h['id']]); } $totalUpdated++; } echo "\n"; } echo str_repeat('─', 60) . "\n"; if ($totalUpdated === 0) { echo "✅ Ningún endpoint tiene la base URL como prefijo. Nada que cambiar.\n"; } elseif ($isDry) { echo "📋 {$totalUpdated} endpoint(s) serían modificados.\n"; echo " → Para aplicar: abre este script con ?run=1\n"; } else { echo "✅ {$totalUpdated} endpoint(s) actualizados.\n"; } echo '';