src/Services/City/CityCacheService.php line 29

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\Services\City;
  4. use Slivki\Entity\City;
  5. use Slivki\Repository\City\CityRepositoryInterface;
  6. use Slivki\Util\SoftCache;
  7. final class CityCacheService
  8. {
  9.     private const CACHE_NAME 'city';
  10.     private CityRepositoryInterface $cityRepository;
  11.     public function __construct(CityRepositoryInterface $cityRepository)
  12.     {
  13.         $this->cityRepository $cityRepository;
  14.     }
  15.     public function getCityIdByDomain(string $domain): ?int
  16.     {
  17.         $softCache = new SoftCache(self::CACHE_NAME);
  18.         $cityId $softCache->get($domain);
  19.         if (null === $cityId || false === $cityId) {
  20.             $city $this->cityRepository->findActiveByDomain($domain);
  21.             if ($city !== null) {
  22.                 $cityId $city->getID();
  23.                 $softCache->set($domain$cityId60 60);
  24.             } else {
  25.                 $cityId City::DEFAULT_CITY_ID;
  26.             }
  27.         }
  28.         return $cityId;
  29.     }
  30. }