#![doc = include_str!("../README.md")]
use sqlx_core::{Error, database::Database};
mod v3;
pub use askama;
pub use sqlx_askama_template_macro::*;
pub use v3::*;
pub trait SqlTemplate<'q, DB>: Sized + Clone + 'q
where
DB: Database,
{
fn render_sql_with_encode_placeholder_fn(
self,
f: Option<fn(usize, &mut String)>,
sql_buffer: &mut String,
) -> Result<Option<DB::Arguments<'q>>, Error>;
fn render_sql(self) -> Result<(String, Option<DB::Arguments<'q>>), Error> {
let mut sql_buff = String::new();
let arg = self.render_sql_with_encode_placeholder_fn(None, &mut sql_buff)?;
Ok((sql_buff, arg))
}
fn render_executable(
self,
sql_buffer: &'q mut String,
) -> Result<SqlTemplateExecute<'q, DB>, Error> {
let (sql, arguments) = self.render_sql()?;
*sql_buffer = sql;
Ok(SqlTemplateExecute {
sql: sql_buffer,
arguments,
persistent: true,
})
}
#[deprecated(note = "use `adapter_render` instead")]
fn render_db_adapter_manager(
self,
_sql_buff: &'q mut String,
) -> DBAdapterManager<'q, DB, Self> {
self.adapter_render()
}
fn adapter_render(self) -> DBAdapterManager<'q, DB, Self> {
DBAdapterManager::new(self)
}
}