Skip to content

Commit a7862ae

Browse files
feat: expose connect options fields (#2891)
Exposes some of the main fields for PgConnectOptions and MySqlConnectOptions. Exposed fields include: host, port, socket, ssl mode, application name, and charset.
1 parent 29dcd44 commit a7862ae

File tree

2 files changed

+248
-65
lines changed

2 files changed

+248
-65
lines changed

sqlx-mysql/src/options/mod.rs

Lines changed: 119 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -152,20 +152,6 @@ impl MySqlConnectOptions {
152152
self
153153
}
154154

155-
/// Get the current database name.
156-
///
157-
/// # Example
158-
///
159-
/// ```rust
160-
/// # use sqlx_core::mysql::MySqlConnectOptions;
161-
/// let options = MySqlConnectOptions::new()
162-
/// .database("mysqldb");
163-
/// assert!(options.get_database().is_some());
164-
/// ```
165-
pub fn get_database(&self) -> Option<&str> {
166-
self.database.as_deref()
167-
}
168-
169155
/// Sets whether or with what priority a secure SSL TCP/IP connection will be negotiated
170156
/// with the server.
171157
///
@@ -175,7 +161,7 @@ impl MySqlConnectOptions {
175161
/// # Example
176162
///
177163
/// ```rust
178-
/// # use sqlx_core::mysql::{MySqlSslMode, MySqlConnectOptions};
164+
/// # use sqlx_mysql::{MySqlSslMode, MySqlConnectOptions};
179165
/// let options = MySqlConnectOptions::new()
180166
/// .ssl_mode(MySqlSslMode::Required);
181167
/// ```
@@ -189,7 +175,7 @@ impl MySqlConnectOptions {
189175
/// # Example
190176
///
191177
/// ```rust
192-
/// # use sqlx_core::mysql::{MySqlSslMode, MySqlConnectOptions};
178+
/// # use sqlx_mysql::{MySqlSslMode, MySqlConnectOptions};
193179
/// let options = MySqlConnectOptions::new()
194180
/// .ssl_mode(MySqlSslMode::VerifyCa)
195181
/// .ssl_ca("path/to/ca.crt");
@@ -204,7 +190,7 @@ impl MySqlConnectOptions {
204190
/// # Example
205191
///
206192
/// ```rust
207-
/// # use sqlx_core::mysql::{MySqlSslMode, MySqlConnectOptions};
193+
/// # use sqlx_mysql::{MySqlSslMode, MySqlConnectOptions};
208194
/// let options = MySqlConnectOptions::new()
209195
/// .ssl_mode(MySqlSslMode::VerifyCa)
210196
/// .ssl_ca_from_pem(vec![]);
@@ -219,7 +205,7 @@ impl MySqlConnectOptions {
219205
/// # Example
220206
///
221207
/// ```rust
222-
/// # use sqlx_core::mysql::{MySqlSslMode, MySqlConnectOptions};
208+
/// # use sqlx_mysql::{MySqlSslMode, MySqlConnectOptions};
223209
/// let options = MySqlConnectOptions::new()
224210
/// .ssl_mode(MySqlSslMode::VerifyCa)
225211
/// .ssl_client_cert("path/to/client.crt");
@@ -238,7 +224,7 @@ impl MySqlConnectOptions {
238224
/// This is for illustration purposes only.
239225
///
240226
/// ```rust
241-
/// # use sqlx_core::mysql::{MySqlSslMode, MySqlConnectOptions};
227+
/// # use sqlx_mysql::{MySqlSslMode, MySqlConnectOptions};
242228
///
243229
/// const CERT: &[u8] = b"\
244230
/// -----BEGIN CERTIFICATE-----
@@ -259,7 +245,7 @@ impl MySqlConnectOptions {
259245
/// # Example
260246
///
261247
/// ```rust
262-
/// # use sqlx_core::mysql::{MySqlSslMode, MySqlConnectOptions};
248+
/// # use sqlx_mysql::{MySqlSslMode, MySqlConnectOptions};
263249
/// let options = MySqlConnectOptions::new()
264250
/// .ssl_mode(MySqlSslMode::VerifyCa)
265251
/// .ssl_client_key("path/to/client.key");
@@ -278,7 +264,7 @@ impl MySqlConnectOptions {
278264
/// This is for illustration purposes only.
279265
///
280266
/// ```rust
281-
/// # use sqlx_core::mysql::{MySqlSslMode, MySqlConnectOptions};
267+
/// # use sqlx_mysql::{MySqlSslMode, MySqlConnectOptions};
282268
///
283269
/// const KEY: &[u8] = b"\
284270
/// -----BEGIN PRIVATE KEY-----
@@ -348,3 +334,115 @@ impl MySqlConnectOptions {
348334
self
349335
}
350336
}
337+
338+
impl MySqlConnectOptions {
339+
/// Get the current host.
340+
///
341+
/// # Example
342+
///
343+
/// ```rust
344+
/// # use sqlx_mysql::MySqlConnectOptions;
345+
/// let options = MySqlConnectOptions::new()
346+
/// .host("127.0.0.1");
347+
/// assert_eq!(options.get_host(), "127.0.0.1");
348+
/// ```
349+
pub fn get_host(&self) -> &str {
350+
&self.host
351+
}
352+
353+
/// Get the server's port.
354+
///
355+
/// # Example
356+
///
357+
/// ```rust
358+
/// # use sqlx_mysql::MySqlConnectOptions;
359+
/// let options = MySqlConnectOptions::new()
360+
/// .port(6543);
361+
/// assert_eq!(options.get_port(), 6543);
362+
/// ```
363+
pub fn get_port(&self) -> u16 {
364+
self.port
365+
}
366+
367+
/// Get the socket path.
368+
///
369+
/// # Example
370+
///
371+
/// ```rust
372+
/// # use sqlx_mysql::MySqlConnectOptions;
373+
/// let options = MySqlConnectOptions::new()
374+
/// .socket("/tmp");
375+
/// assert!(options.get_socket().is_some());
376+
/// ```
377+
pub fn get_socket(&self) -> Option<&PathBuf> {
378+
self.socket.as_ref()
379+
}
380+
381+
/// Get the server's port.
382+
///
383+
/// # Example
384+
///
385+
/// ```rust
386+
/// # use sqlx_mysql::MySqlConnectOptions;
387+
/// let options = MySqlConnectOptions::new()
388+
/// .username("foo");
389+
/// assert_eq!(options.get_username(), "foo");
390+
/// ```
391+
pub fn get_username(&self) -> &str {
392+
&self.username
393+
}
394+
395+
/// Get the current database name.
396+
///
397+
/// # Example
398+
///
399+
/// ```rust
400+
/// # use sqlx_mysql::MySqlConnectOptions;
401+
/// let options = MySqlConnectOptions::new()
402+
/// .database("postgres");
403+
/// assert!(options.get_database().is_some());
404+
/// ```
405+
pub fn get_database(&self) -> Option<&str> {
406+
self.database.as_deref()
407+
}
408+
409+
/// Get the SSL mode.
410+
///
411+
/// # Example
412+
///
413+
/// ```rust
414+
/// # use sqlx_mysql::{MySqlConnectOptions, MySqlSslMode};
415+
/// let options = MySqlConnectOptions::new();
416+
/// assert!(matches!(options.get_ssl_mode(), MySqlSslMode::Preferred));
417+
/// ```
418+
pub fn get_ssl_mode(&self) -> MySqlSslMode {
419+
self.ssl_mode
420+
}
421+
422+
/// Get the server charset.
423+
///
424+
/// # Example
425+
///
426+
/// ```rust
427+
/// # use sqlx_mysql::MySqlConnectOptions;
428+
/// let options = MySqlConnectOptions::new();
429+
/// assert_eq!(options.get_charset(), "utf8mb4");
430+
/// ```
431+
pub fn get_charset(&self) -> &str {
432+
&self.charset
433+
}
434+
435+
/// Get the server collation.
436+
///
437+
/// # Example
438+
///
439+
/// ```rust
440+
/// # use sqlx_mysql::MySqlConnectOptions;
441+
/// let options = MySqlConnectOptions::new()
442+
/// .collation("collation");
443+
/// assert!(options.get_collation().is_some());
444+
/// ```
445+
pub fn get_collation(&self) -> Option<&str> {
446+
self.collation.as_deref()
447+
}
448+
}

0 commit comments

Comments
 (0)