First you have to write a PHP class in your plugin that contains the logic. It is important that the interface `HealthCheckInterface`
is implemented.
Copy namespace ShopStudio \ HealthCheck \ Core \ HealthCheck ;
use Doctrine \ DBAL \ Connection ;
class DatabaseHealthCheck implements HealthCheckInterface
{
public const NAME = 'database' ;
private Connection $connection;
public function __construct ( Connection $connection)
{
$this -> connection = $connection;
}
public function getName () : string
{
return self:: NAME;
}
public function check () : ? HealthCheckResult
{
$up = true ;
try {
$this -> connection -> executeQuery ( $this -> connection -> getDatabasePlatform () -> getDummySelectSQL ()) ;
} catch ( \ Throwable $throwable) {
$up = false ;
}
return new HealthCheckResult ($up , [ 'additional' => 'payload' ]);
}
}
Then implement the PHP class as a service in services.xml. Don't forget to tag the service as shop-studio.health-check.
Copy <? xml version = "1.0" ?>
< container xmlns = "http://symfony.com/schema/dic/services"
xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi : schemaLocation = "http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd" >
< services >
< service id = "ShopStudio\HealthCheck\Core\HealthCheck\DatabaseHealthCheck" >
< argument type = "service" id = "Doctrine\DBAL\Connection" />
< tag name = "shop-studio.health-check" />
</ service >
</ services >
</ container >