Add configurable health check settings for standalone databases and apply them to generated Docker Compose services. Allow disabling health checks and cover the behavior with feature tests.
34 lines
1 KiB
PHP
34 lines
1 KiB
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
/**
|
|
* Shared healthcheck behaviour for standalone database models.
|
|
*
|
|
* Standalone databases use a fixed, type-specific probe command (psql, redis-cli, ...),
|
|
* so only the timing fields and the enable/disable flag are configurable.
|
|
*/
|
|
trait HasDatabaseHealthCheck
|
|
{
|
|
public function isHealthcheckEnabled(): bool
|
|
{
|
|
return (bool) ($this->health_check_enabled ?? true);
|
|
}
|
|
|
|
/**
|
|
* Build the Docker Compose healthcheck block for the given probe command.
|
|
*
|
|
* @param array<int, string> $test The Docker `test` array (e.g. ['CMD', 'pg_isready']).
|
|
* @return array<string, mixed>
|
|
*/
|
|
public function healthCheckConfiguration(array $test): array
|
|
{
|
|
return [
|
|
'test' => $test,
|
|
'interval' => ($this->health_check_interval ?? 15).'s',
|
|
'timeout' => ($this->health_check_timeout ?? 5).'s',
|
|
'retries' => $this->health_check_retries ?? 5,
|
|
'start_period' => ($this->health_check_start_period ?? 5).'s',
|
|
];
|
|
}
|
|
}
|