pub trait SqlGenericExecutor {
type DB: Database;
type CountType: SelectedEntity<Self::DB>;
Show 25 methods
// Required method
fn get_affected_rows(
query_result: &<Self::DB as Database>::QueryResult,
) -> u64;
// Provided methods
async fn generic_exists<'a, EX, A>(
ex: EX,
stmt: &'a str,
args: A,
) -> Result<bool>
where EX: Executor<'a, Database = Self::DB>,
A: IntoArguments<'a, Self::DB> + 'a { ... }
async fn generic_exists_plain<'a, EX, A>(
ex: EX,
stmt: &'a str,
_args: PhantomData<A>,
) -> Result<bool>
where EX: Executor<'a, Database = Self::DB>,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_count<'s, 'a, EX, A>(
ex: EX,
stmt: &'s str,
args: A,
) -> Result<Self::CountType>
where EX: Executor<'a, Database = Self::DB>,
A: IntoArguments<'a, Self::DB> + 'a,
's: 'a { ... }
async fn generic_count_plain<'a, EX, A>(
ex: EX,
stmt: &'a str,
_args: PhantomData<A>,
) -> Result<Self::CountType>
where EX: Executor<'a, Database = Self::DB>,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_execute<'a, 'e, EX, A>(
ex: EX,
query: &'a str,
args: A,
) -> Result<u64>
where EX: Executor<'e, Database = Self::DB>,
A: IntoArguments<'a, Self::DB> + 'a { ... }
async fn generic_execute_plain<'a, EX, A>(
ex: EX,
query: &'a str,
_args: PhantomData<A>,
) -> Result<u64>
where EX: Executor<'a, Database = Self::DB>,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_all<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
args: A,
) -> Result<Vec<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_all_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
args: A,
) -> Result<Vec<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_all_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
_: PhantomData<A>,
) -> Result<Vec<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_all_plain_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
_: PhantomData<A>,
) -> Result<Vec<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_one<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
args: A,
) -> Result<SE>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a { ... }
async fn generic_fetch_one_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
args: A,
) -> Result<SE>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a { ... }
async fn generic_fetch_one_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
_: PhantomData<A>,
) -> Result<SE>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_one_plain_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
_: PhantomData<A>,
) -> Result<SE>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_option<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
args: A,
) -> Result<Option<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_option_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
args: A,
) -> Result<Option<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_option_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
_: PhantomData<A>,
) -> Result<Option<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_option_plain_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
_: PhantomData<A>,
) -> Result<Option<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_all_full<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
args: A,
) -> Result<Vec<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a { ... }
async fn generic_fetch_all_full_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
_: PhantomData<A>,
) -> Result<Vec<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_one_full<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
args: A,
) -> Result<SE>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a { ... }
async fn generic_fetch_one_full_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
_: PhantomData<A>,
) -> Result<SE>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
async fn generic_fetch_option_full<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
args: A,
) -> Result<Option<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a { ... }
async fn generic_fetch_option_full_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
_: PhantomData<A>,
) -> Result<Option<SE>>
where EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default { ... }
}Expand description
本模块提供2个维度的封装
- 结果的转化,上层抽象不再感知Row和QueryResult的存在
QueryResult -> u64
Vec
-> Vec
Row -> SE Option -> Option
Option -> bool
- sqlx::query::Query结构体的封装,上层抽象不再感知这个结构体的存在
本模块提供以下泛型接口函数
generic_execute (ex, stmt, args) -> Result
generic_exists (ex, stmt, args) -> Result
generic_fetch_all (ex, stmt, selection, args) -> Result<Vec
generic_fetch_all_ (ex, stmt, se, args) -> Result<Vec
generic_fetch_all_full (ex, stmt, args) -> Result<Vec
Required Associated Types§
Required Methods§
fn get_affected_rows(query_result: &<Self::DB as Database>::QueryResult) -> u64
Provided Methods§
async fn generic_exists<'a, EX, A>( ex: EX, stmt: &'a str, args: A, ) -> Result<bool>
async fn generic_exists_plain<'a, EX, A>( ex: EX, stmt: &'a str, _args: PhantomData<A>, ) -> Result<bool>
async fn generic_count<'s, 'a, EX, A>( ex: EX, stmt: &'s str, args: A, ) -> Result<Self::CountType>
async fn generic_count_plain<'a, EX, A>( ex: EX, stmt: &'a str, _args: PhantomData<A>, ) -> Result<Self::CountType>
async fn generic_execute<'a, 'e, EX, A>( ex: EX, query: &'a str, args: A, ) -> Result<u64>
async fn generic_execute_plain<'a, EX, A>( ex: EX, query: &'a str, _args: PhantomData<A>, ) -> Result<u64>
async fn generic_fetch_all<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
args: A,
) -> Result<Vec<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_all_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
args: A,
) -> Result<Vec<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_all_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
_: PhantomData<A>,
) -> Result<Vec<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_all_plain_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
_: PhantomData<A>,
) -> Result<Vec<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_one<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
args: A,
) -> Result<SE>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a,
async fn generic_fetch_one_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
args: A,
) -> Result<SE>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a,
async fn generic_fetch_one_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
_: PhantomData<A>,
) -> Result<SE>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_one_plain_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
_: PhantomData<A>,
) -> Result<SE>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_option<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
args: A,
) -> Result<Option<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_option_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
args: A,
) -> Result<Option<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_option_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE::Selection,
_: PhantomData<A>,
) -> Result<Option<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_option_plain_<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
selection: &SE,
_: PhantomData<A>,
) -> Result<Option<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_all_full<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
args: A,
) -> Result<Vec<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a,
async fn generic_fetch_all_full_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
_: PhantomData<A>,
) -> Result<Vec<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_one_full<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
args: A,
) -> Result<SE>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a,
async fn generic_fetch_one_full_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
_: PhantomData<A>,
) -> Result<SE>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
async fn generic_fetch_option_full<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
args: A,
) -> Result<Option<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a,
async fn generic_fetch_option_full_plain<'a, EX, SE, A>(
ex: EX,
stmt: &'a str,
_: PhantomData<A>,
) -> Result<Option<SE>>where
EX: Executor<'a, Database = Self::DB>,
SE: SelectedEntity<Self::DB> + Send + Unpin,
A: IntoArguments<'a, Self::DB> + 'a + Default,
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.