datasources 0.1.42

Async datasource interfaces, middleware, registry, and test doubles
Documentation
use super::delete_statement::DeleteStatement;
use super::statement_text_renderer::StatementTextRenderer;

pub struct DeleteStatementTextRenderer<'a> {
    text: &'a StatementTextRenderer,
    quote: fn(&str) -> String,
}

impl<'a> DeleteStatementTextRenderer<'a> {
    pub fn new(text: &'a StatementTextRenderer) -> Self {
        Self {
            text,
            quote: |name| name.to_string(),
        }
    }

    pub fn with_quote(mut self, quote: fn(&str) -> String) -> Self {
        self.quote = quote;
        self
    }

    pub fn render(&self, statement: &DeleteStatement) -> String {
        match statement.where_clause() {
            None => format!("DELETE FROM {}", self.quote(statement.table())),
            Some(predicate) => format!(
                "DELETE FROM {} WHERE {}",
                self.quote(statement.table()),
                self.text.render_where(predicate)
            ),
        }
    }

    pub fn quote(&self, name: &str) -> String {
        (self.quote)(name)
    }
}