You've already forked Php-Template
All checks were successful
🧪✨ Tests Workflow / 🛡️ 🔒 Library Audit (push) Successful in 1m42s
🧪✨ Tests Workflow / 📝 ✨ Code Lint (push) Successful in 1m38s
🧪✨ Tests Workflow / 🛡️ 🔒 License Check (push) Successful in 2m5s
🧪✨ Tests Workflow / 🧪 ✨ Database Migrations (push) Successful in 2m44s
🧪✨ Tests Workflow / 🐙 🔍 Code Sniffer (push) Successful in 2m28s
🧪✨ Tests Workflow / 🧪 ✅ Unit Tests (push) Successful in 1m27s
Reviewed-on: #16 Co-authored-by: Ron Rise <ron@siteworxpro.com> Co-committed-by: Ron Rise <ron@siteworxpro.com>
54 lines
1.5 KiB
PHP
54 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Siteworxpro\App\Controllers;
|
|
|
|
use Illuminate\Database\PostgresConnection;
|
|
use Nyholm\Psr7\ServerRequest;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Siteworxpro\App\Http\JsonResponseFactory;
|
|
use Siteworxpro\App\Models\Model;
|
|
use Siteworxpro\App\Services\Facades\Redis;
|
|
use Siteworxpro\HttpStatus\CodesEnum;
|
|
|
|
/**
|
|
* Class HealthcheckController
|
|
*
|
|
* Handles health check requests to verify database and cache connectivity.
|
|
*
|
|
* @package Siteworxpro\App\Controllers
|
|
*/
|
|
class HealthcheckController extends Controller
|
|
{
|
|
/**
|
|
* @throws \JsonException
|
|
*/
|
|
public function get(ServerRequest $request): ResponseInterface
|
|
{
|
|
try {
|
|
/** @var PostgresConnection $conn */
|
|
$conn = Model::getConnectionResolver()->connection();
|
|
$conn->getPdo()->exec('SELECT 1');
|
|
|
|
$response = Redis::ping();
|
|
if ($response->getPayload() !== 'PONG') {
|
|
throw new \Exception('Redis ping failed');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return JsonResponseFactory::createJsonResponse(
|
|
[
|
|
'status_code' => CodesEnum::SERVICE_UNAVAILABLE->value,
|
|
'message' => 'Healthcheck Failed',
|
|
'error' => $e->getMessage(),
|
|
],
|
|
CodesEnum::SERVICE_UNAVAILABLE
|
|
);
|
|
}
|
|
|
|
return JsonResponseFactory::createJsonResponse(
|
|
['status_code' => 200, 'message' => 'Healthcheck OK']
|
|
);
|
|
}
|
|
}
|