use std::path::Path;
use driver::Driver;
use statement::Statement;
use {Result, Safe};
pub struct Database<T: Driver> {
driver: Safe<T>,
}
impl<T: Driver> Database<T> {
pub fn open<P: AsRef<Path>>(path: P) -> Result<Self> {
Ok(Database { driver: Safe::new(try!(T::connect(path))) })
}
#[inline]
pub fn execute<S: Statement>(&self, statement: S) -> Result<()> {
self.driver.execute(try!(statement.compile()))
}
#[inline]
pub fn prepare<S: Statement>(&self, statement: S) -> Result<T::Statement> {
self.driver.prepare(try!(statement.compile()))
}
}