sqlx_askama_template/
lib.rs

1#![doc = include_str!("../README.md")]
2
3use sqlx_core::{Error, database::Database};
4mod v3;
5pub use askama;
6pub use sqlx_askama_template_macro::*;
7pub use v3::*;
8
9/// SQL template trait
10///
11/// Defines basic operations for rendering SQL from templates
12pub trait SqlTemplate<'q, DB>: Sized
13where
14    DB: Database,
15{
16    fn render_sql_with_encode_placeholder_fn(
17        self,
18        f: Option<fn(usize, &mut String)>,
19        sql_buffer: &mut String,
20    ) -> Result<Option<DB::Arguments<'q>>, Error>;
21    /// Renders SQL template and returns query string with parameters
22    fn render_sql(self) -> Result<(String, Option<DB::Arguments<'q>>), Error> {
23        let mut sql_buff = String::new();
24        let arg = self.render_sql_with_encode_placeholder_fn(None, &mut sql_buff)?;
25        Ok((sql_buff, arg))
26    }
27
28    /// Renders SQL template and returns executable query result
29    fn render_execute_able(
30        self,
31        sql_buffer: &'q mut String,
32    ) -> Result<SqlTemplateExecute<'q, DB>, Error> {
33        let (sql, arguments) = self.render_sql()?;
34        *sql_buffer = sql;
35        Ok(SqlTemplateExecute {
36            sql: sql_buffer,
37
38            arguments,
39
40            persistent: true,
41        })
42    }
43    fn render_db_adapter_manager(self, sql_buff: &'q mut String) -> DBAdapterManager<'q, DB, Self> {
44        DBAdapterManager::new(self, sql_buff)
45    }
46}