. */ namespace OrangeHRM\Installer\Util; use Doctrine\DBAL\Connection as DBALConnection; use Doctrine\DBAL\Exception; use Doctrine\DBAL\Schema\AbstractSchemaManager; use OrangeHRM\Installer\Exception\SystemCheckException; use OrangeHRM\Installer\Util\Dto\DatabaseConnectionWrapper; class UpgraderConfigUtility { /** * @return bool */ public function checkDatabaseStatus(): bool { return $this->getSchemaManager()->tablesExist(['ohrm_upgrade_status']); } /** * @return DBALConnection */ private function getConnection(): DBALConnection { return Connection::getConnection(); } /** * @return AbstractSchemaManager * @throws Exception */ private function getSchemaManager(): AbstractSchemaManager { return $this->getConnection()->createSchemaManager(); } /** * @throws SystemCheckException */ public function checkDatabaseConnection(): void { $connection = DatabaseConnectionWrapper::establishConnection(fn () => $this->getConnection()); if ($connection->hasError()) { throw new SystemCheckException($connection->getErrorMessage()); } if ($this->checkDatabaseStatus()) { throw new SystemCheckException('Failed to Proceed: Interrupted Database'); } } }