190 lines
3.5 KiB
PHP

<?php
/**
*
* This file is part of phpFastCache.
*
* @license MIT License (MIT)
*
* For full copyright and license information, please see the docs/CREDITS.txt file.
*
* @author Khoa Bui (khoaofgod) <khoaofgod@gmail.com> https://www.phpfastcache.com
* @author Georges.L (Geolim4) <contact@geolim4.com>
*
*/
declare(strict_types=1);
namespace Phpfastcache\Drivers\Couchdb;
use Phpfastcache\Config\ConfigurationOption;
use Phpfastcache\Exceptions\PhpfastcacheInvalidArgumentException;
class Config extends ConfigurationOption
{
/**
* @var string
*/
protected $host = '127.0.0.1';
/**
* @var int
*/
protected $port = 5984;
/**
* @var string
*/
protected $username = '';
/**
* @var string
*/
protected $password = '';
/**
* @var bool
*/
protected $ssl = false;
/**
* @var int
*/
protected $timeout = 10;
/**
* @var string
*/
protected $database = Driver::COUCHDB_DEFAULT_DB_NAME;
/**
* @return string
*/
public function getDatabase(): string
{
return $this->database;
}
/**
* @param string $database
* @return Config
*/
public function setDatabase(string $database): Config
{
/** @see https://docs.couchdb.org/en/latest/api/database/common.html#put--db */
if(\preg_match('#^[a-z][a-z0-9_\-+\$()/]+$#', $database)){
$this->database = $database;
return $this;
}
throw new PhpfastcacheInvalidArgumentException(sprintf(
"Error: illegal_database_name Name: '%s'. Only lowercase characters (a-z), digits (0-9), and any of the characters _, $, (, ), +, -, and / are allowed. Must begin with a letter.",
$database
));
}
/**
* @return string
*/
public function getHost(): string
{
return $this->host;
}
/**
* @param string $host
* @return self
*/
public function setHost(string $host): self
{
$this->host = $host;
return $this;
}
/**
* @return int
*/
public function getPort(): int
{
return $this->port;
}
/**
* @param int $port
* @return self
*/
public function setPort(int $port): self
{
$this->port = $port;
return $this;
}
/**
* @return string
*/
public function getUsername(): string
{
return $this->username;
}
/**
* @param string $username
* @return self
*/
public function setUsername(string $username): self
{
$this->username = $username;
return $this;
}
/**
* @return string
*/
public function getPassword(): string
{
return $this->password;
}
/**
* @param string $password
* @return self
*/
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
/**
* @return bool
*/
public function isSsl(): bool
{
return $this->ssl;
}
/**
* @param bool $ssl
* @return self
*/
public function setSsl(bool $ssl): self
{
$this->ssl = $ssl;
return $this;
}
/**
* @return int
*/
public function getTimeout(): int
{
return $this->timeout;
}
/**
* @param int $timeout
* @return self
*/
public function setTimeout(int $timeout): self
{
$this->timeout = $timeout;
return $this;
}
}