Initial commit
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
/**
|
||||
* AegisOne Engineering — Установка / обновление базы данных
|
||||
*
|
||||
* Запускает миграцию из data/migration.sql
|
||||
* Безопасно при повторном запуске (IF NOT EXISTS, ON DUPLICATE KEY UPDATE)
|
||||
*/
|
||||
require_once __DIR__ . '/../data/db-config.php';
|
||||
|
||||
try {
|
||||
$pdo = new PDO(
|
||||
'mysql:host=' . DB_HOST . ';port=' . DB_PORT . ';dbname=' . DB_NAME . ';charset=' . DB_CHARSET,
|
||||
DB_USER,
|
||||
DB_PASS,
|
||||
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
|
||||
);
|
||||
|
||||
$sql = file_get_contents(__DIR__ . '/../data/migration.sql');
|
||||
$statements = array_filter(array_map('trim', explode(';', $sql)));
|
||||
$created = 0;
|
||||
$inserted = 0;
|
||||
$errors = 0;
|
||||
|
||||
foreach ($statements as $query) {
|
||||
if ($query === '' || strpos($query, '--') === 0) continue;
|
||||
try {
|
||||
$pdo->exec($query);
|
||||
if (stripos($query, 'CREATE') !== false) $created++;
|
||||
if (stripos($query, 'INSERT') !== false) $inserted++;
|
||||
} catch (\Throwable $e) {
|
||||
$errors++;
|
||||
}
|
||||
}
|
||||
|
||||
echo '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Миграция — AegisOne</title>';
|
||||
echo '<style>body{font-family:Inter,sans-serif;background:#0D1B2A;color:#E8EDF2;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;}';
|
||||
echo '.box{background:#1B2838;border:1px solid #2a3a4a;border-radius:12px;padding:40px;max-width:500px;text-align:center;}';
|
||||
echo 'h1{color:#4DA8DA;margin:0 0 8px;font-size:22px;}p{color:#A0B4C8;font-size:14px;margin:0 0 20px;line-height:1.6;}';
|
||||
echo '.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0;}';
|
||||
echo '.stat{background:#0D1B2A;border-radius:8px;padding:16px;text-align:center;}';
|
||||
echo '.stat-value{font-size:28px;font-weight:700;color:#00ADEF;}';
|
||||
echo '.stat-label{font-size:11px;color:#6B8299;text-transform:uppercase;letter-spacing:0.1em;margin-top:4px;}';
|
||||
echo '.btn{display:inline-block;background:linear-gradient(135deg,#00ADEF,#0095cc);color:#fff;padding:12px 28px;border-radius:8px;text-decoration:none;font-weight:600;font-size:14px;margin-top:16px;}';
|
||||
echo '</style></head><body><div class="box">';
|
||||
echo '<h1>✅ Миграция завершена</h1>';
|
||||
echo '<p>База данных <strong>' . htmlspecialchars(DB_NAME) . '</strong> обновлена.</p>';
|
||||
echo '<div class="stats">';
|
||||
echo '<div class="stat"><div class="stat-value">' . $created . '</div><div class="stat-label">Таблиц</div></div>';
|
||||
echo '<div class="stat"><div class="stat-value">' . $inserted . '</div><div class="stat-label">Записей</div></div>';
|
||||
echo '<div class="stat"><div class="stat-value">' . $errors . '</div><div class="stat-label">Ошибок</div></div>';
|
||||
echo '</div>';
|
||||
echo '<a href="/service/" class="btn">Войти в систему</a>';
|
||||
echo '</div></body></html>';
|
||||
|
||||
} catch (\Throwable $e) {
|
||||
echo '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Ошибка — AegisOne</title>';
|
||||
echo '<style>body{font-family:Inter,sans-serif;background:#0D1B2A;color:#E8EDF2;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;}';
|
||||
echo '.box{background:#1B2838;border:1px solid #ef4444;border-radius:12px;padding:40px;max-width:500px;text-align:center;}';
|
||||
echo 'h1{color:#ef4444;margin:0 0 8px;font-size:22px;}p{color:#A0B4C8;font-size:14px;line-height:1.6;}</style></head><body>';
|
||||
echo '<div class="box"><h1>❌ Ошибка подключения</h1><p>' . htmlspecialchars($e->getMessage()) . '</p></div></body></html>';
|
||||
}
|
||||
Reference in New Issue
Block a user