. */ namespace SP\Repositories\Config; use SP\Core\Exceptions\ConstraintException; use SP\Core\Exceptions\QueryException; use SP\DataModel\ConfigData; use SP\Repositories\Repository; use SP\Storage\Database\QueryData; use SP\Storage\Database\QueryResult; /** * Class ConfigRepository * * @package SP\Repositories\Config */ final class ConfigRepository extends Repository { /** * @param ConfigData $configData * * @return bool * @throws ConstraintException * @throws QueryException */ public function update(ConfigData $configData) { $queryData = new QueryData(); $queryData->setQuery('UPDATE Config SET `value` = ? WHERE parameter = ?'); $queryData->setParams([$configData->getValue(), $configData->getParameter()]); return $this->db->doQuery($queryData)->getAffectedNumRows(); } /** * @param ConfigData $configData * * @return int * @throws ConstraintException * @throws QueryException */ public function create(ConfigData $configData) { $queryData = new QueryData(); $queryData->setQuery('INSERT INTO Config SET parameter = ?, `value` = ?'); $queryData->setParams([$configData->getParameter(), $configData->getValue()]); return $this->db->doQuery($queryData)->getAffectedNumRows(); } /** * Obtener un array con la configuración almacenada en la BBDD. * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function getAll() { $queryData = new QueryData(); $queryData->setQuery('SELECT parameter, `value` FROM Config ORDER BY parameter'); return $this->db->doSelect($queryData); } /** * @param string $param * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function getByParam($param) { $queryData = new QueryData(); $queryData->setQuery('SELECT parameter, `value` FROM Config WHERE parameter = ? LIMIT 1'); $queryData->addParam($param); return $this->db->doSelect($queryData); } /** * @param string $param * * @return bool * @throws ConstraintException * @throws QueryException */ public function has($param) { $queryData = new QueryData(); $queryData->setQuery('SELECT parameter FROM Config WHERE parameter = ? LIMIT 1'); $queryData->addParam($param); return $this->db->doSelect($queryData)->getNumRows() === 1; } /** * @param $param * * @return int * @throws ConstraintException * @throws QueryException */ public function deleteByParam($param) { $queryData = new QueryData(); $queryData->setQuery('DELETE FROM Config WHERE parameter = ? LIMIT 1'); $queryData->addParam($param); return $this->db->doQuery($queryData)->getAffectedNumRows(); } }