pub struct PoolConfig {Show 24 fields
pub host: String,
pub port: u16,
pub user: String,
pub database: String,
pub password: Option<String>,
pub max_connections: usize,
pub min_connections: usize,
pub idle_timeout: Duration,
pub acquire_timeout: Duration,
pub connect_timeout: Duration,
pub max_lifetime: Option<Duration>,
pub test_on_acquire: bool,
pub tls_mode: TlsMode,
pub tls_ca_cert_pem: Option<Vec<u8>>,
pub mtls: Option<TlsConfig>,
pub gss_token_provider: Option<GssTokenProvider>,
pub gss_token_provider_ex: Option<GssTokenProviderEx>,
pub gss_connect_retries: usize,
pub gss_retry_base_delay: Duration,
pub gss_circuit_breaker_threshold: usize,
pub gss_circuit_breaker_window: Duration,
pub gss_circuit_breaker_cooldown: Duration,
pub auth_settings: AuthSettings,
pub gss_enc_mode: GssEncMode,
}Expand description
Configuration for a PostgreSQL connection pool.
Use the builder pattern to customise settings:
use std::time::Duration;
use qail_pg::driver::pool::PoolConfig;
let config = PoolConfig::new("localhost", 5432, "app", "mydb")
.password("secret")
.max_connections(20)
.acquire_timeout(Duration::from_secs(5));Fields§
§host: StringPostgreSQL server hostname or IP address.
port: u16PostgreSQL server port (default: 5432).
user: StringDatabase role / user name.
database: StringTarget database name.
password: Option<String>Optional password for authentication.
max_connections: usizeHard upper limit on simultaneous connections (default: 10).
min_connections: usizeMinimum idle connections kept warm in the pool (default: 1).
idle_timeout: DurationClose idle connections after this duration (default: 10 min).
acquire_timeout: DurationMaximum time to wait when acquiring a connection (default: 30s).
connect_timeout: DurationTCP connect timeout for new connections (default: 10s).
max_lifetime: Option<Duration>Optional maximum lifetime of any connection in the pool.
test_on_acquire: boolWhen true, run a health check (SELECT 1) before handing out a connection.
tls_mode: TlsModeTLS mode for new connections.
tls_ca_cert_pem: Option<Vec<u8>>Optional custom CA bundle (PEM) for server certificate validation.
mtls: Option<TlsConfig>Optional mTLS client certificate/key configuration.
gss_token_provider: Option<GssTokenProvider>Optional callback for Kerberos/GSS/SSPI token generation.
gss_token_provider_ex: Option<GssTokenProviderEx>Optional stateful callback for Kerberos/GSS/SSPI token generation.
gss_connect_retries: usizeNumber of retries for transient GSS/Kerberos connection failures.
gss_retry_base_delay: DurationBase delay for GSS/Kerberos connect retry backoff.
gss_circuit_breaker_threshold: usizeTransient GSS failures in one window before opening the local circuit.
gss_circuit_breaker_window: DurationRolling window used to count transient GSS failures.
gss_circuit_breaker_cooldown: DurationCooldown duration while the local GSS circuit stays open.
auth_settings: AuthSettingsPassword-auth policy.
gss_enc_mode: GssEncModeGSSAPI session encryption mode (gssencmode URL parameter).
Implementations§
Source§impl PoolConfig
impl PoolConfig
Sourcepub fn new(host: &str, port: u16, user: &str, database: &str) -> Self
pub fn new(host: &str, port: u16, user: &str, database: &str) -> Self
Create a new pool configuration with production-safe defaults.
Defaults: tls_mode = Require, auth_settings = scram_only().
For local development without TLS, use PoolConfig::new_dev.
§Arguments
host— PostgreSQL server hostname or IP.port— TCP port (typically 5432).user— PostgreSQL role name.database— Target database name.
Sourcepub fn new_dev(host: &str, port: u16, user: &str, database: &str) -> Self
pub fn new_dev(host: &str, port: u16, user: &str, database: &str) -> Self
Create a pool configuration with permissive defaults for local development.
Defaults: tls_mode = Disable, auth_settings = default() (accepts any auth).
Do NOT use in production.
Sourcepub fn max_connections(self, max: usize) -> Self
pub fn max_connections(self, max: usize) -> Self
Set maximum simultaneous connections.
Sourcepub fn min_connections(self, min: usize) -> Self
pub fn min_connections(self, min: usize) -> Self
Set minimum idle connections.
Sourcepub fn idle_timeout(self, timeout: Duration) -> Self
pub fn idle_timeout(self, timeout: Duration) -> Self
Set idle timeout (connections idle longer than this are closed).
Sourcepub fn acquire_timeout(self, timeout: Duration) -> Self
pub fn acquire_timeout(self, timeout: Duration) -> Self
Set acquire timeout (max wait time when getting a connection).
Sourcepub fn connect_timeout(self, timeout: Duration) -> Self
pub fn connect_timeout(self, timeout: Duration) -> Self
Set connect timeout (max time to establish new connection).
Sourcepub fn max_lifetime(self, lifetime: Duration) -> Self
pub fn max_lifetime(self, lifetime: Duration) -> Self
Set maximum lifetime of a connection before recycling.
Sourcepub fn test_on_acquire(self, enabled: bool) -> Self
pub fn test_on_acquire(self, enabled: bool) -> Self
Enable connection validation on acquire.
Sourcepub fn tls_ca_cert_pem(self, ca_cert_pem: Vec<u8>) -> Self
pub fn tls_ca_cert_pem(self, ca_cert_pem: Vec<u8>) -> Self
Set custom CA bundle (PEM) for TLS validation.
Sourcepub fn gss_token_provider(self, provider: GssTokenProvider) -> Self
pub fn gss_token_provider(self, provider: GssTokenProvider) -> Self
Set Kerberos/GSS/SSPI token provider callback.
Sourcepub fn gss_token_provider_ex(self, provider: GssTokenProviderEx) -> Self
pub fn gss_token_provider_ex(self, provider: GssTokenProviderEx) -> Self
Set a stateful Kerberos/GSS/SSPI token provider.
Sourcepub fn gss_connect_retries(self, retries: usize) -> Self
pub fn gss_connect_retries(self, retries: usize) -> Self
Set retry count for transient GSS/Kerberos connection failures.
Sourcepub fn gss_retry_base_delay(self, delay: Duration) -> Self
pub fn gss_retry_base_delay(self, delay: Duration) -> Self
Set base backoff delay for GSS/Kerberos connection retry.
Sourcepub fn gss_circuit_breaker_threshold(self, threshold: usize) -> Self
pub fn gss_circuit_breaker_threshold(self, threshold: usize) -> Self
Set failure threshold for opening local GSS circuit breaker.
Sourcepub fn gss_circuit_breaker_window(self, window: Duration) -> Self
pub fn gss_circuit_breaker_window(self, window: Duration) -> Self
Set rolling failure window for GSS circuit breaker.
Sourcepub fn gss_circuit_breaker_cooldown(self, cooldown: Duration) -> Self
pub fn gss_circuit_breaker_cooldown(self, cooldown: Duration) -> Self
Set cooldown duration for open GSS circuit breaker.
Sourcepub fn auth_settings(self, settings: AuthSettings) -> Self
pub fn auth_settings(self, settings: AuthSettings) -> Self
Set authentication policy.
Sourcepub fn from_qail_config(qail: &QailConfig) -> PgResult<Self>
pub fn from_qail_config(qail: &QailConfig) -> PgResult<Self>
Create a PoolConfig from a centralized QailConfig.
Parses postgres.url for host/port/user/database/password
and applies pool tuning from [postgres] section.
Trait Implementations§
Source§impl Clone for PoolConfig
impl Clone for PoolConfig
Source§fn clone(&self) -> PoolConfig
fn clone(&self) -> PoolConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more