41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
|
<?php
|
||
|
namespace ProVM\Common\Service;
|
||
|
|
||
|
use ProVM\Common\Factory\Model;
|
||
|
|
||
|
class Install
|
||
|
{
|
||
|
public function __construct(protected Model $factory, protected array $model_list) {}
|
||
|
|
||
|
public function check(): bool
|
||
|
{
|
||
|
foreach ($this->model_list as $model_class) {
|
||
|
$repository = $this->factory->find($model_class);
|
||
|
if (!$repository->isInstalled()) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
public function install(): void
|
||
|
{
|
||
|
$check = true;
|
||
|
$repository = null;
|
||
|
foreach ($this->model_list as $model_class) {
|
||
|
$repository = $this->factory->find($model_class);
|
||
|
if ($check) {
|
||
|
$query = "SET FOREIGN_KEY_CHECKS = 0";
|
||
|
$repository->getConnection()->query($query);
|
||
|
$check = false;
|
||
|
}
|
||
|
if (!$repository->isInstalled()) {
|
||
|
$repository->install();
|
||
|
}
|
||
|
}
|
||
|
if (!$check) {
|
||
|
$query = "SET FOREIGN_KEY_CHECKS = 1";
|
||
|
$repository->getConnection()->query($query);
|
||
|
}
|
||
|
}
|
||
|
}
|