1
0
Fork 0
Lightning-Tracker/src/Update/MigrationManager.php

54 lines
1.1 KiB
PHP

<?php
declare(strict_types = 1);
namespace Update;
use Configuration\VersionFile;
use Exception;
final class MigrationManager{
private int $current_version;
private int $current_task;
public function __construct(int $current_version, int $current_task){
$this->current_version = $current_version;
$this->current_task = $current_task;
}
public function getCurrentVersion(): int{
return $this->current_version;
}
public function getCurrentTask(): int{
return $this->current_task;
}
/**
* @throws Exception
*/
public function finishVersion(): void{
++$this->current_version;
$this->current_task = 0;
$this->writeFile();
}
/**
* @throws Exception
*/
public function finishTask(): void{
++$this->current_task;
$this->writeFile();
}
/**
* @throws Exception
*/
private function writeFile(): void{
if (!(new VersionFile($this->current_version, $this->current_task))->writeSafe(VERSION_FILE, VERSION_TMP_FILE)){
throw new Exception('Error updating version file (migration '.$this->current_version.', task '.$this->current_task.').');
}
}
}
?>