Refactor ConfigMockTrait to mocked ConfigCache

This commit is contained in:
Philipp Holzer 2019-02-07 20:44:03 +01:00
parent 38ac615ba0
commit cb791024e4
No known key found for this signature in database
GPG key ID: 517BE60E2CE5C8A5
27 changed files with 244 additions and 193 deletions

View file

@ -0,0 +1,13 @@
<?php
namespace Friendica\Core\Config;
use Friendica\Database\DBA;
abstract class AbstractDbaConfigAdapter
{
public function isConnected()
{
return DBA::connected();
}
}

View file

@ -94,6 +94,8 @@ class ConfigCache implements IConfigCache, IPConfigCache
$this->config[$cat][$key] = $value;
}
return true;
}
/**

View file

@ -54,4 +54,11 @@ interface IConfigAdapter
* @return mixed
*/
public function delete($cat, $k);
/**
* Checks, if the current adapter is connected to the backend
*
* @return bool
*/
public function isConnected();
}

View file

@ -22,6 +22,8 @@ interface IConfigCache
* @param string $cat Config category
* @param string $key Config key
* @param mixed $value Value to set
*
* @return bool True, if the value is set
*/
function set($cat, $key, $value);

View file

@ -10,7 +10,7 @@ use Friendica\Database\DBA;
*
* @author Hypolite Petovan <hypolite@mrpetovan.com>
*/
class JITConfigAdapter implements IConfigAdapter
class JITConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapter
{
private $cache;
private $in_db;
@ -33,6 +33,10 @@ class JITConfigAdapter implements IConfigAdapter
*/
public function load($cat = "config")
{
if (!$this->isConnected()) {
return;
}
// We don't preload "system" anymore.
// This reduces the number of database reads a lot.
if ($cat === 'system') {
@ -58,6 +62,10 @@ class JITConfigAdapter implements IConfigAdapter
*/
public function get($cat, $k, $default_value = null, $refresh = false)
{
if (!$this->isConnected()) {
return $default_value;
}
if (!$refresh) {
// Do we have the cached value? Then return it
if (isset($this->cache[$cat][$k])) {
@ -103,6 +111,10 @@ class JITConfigAdapter implements IConfigAdapter
*/
public function set($cat, $k, $value)
{
if (!$this->isConnected()) {
return false;
}
// We store our setting values in a string variable.
// So we have to do the conversion here so that the compare below works.
// The exception are array values.
@ -143,6 +155,10 @@ class JITConfigAdapter implements IConfigAdapter
*/
public function delete($cat, $k)
{
if (!$this->isConnected()) {
return false;
}
if (isset($this->cache[$cat][$k])) {
unset($this->cache[$cat][$k]);
unset($this->in_db[$cat][$k]);

View file

@ -12,7 +12,7 @@ use Friendica\Database\DBA;
*
* @author Hypolite Petovan <hypolite@mrpetovan.com>
*/
class PreloadConfigAdapter implements IConfigAdapter
class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapter
{
private $config_loaded = false;
@ -35,6 +35,10 @@ class PreloadConfigAdapter implements IConfigAdapter
*/
public function load($family = 'config')
{
if (!$this->isConnected()) {
return;
}
if ($this->config_loaded) {
return;
}
@ -53,6 +57,10 @@ class PreloadConfigAdapter implements IConfigAdapter
*/
public function get($cat, $k, $default_value = null, $refresh = false)
{
if (!$this->isConnected()) {
return $default_value;
}
if ($refresh) {
$config = DBA::selectFirst('config', ['v'], ['cat' => $cat, 'k' => $k]);
if (DBA::isResult($config)) {
@ -70,6 +78,10 @@ class PreloadConfigAdapter implements IConfigAdapter
*/
public function set($cat, $k, $value)
{
if (!$this->isConnected()) {
return false;
}
// We store our setting values as strings.
// So we have to do the conversion here so that the compare below works.
// The exception are array values.
@ -97,6 +109,10 @@ class PreloadConfigAdapter implements IConfigAdapter
*/
public function delete($cat, $k)
{
if (!$this->isConnected()) {
return false;
}
$this->configCache->delete($cat, $k);
$result = DBA::delete('config', ['cat' => $cat, 'k' => $k]);