<?php
namespace Incoviba\Service;

use Predis\ClientInterface;
use Incoviba\Common\Implement\Exception\EmptyRedis;
use Predis\Connection\ConnectionException;

class Redis
{
    public function __construct(protected ClientInterface $client) {}

    /**
     * @param string $name
     * @return string|null
     * @throws EmptyRedis
     */
    public function get(string $name): ?string
    {
        try {
            if (!$this->client->exists($name)) {
                throw new EmptyRedis($name);
            }
            return $this->client->get($name);
        } catch (ConnectionException $exception) {
            throw new EmptyRedis($name, $exception);
        }
    }
    public function set(string $name, mixed $value, int $expirationTTL = 60 * 60 * 24): void
    {
        try {
            $this->client->set($name, $value, 'EX', $expirationTTL);
        } catch (ConnectionException) {
            return;
        }
    }
}
