mirror of
https://github.com/chylex/Lightning-Tracker.git
synced 2024-09-14 05:42:44 +02:00
58 lines
1.4 KiB
PHP
58 lines
1.4 KiB
PHP
<?php
|
|
declare(strict_types = 1);
|
|
|
|
use Database\DB;
|
|
use Logging\Log;
|
|
use Update\AbstractMigrationProcess;
|
|
use Update\MigrationManager;
|
|
use Update\Migrations\Migration9;
|
|
|
|
function get_migration(int $id): ?AbstractMigrationProcess{
|
|
switch($id){
|
|
case 9:
|
|
return new Migration9();
|
|
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
|
|
$manager = new MigrationManager(MIGRATION_VERSION, MIGRATION_TASK);
|
|
|
|
try{
|
|
$db = DB::get();
|
|
}catch(Exception $e){
|
|
die('Lightning Tracker tried updating to a new version but could not connect to the database.');
|
|
}
|
|
|
|
try{
|
|
while(($version = $manager->getCurrentVersion()) < TRACKER_MIGRATION_VERSION){
|
|
$migration = get_migration($version);
|
|
|
|
if ($migration === null){
|
|
die('Cannot automatically update the installed version.');
|
|
}
|
|
|
|
$tasks = $migration->getTasks();
|
|
|
|
while(($id = $manager->getCurrentTask()) < count($tasks)){
|
|
$task = $tasks[$id];
|
|
$task->prepare($db);
|
|
$task->execute($db);
|
|
$task->finalize($db);
|
|
$manager->finishTask();
|
|
}
|
|
|
|
$manager->finishVersion();
|
|
}
|
|
}catch(Exception $e){
|
|
Log::critical($e);
|
|
|
|
if ($db->inTransaction()){
|
|
$db->rollBack();
|
|
}
|
|
|
|
die('Lightning Tracker tried updating to a new version and encountered an unexpected error (migration '.$manager->getCurrentVersion().', task '.$manager->getCurrentTask().'). Please check the server logs.');
|
|
}
|
|
?>
|