use mysql::{Conn, Opts, OptsBuilder, error::Error};
#[derive(Clone, Debug)]
pub struct MySqlConnectionManager {
params: Opts,
}
impl MySqlConnectionManager {
pub fn new(params: OptsBuilder) -> MySqlConnectionManager {
MySqlConnectionManager {
params: Opts::from(params),
}
}
}
impl r2d2::ManageConnection for MySqlConnectionManager {
type Connection = Conn;
type Error = Error;
fn connect(&self) -> Result<Conn, Error> {
Conn::new(self.params.clone())
}
fn is_valid(&self, conn: &mut Conn) -> Result<(), Error> {
conn.ping()
}
fn has_broken(&self, conn: &mut Conn) -> bool {
self.is_valid(conn).is_err()
}
}