welds_sqlx_mssql/options/
mod.rs

1use sqlx_core::{connection::LogSettings, net::tls::CertificateInput};
2use std::env::var;
3
4mod connect;
5mod parse;
6mod ssl_mode;
7pub use ssl_mode::MssqlSslMode;
8
9#[derive(Debug, Clone)]
10pub struct MssqlConnectOptions {
11    pub(crate) host: String,
12    pub(crate) port: u16,
13    pub(crate) username: String,
14    pub(crate) database: String,
15    pub(crate) password: Option<String>,
16    pub(crate) log_settings: LogSettings,
17    pub(crate) ssl_mode: MssqlSslMode,
18    pub(crate) ssl_root_cert: Option<CertificateInput>,
19    pub(crate) ssl_client_cert: Option<CertificateInput>,
20    pub(crate) ssl_client_key: Option<CertificateInput>,
21}
22
23impl Default for MssqlConnectOptions {
24    fn default() -> Self {
25        Self::new()
26    }
27}
28
29impl MssqlConnectOptions {
30    pub fn new() -> Self {
31        Self {
32            port: 1433,
33            host: String::from("localhost"),
34            database: String::from("master"),
35            username: String::from("sa"),
36            password: None,
37            log_settings: Default::default(),
38            ssl_root_cert: var("MSSSLROOTCERT").ok().map(CertificateInput::from),
39            ssl_client_cert: var("MSSSLCERT").ok().map(CertificateInput::from),
40            ssl_client_key: var("MSSSLKEY").ok().map(CertificateInput::from),
41            ssl_mode: var("MSSSLMODE")
42                .ok()
43                .and_then(|v| v.parse().ok())
44                .unwrap_or_default(),
45        }
46    }
47
48    pub fn host(mut self, host: &str) -> Self {
49        self.host = host.to_owned();
50        self
51    }
52
53    pub fn port(mut self, port: u16) -> Self {
54        self.port = port;
55        self
56    }
57
58    pub fn username(mut self, username: &str) -> Self {
59        self.username = username.to_owned();
60        self
61    }
62
63    pub fn password(mut self, password: &str) -> Self {
64        self.password = Some(password.to_owned());
65        self
66    }
67
68    pub fn database(mut self, database: &str) -> Self {
69        self.database = database.to_owned();
70        self
71    }
72}