Recorre company_endpoints y elimina el prefijo api_base_url de las URLs absolutas, dejando solo la ruta relativa. Dry-run por defecto (?run=1 para ejecutar). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
60 lines
2.0 KiB
PHP
60 lines
2.0 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/../config/env.php';
|
|
require_once __DIR__ . '/../config/db.php';
|
|
|
|
$isDry = ($_GET['run'] ?? '') !== '1';
|
|
|
|
header('Content-Type: text/html; charset=utf-8');
|
|
echo '<pre style="font-family:monospace;font-size:13px;padding:20px">';
|
|
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 '</pre>';
|