2022-06-15 03:10:09 +12:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Appwrite\DSN;
|
|
|
|
|
2022-06-15 06:00:02 +12:00
|
|
|
class DSN
|
2022-06-15 03:18:15 +12:00
|
|
|
{
|
2022-06-15 03:10:09 +12:00
|
|
|
/**
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected string $scheme;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @var ?string
|
|
|
|
*/
|
|
|
|
protected ?string $user;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @var ?string
|
|
|
|
*/
|
|
|
|
protected ?string $password;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @var string
|
|
|
|
*/
|
2022-06-15 03:18:15 +12:00
|
|
|
protected string $host;
|
2022-06-15 03:10:09 +12:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @var ?string
|
|
|
|
*/
|
|
|
|
protected ?string $port;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @var ?string
|
|
|
|
*/
|
|
|
|
protected ?string $database;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @var ?string
|
|
|
|
*/
|
|
|
|
protected ?string $query;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Construct
|
|
|
|
*
|
|
|
|
* Construct a new DSN object
|
2022-06-15 03:18:15 +12:00
|
|
|
*
|
2022-06-15 03:10:09 +12:00
|
|
|
* @param string $dsn
|
|
|
|
*/
|
|
|
|
public function __construct(string $dsn)
|
|
|
|
{
|
|
|
|
$parts = parse_url($dsn);
|
|
|
|
|
|
|
|
if (!$parts) {
|
|
|
|
throw new \InvalidArgumentException("Unable to parse DSN: $dsn");
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->scheme = $parts['scheme'] ?? null;
|
|
|
|
$this->user = $parts['user'] ?? null;
|
|
|
|
$this->password = $parts['pass'] ?? null;
|
|
|
|
$this->host = $parts['host'] ?? null;
|
|
|
|
$this->port = $parts['port'] ?? null;
|
|
|
|
$this->database = $parts['path'] ?? null;
|
|
|
|
$this->query = $parts['query'] ?? null;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the scheme.
|
2022-06-15 03:18:15 +12:00
|
|
|
*
|
2022-06-15 03:10:09 +12:00
|
|
|
* @return string
|
|
|
|
*/
|
2022-06-15 03:18:15 +12:00
|
|
|
public function getScheme(): string
|
2022-06-15 03:10:09 +12:00
|
|
|
{
|
|
|
|
return $this->scheme;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the user.
|
2022-06-15 03:18:15 +12:00
|
|
|
*
|
2022-06-15 03:10:09 +12:00
|
|
|
* @return ?string
|
|
|
|
*/
|
2022-06-15 06:00:02 +12:00
|
|
|
public function getUser(): ?string
|
2022-06-15 03:10:09 +12:00
|
|
|
{
|
|
|
|
return $this->user;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the password.
|
2022-06-15 03:18:15 +12:00
|
|
|
*
|
2022-06-15 03:10:09 +12:00
|
|
|
* @return ?string
|
|
|
|
*/
|
2022-06-15 06:00:02 +12:00
|
|
|
public function getPassword(): ?string
|
2022-06-15 03:10:09 +12:00
|
|
|
{
|
|
|
|
return $this->password;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the host
|
2022-06-15 03:18:15 +12:00
|
|
|
*
|
2022-06-15 03:10:09 +12:00
|
|
|
* @return string
|
|
|
|
*/
|
2022-06-15 03:18:15 +12:00
|
|
|
public function getHost(): string
|
2022-06-15 03:10:09 +12:00
|
|
|
{
|
|
|
|
return $this->host;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the port
|
2022-06-15 03:18:15 +12:00
|
|
|
*
|
2022-06-15 03:10:09 +12:00
|
|
|
* @return ?string
|
|
|
|
*/
|
|
|
|
public function getPort(): ?string
|
|
|
|
{
|
|
|
|
return $this->port;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the database
|
2022-06-15 03:18:15 +12:00
|
|
|
*
|
2022-06-15 03:10:09 +12:00
|
|
|
* @return ?string
|
|
|
|
*/
|
2022-06-15 03:18:15 +12:00
|
|
|
public function getDatabase(): ?string
|
2022-06-15 03:10:09 +12:00
|
|
|
{
|
|
|
|
return ltrim($this->database, '/');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the query string
|
2022-06-15 03:18:15 +12:00
|
|
|
*
|
2022-06-15 03:10:09 +12:00
|
|
|
* @return ?string
|
|
|
|
*/
|
2022-06-15 03:18:15 +12:00
|
|
|
public function getQuery(): ?string
|
2022-06-15 03:10:09 +12:00
|
|
|
{
|
|
|
|
return $this->query;
|
|
|
|
}
|
2022-06-15 06:00:02 +12:00
|
|
|
}
|