Fixing initial load config

This commit is contained in:
Philipp Holzer 2019-07-15 08:58:37 +02:00
parent 6c68b8359d
commit 6801e8b5ab
No known key found for this signature in database
GPG key ID: D8365C3D36B77D90
2 changed files with 25 additions and 20 deletions

View file

@ -13,8 +13,10 @@ use Friendica\Model;
*/
class JitConfiguration extends Configuration
{
/** @var array */
private $in_db;
/**
* @var array Array of already loaded db values (even if there was no value)
*/
private $db_loaded;
/**
* @param Cache\ConfigCache $configCache The configuration cache (based on the config-files)
@ -23,17 +25,7 @@ class JitConfiguration extends Configuration
public function __construct(Cache\ConfigCache $configCache, Model\Config\Config $configModel)
{
parent::__construct($configCache, $configModel);
$this->in_db = [];
// take the values of the given cache instead of loading them from the model again
$preSet = $configCache->getAll();
if (!empty($preSet)) {
foreach ($preSet as $cat => $data) {
foreach ($data as $key => $value) {
$this->in_db[$cat][$key] = true;
}
}
}
$this->db_loaded = [];
$this->load();
}
@ -53,7 +45,7 @@ class JitConfiguration extends Configuration
if (!empty($config[$cat])) {
foreach ($config[$cat] as $key => $value) {
$this->in_db[$cat][$key] = true;
$this->db_loaded[$cat][$key] = true;
}
}
@ -68,7 +60,7 @@ class JitConfiguration extends Configuration
{
// if the value isn't loaded or refresh is needed, load it to the cache
if ($this->configModel->isConnected() &&
(empty($this->in_db[$cat][$key]) ||
(empty($this->db_loaded[$cat][$key]) ||
$refresh)) {
$dbvalue = $this->configModel->get($cat, $key);
@ -76,8 +68,9 @@ class JitConfiguration extends Configuration
if (isset($dbvalue)) {
$this->configCache->set($cat, $key, $dbvalue);
unset($dbvalue);
$this->in_db[$cat][$key] = true;
}
$this->db_loaded[$cat][$key] = true;
}
// use the config cache for return
@ -101,7 +94,7 @@ class JitConfiguration extends Configuration
$stored = $this->configModel->set($cat, $key, $value);
$this->in_db[$cat][$key] = $stored;
$this->db_loaded[$cat][$key] = $stored;
return $cached && $stored;
}
@ -113,8 +106,8 @@ class JitConfiguration extends Configuration
{
$cacheRemoved = $this->configCache->delete($cat, $key);
if (isset($this->in_db[$cat][$key])) {
unset($this->in_db[$cat][$key]);
if (isset($this->db_loaded[$cat][$key])) {
unset($this->db_loaded[$cat][$key]);
}
if (!$this->configModel->isConnected()) {

View file

@ -114,7 +114,13 @@ class JitConfigurationTest extends ConfigurationTest
->andReturn(['config' => []])
->once();
// mocking one get
// mocking one get without result
$this->configModel->shouldReceive('get')
->with('test', 'it')
->andReturn(null)
->once();
// mocking the data get
$this->configModel->shouldReceive('get')
->with('test', 'it')
->andReturn($data)
@ -162,6 +168,12 @@ class JitConfigurationTest extends ConfigurationTest
->andReturn(['config' => []])
->once();
// mocking one get without result
$this->configModel->shouldReceive('get')
->with('test', 'it')
->andReturn(null)
->once();
parent::testDeleteWithDB();
}
}