use crate::executor::Executor;
use crate::url::Url;
use futures_core::future::BoxFuture;
use futures_util::TryFutureExt;
use std::convert::TryInto;
pub trait Connection: Executor + Send + 'static {
fn close(self) -> BoxFuture<'static, crate::Result<()>>;
fn ping(&mut self) -> BoxFuture<crate::Result<()>> {
Box::pin(self.execute("SELECT 1", Default::default()).map_ok(|_| ()))
}
}
pub trait Connect {
type Connection: Connection;
fn connect<T>(url: T) -> BoxFuture<'static, crate::Result<Self::Connection>>
where
T: TryInto<Url, Error = crate::Error>,
Self: Sized;
}