<?php
namespace App\Cache;

use TikScraper\Interfaces\CacheInterface;

class ApcuCache implements CacheInterface {
    function __construct() {
        if (!(extension_loaded('apcu') && apcu_enabled())) {
            throw new \Exception('APCu not enabled');
        }
    }

    public function get(string $cache_key): ?object {
        $data = apcu_fetch($cache_key);
        return $data !== false ? json_decode($data) : null;
    }

    public function exists(string $cache_key): bool {
        return apcu_exists($cache_key);
    }

    public function set(string $cache_key, string $data, $timeout = 3600): void {
        apcu_store($cache_key, $data, $timeout);
    }
}