PostgresHealthProbe.php
Pfad: src/Infrastructure/Persistence/PostgresHealthProbe.php
Ext: php
Größe: 1346 Bytes
Geändert: 2026-07-15 16:12:41+02
<?php
declare(strict_types=1);
namespace Demo\Infrastructure\Persistence;
use Demo\Domain\Health\HealthProbePort;
use Demo\Domain\Health\HealthReport;
use Throwable;
/**
* Getriebener Adapter: prueft die Datenbank ueber eine minimale Abfrage
* und uebersetzt das technische Ergebnis in ein Domaenen-HealthReport.
*/
final class PostgresHealthProbe implements HealthProbePort
{
/** @var PdoConnectionFactory Fabrik fuer die Datenbankverbindung. */
private PdoConnectionFactory $factory;
/**
* Nimmt die Verbindungs-Fabrik entgegen.
*
* @param PdoConnectionFactory $factory Injizierte Verbindungs-Fabrik.
*/
public function __construct(PdoConnectionFactory $factory)
{
$this->factory = $factory;
}
/**
* Fuehrt eine minimale Abfrage aus und meldet Erfolg oder neutralen Misserfolg.
*
* @return HealthReport Ergebnis der Datenbankpruefung.
*/
public function probe(): HealthReport
{
try {
$statement = $this->factory->create()->prepare('SELECT 1');
$statement->execute();
return new HealthReport(true, 'database reachable');
} catch (Throwable $error) {
error_log(__METHOD__ . ': ' . $error->getMessage());
return new HealthReport(false, 'database unreachable');
}
}
}