stringqb/src/drivers/mysql.rs

57 lines
1.2 KiB
Rust
Raw Normal View History

2019-04-09 18:55:53 -04:00
//! Database Driver for MySQL
//!
//! Contains database-specific query data
2019-04-03 20:58:22 -04:00
use super::*;
2019-04-09 18:55:53 -04:00
/// The struct implementing the `DatabaseDriver` trait
2019-04-03 20:58:22 -04:00
#[derive(Debug)]
pub struct MySQL;
2019-04-09 14:13:37 -04:00
impl MySQL {
2019-04-10 14:03:28 -04:00
/// Create a MySQL driver
2019-04-09 14:13:37 -04:00
pub fn new() -> Self {
MySQL {}
}
}
2019-04-03 20:58:22 -04:00
impl DatabaseDriver for MySQL {
2019-04-05 14:51:31 -04:00
/// Get which characters are used to delimit identifiers
/// such as tables, and columns
fn _quotes(&self) -> (char, char) {
2019-04-05 20:46:07 -04:00
('`', '`')
2019-04-03 20:58:22 -04:00
}
}
2019-04-05 20:46:07 -04:00
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_quote_identifier_backtick_quote() {
2019-04-09 14:13:37 -04:00
let driver = MySQL::new();
2019-04-05 20:46:07 -04:00
assert_eq!(
driver.quote_identifier("foo, bar, baz"),
"`foo`,`bar`,`baz`"
);
assert_eq!(
driver.quote_identifier("foo.bar, baz, fizz"),
"`foo`.`bar`,`baz`,`fizz`"
);
}
#[test]
fn test_quote_identifiers_backtick_quote() {
2019-04-09 14:13:37 -04:00
let driver = MySQL::new();
2019-04-05 20:46:07 -04:00
assert_eq!(
driver.quote_identifiers(vec!["\tfoo. bar", "baz", "fizz.\n\tbuzz.baz",]),
2019-04-05 20:46:07 -04:00
vec![
"`foo`.`bar`".to_string(),
"`baz`".to_string(),
"`fizz`.`buzz`.`baz`".to_string(),
]
);
}
}