Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\CoreBundle\Doctrine\Provider; | |
use Doctrine\DBAL\Connection; | |
final class VersionProvider implements VersionProviderInterface | |
{ | |
private ?string $version = null; | |
public function __construct( | |
private Connection $connection | |
) { | |
} | |
public function getVersion(): string | |
{ | |
if (null === $this->version) { | |
$this->version = $this->fetchVersionFromDb(); | |
} | |
return $this->version; | |
} | |
public function isMariaDb(): bool | |
{ | |
return str_contains($this->getVersion(), 'MariaDB'); | |
} | |
public function isMySql(): bool | |
{ | |
return !$this->isMariaDb(); | |
} | |
private function fetchVersionFromDb(): string | |
{ | |
return $this->connection->executeQuery('SELECT VERSION()')->fetchOne(); | |
} | |
} | |