mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-08 14:02:55 +00:00
53 lines
1.5 KiB
Rust
53 lines
1.5 KiB
Rust
use postgres::Config;
|
|
|
|
pub fn connection_host_port(config: &Config) -> (String, u16) {
|
|
assert_eq!(
|
|
config.get_hosts().len(),
|
|
1,
|
|
"only one pair of host and port is supported in connection string"
|
|
);
|
|
assert_eq!(
|
|
config.get_ports().len(),
|
|
1,
|
|
"only one pair of host and port is supported in connection string"
|
|
);
|
|
let host = match &config.get_hosts()[0] {
|
|
postgres::config::Host::Tcp(host) => host.as_ref(),
|
|
postgres::config::Host::Unix(host) => host.to_str().unwrap(),
|
|
};
|
|
(host.to_owned(), config.get_ports()[0])
|
|
}
|
|
|
|
pub fn connection_address(config: &Config) -> String {
|
|
let (host, port) = connection_host_port(config);
|
|
format!("{}:{}", host, port)
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_connection_host_port() {
|
|
let config: Config = "postgresql://no_user@localhost:64000/no_db"
|
|
.parse()
|
|
.unwrap();
|
|
assert_eq!(
|
|
connection_host_port(&config),
|
|
("localhost".to_owned(), 64000)
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
#[should_panic(expected = "only one pair of host and port is supported in connection string")]
|
|
fn test_connection_host_port_multiple_ports() {
|
|
let config: Config = "postgresql://no_user@localhost:64000,localhost:64001/no_db"
|
|
.parse()
|
|
.unwrap();
|
|
assert_eq!(
|
|
connection_host_port(&config),
|
|
("localhost".to_owned(), 64000)
|
|
);
|
|
}
|
|
}
|