use sqlx::{
database::HasArguments,
query::{Query, QueryAs},
Database, Encode, Type,
};
pub trait Bind<'q, DB>
where
DB: Database,
{
fn bind<T>(self, value: T) -> Self
where
T: 'q + Send + Encode<'q, DB> + Type<DB>;
}
impl<'q, DB> Bind<'q, DB> for Query<'q, DB, <DB as HasArguments<'q>>::Arguments>
where
DB: Database,
{
fn bind<T>(self, value: T) -> Self
where
T: 'q + Send + Encode<'q, DB> + Type<DB>,
{
Query::bind(self, value)
}
}
impl<'q, DB, O> Bind<'q, DB> for QueryAs<'q, DB, O, <DB as HasArguments<'q>>::Arguments>
where
DB: Database,
{
fn bind<T>(self, value: T) -> Self
where
T: 'q + Send + Encode<'q, DB> + Type<DB>,
{
QueryAs::bind(self, value)
}
}
pub(crate) trait RowsAffected {
fn rows_affected(&self) -> u64;
}
#[cfg(feature = "postgres")]
impl RowsAffected for sqlx::postgres::PgQueryResult {
fn rows_affected(&self) -> u64 {
sqlx::postgres::PgQueryResult::rows_affected(self)
}
}
#[cfg(feature = "mysql")]
impl RowsAffected for sqlx::mysql::MySqlQueryResult {
fn rows_affected(&self) -> u64 {
sqlx::mysql::MySqlQueryResult::rows_affected(self)
}
}
#[cfg(feature = "sqlite")]
impl RowsAffected for sqlx::sqlite::SqliteQueryResult {
fn rows_affected(&self) -> u64 {
sqlx::sqlite::SqliteQueryResult::rows_affected(self)
}
}
pub(crate) trait SupportsReturning {}
#[cfg(feature = "postgres")]
impl SupportsReturning for sqlx::Postgres {}
#[cfg(feature = "sqlite")]
impl SupportsReturning for sqlx::Sqlite {}