update
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace SleekDB\Classes;
|
||||
|
||||
|
||||
use SleekDB\Cache;
|
||||
use SleekDB\Exceptions\IOException;
|
||||
use SleekDB\QueryBuilder;
|
||||
|
||||
/**
|
||||
* Class CacheHandler
|
||||
* Bridge between Query and Cache
|
||||
*/
|
||||
class CacheHandler
|
||||
{
|
||||
/**
|
||||
* @var Cache
|
||||
*/
|
||||
protected $cache;
|
||||
|
||||
protected $cacheTokenArray;
|
||||
protected $regenerateCache;
|
||||
protected $useCache;
|
||||
|
||||
/**
|
||||
* CacheHandler constructor.
|
||||
* @param string $storePath
|
||||
* @param QueryBuilder $queryBuilder
|
||||
*/
|
||||
public function __construct(string $storePath, QueryBuilder $queryBuilder)
|
||||
{
|
||||
$this->cacheTokenArray = $queryBuilder->_getCacheTokenArray();
|
||||
|
||||
$queryBuilderProperties = $queryBuilder->_getConditionProperties();
|
||||
$this->useCache = $queryBuilderProperties["useCache"];
|
||||
$this->regenerateCache = $queryBuilderProperties["regenerateCache"];
|
||||
|
||||
$this->cache = new Cache($storePath, $this->_getCacheTokenArray(), $queryBuilderProperties["cacheLifetime"]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Cache
|
||||
*/
|
||||
public function getCache(): Cache
|
||||
{
|
||||
return $this->cache;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get results from cache
|
||||
* @return array|null
|
||||
* @throws IOException
|
||||
*/
|
||||
public function getCacheContent($getOneDocument)
|
||||
{
|
||||
if($this->getUseCache() !== true){
|
||||
return null;
|
||||
}
|
||||
|
||||
$this->updateCacheTokenArray(['oneDocument' => $getOneDocument]);
|
||||
|
||||
if($this->regenerateCache === true) {
|
||||
$this->getCache()->delete();
|
||||
}
|
||||
|
||||
$cacheResults = $this->getCache()->get();
|
||||
if(is_array($cacheResults)) {
|
||||
return $cacheResults;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add content to cache
|
||||
* @param array $results
|
||||
* @throws IOException
|
||||
*/
|
||||
public function setCacheContent(array $results)
|
||||
{
|
||||
if($this->getUseCache() === true){
|
||||
$this->getCache()->set($results);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all cache files that have no lifetime.
|
||||
* @return bool
|
||||
*/
|
||||
public function deleteAllWithNoLifetime(): bool
|
||||
{
|
||||
return $this->getCache()->deleteAllWithNoLifetime();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a reference to the array used for cache token generation
|
||||
* @return array
|
||||
*/
|
||||
public function &_getCacheTokenArray(): array
|
||||
{
|
||||
return $this->cacheTokenArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $tokenUpdate
|
||||
*/
|
||||
private function updateCacheTokenArray(array $tokenUpdate)
|
||||
{
|
||||
if(empty($tokenUpdate)) {
|
||||
return;
|
||||
}
|
||||
$cacheTokenArray = $this->_getCacheTokenArray();
|
||||
foreach ($tokenUpdate as $key => $value){
|
||||
$cacheTokenArray[$key] = $value;
|
||||
}
|
||||
$this->cacheTokenArray = $cacheTokenArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Status if cache is used or not
|
||||
* @return bool
|
||||
*/
|
||||
private function getUseCache(): bool
|
||||
{
|
||||
return $this->useCache;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user