<?php
namespace Domain\Cache;

/**
 * Repozytorium zarządzania cache (katalogi + Redis)
 *
 * Wyodrębniona logika czyszczenia cache z wstrzykiwanymi zależnościami.
 * Obecnie nie używane przez SettingsController (cache czyszczony bezpośrednio).
 * Przygotowane na przyszłe użycie w innych kontrolerach.
 */
class CacheRepository
{
    private $redisConnection;
    private $basePath;

    /**
     * @param \Shared\Cache\RedisConnection $redisConnection Połączenie z Redis (nullable)
     * @param string $basePath Ścieżka bazowa do katalogów cache
     */
    public function __construct(
        ?\Shared\Cache\RedisConnection $redisConnection = null,
        string $basePath = '../'
    ) {
        $this->redisConnection = $redisConnection;
        $this->basePath = $basePath;
    }

    /**
     * Czyszczenie całego cache (katalogi + Redis)
     *
     * @return array ['success' => bool, 'message' => string]
     */
    public function clearCache(): array
    {
        \Shared\Helpers\Helpers::delete_dir( $this->basePath . 'temp/' );
        \Shared\Helpers\Helpers::delete_dir( $this->basePath . 'thumbs/' );

        $redisCleared = false;
        if ( $this->redisConnection ) {
            $redis = $this->redisConnection->getConnection();
            if ( $redis ) {
                $redis->flushAll();
                $redisCleared = true;
            }
        }

        return [
            'success' => true,
            'message' => 'Cache został wyczyszczony.',
            'redisCleared' => $redisCleared
        ];
    }
}
