diff --git a/src/query.rs b/src/query.rs index 9a1e2a4a..7f8296db 100644 --- a/src/query.rs +++ b/src/query.rs @@ -22,33 +22,29 @@ pub trait RawQuery<'q>: Sized + Send + Sync { fn finish(self, conn: &mut ::RawConnection); } -pub struct SqlQuery<'q, E> +pub struct SqlQuery<'q, DB> where - E: Executor, + DB: Backend, { - inner: - <::Backend as BackendAssocRawQuery<'q, ::Backend>>::RawQuery, + inner: >::RawQuery, } -impl<'q, E> SqlQuery<'q, E> +impl<'q, DB> SqlQuery<'q, DB> where - E: Executor, + DB: Backend, { #[inline] pub fn new(query: &'q str) -> Self { Self { - inner: <::Backend as BackendAssocRawQuery< - 'q, - ::Backend, - >>::RawQuery::new(query), + inner: >::RawQuery::new(query), } } #[inline] pub fn bind(self, value: T) -> Self where - E::Backend: HasSqlType<>::SqlType>, - T: AsSqlType + ToSql<>::SqlType, E::Backend>, + DB: HasSqlType<>::SqlType>, + T: AsSqlType + ToSql<>::SqlType, DB>, { self.bind_as::(value) } @@ -56,8 +52,8 @@ where #[inline] pub fn bind_as(mut self, value: T) -> Self where - E::Backend: HasSqlType, - T: ToSql, + DB: HasSqlType, + T: ToSql, { self.inner = self.inner.bind_as::(value); self @@ -66,34 +62,42 @@ where // TODO: These methods should go on a [Execute] trait (so more execut-able things can be defined) #[inline] - pub fn execute(self, executor: &'q E) -> BoxFuture<'q, io::Result> { + pub fn execute(self, executor: &'q E) -> BoxFuture<'q, io::Result> + where + E: Executor, + >::RawQuery: 'q, + { executor.execute(self.inner) } #[inline] - pub fn fetch(self, executor: &'q E) -> BoxStream<'q, io::Result> + pub fn fetch(self, executor: &'q E) -> BoxStream<'q, io::Result> where - T: FromRow + Send + Unpin, + E: Executor, + T: FromRow + Send + Unpin, + >::RawQuery: 'q, { executor.fetch(self.inner) } #[inline] - pub fn fetch_optional( + pub fn fetch_optional( self, executor: &'q E, ) -> BoxFuture<'q, io::Result>> where - T: FromRow, + E: Executor, + T: FromRow, + >::RawQuery: 'q, { executor.fetch_optional(self.inner) } } #[inline] -pub fn query<'q, E>(query: &'q str) -> SqlQuery<'q, E> +pub fn query<'q, DB>(query: &'q str) -> SqlQuery<'q, DB> where - E: Executor, + DB: Backend, { SqlQuery::new(query) }