---
source: tests/codegen.rs
expression: code
---
// Code generated by sqlc-gen-sqlx v[VERSION]. DO NOT EDIT.
// sqlc version: [VERSION]
#![allow(
dead_code,
reason = "generated queries may expose items a caller does not use"
)]
pub trait AsExecutor {
fn as_executor(&mut self) -> impl sqlx::Executor<'_, Database = sqlx::Postgres>;
}
impl AsExecutor for sqlx::PgPool {
fn as_executor(&mut self) -> impl sqlx::Executor<'_, Database = sqlx::Postgres> {
&*self
}
}
impl AsExecutor for &sqlx::PgPool {
fn as_executor(&mut self) -> impl sqlx::Executor<'_, Database = sqlx::Postgres> {
*self
}
}
impl AsExecutor for sqlx::PgConnection {
fn as_executor(&mut self) -> impl sqlx::Executor<'_, Database = sqlx::Postgres> {
&mut *self
}
}
impl AsExecutor for sqlx::Transaction<'_, sqlx::Postgres> {
fn as_executor(&mut self) -> impl sqlx::Executor<'_, Database = sqlx::Postgres> {
&mut **self
}
}
impl AsExecutor for sqlx::pool::PoolConnection<sqlx::Postgres> {
fn as_executor(&mut self) -> impl sqlx::Executor<'_, Database = sqlx::Postgres> {
&mut **self
}
}
impl<T: AsExecutor + ?Sized> AsExecutor for &mut T {
fn as_executor(&mut self) -> impl sqlx::Executor<'_, Database = sqlx::Postgres> {
(**self).as_executor()
}
}
const BATCH_DELETE_BY_NAME: &str = "DELETE FROM authors WHERE name = $1";
pub fn batch_delete_by_name<'a, E, I>(
db: E,
items: I,
) -> impl futures_core::stream::Stream<Item = Result<(), sqlx::Error>> + 'a
where
E: AsExecutor + 'a,
I: IntoIterator<Item = &'a str> + 'a,
I::IntoIter: 'a,
{
futures_util::stream::try_unfold(
(db, items.into_iter()),
|(mut db, mut items)| async move {
let Some(item) = items.next() else {
return Ok(None);
};
sqlx::query(BATCH_DELETE_BY_NAME)
.bind(item)
.execute(db.as_executor())
.await?;
Ok(Some(((), (db, items))))
},
)
}