#![doc = include_str!("../README.md")]
use sqlx_core::{Error, database::Database};
pub use askama;
pub use sqlx_askama_template_macro::*;
mod db_adapter;
mod sql_template_execute;
mod template_adapter;
mod template_arg;
pub use db_adapter::*;
pub use sql_template_execute::*;
pub use template_adapter::*;
pub use template_arg::*;
pub trait SqlTemplate<'q, DB>: Sized + Clone + Send
where
DB: Database,
{
fn render_with_placeholder(
self,
format_placeholder: Option<fn(usize, &mut String)>,
sql_buffer: &mut String,
) -> Result<Option<DB::Arguments>, Error>;
fn render(self) -> Result<(String, Option<DB::Arguments>), Error> {
let mut sql_buff = String::new();
let arg = self.render_with_placeholder(None, &mut sql_buff)?;
Ok((sql_buff, arg))
}
fn render_executable(self) -> Result<SqlTemplateExecute<DB>, Error> {
let (sql, arguments) = self.render()?;
Ok(SqlTemplateExecute {
sql,
arguments,
persistent: true,
})
}
fn adapter(self) -> DBAdapter<'q, DB, Self> {
DBAdapter::new(self)
}
}