<?php
declare(strict_types=1);
namespace Slivki\Services\Switcher;
use Slivki\Enum\SwitcherFeatures;
use Slivki\Repository\ServerFeature\ServerFeatureStateRepositoryInterface;
final class ServerFeatureStateManager implements ServerFeatureStateChecker
{
private ServerFeatureStateRepositoryInterface $serverFeatureStateRepository;
private FeatureStateEvaluator $featureStateEvaluator;
public function __construct(
ServerFeatureStateRepositoryInterface $serverFeatureStateRepository,
FeatureStateEvaluator $featureStateEvaluator
) {
$this->serverFeatureStateRepository = $serverFeatureStateRepository;
$this->featureStateEvaluator = $featureStateEvaluator;
}
public function isServerFeatureEnabled(SwitcherFeatures $serverFeature): bool
{
// warm-up runtime cache
$this->serverFeatureStateRepository->findAll();
return $this->featureStateEvaluator->evaluate(
$this->serverFeatureStateRepository->getById($serverFeature->getValue())
);
}
}