quokka-admin 0.1.0

An admin panel for quokka
Documentation
use quokka::helper::database::{Bindable, SearchCriteria};
use sqlx::QueryBuilder;

/// A case-insensitive version of the [quokka::helper::database::LikeCriteria]
pub struct ILikeCriteria {
    pub column: &'static str,
    pub value: Box<dyn Bindable<sqlx::Postgres>>,
}

impl ILikeCriteria {
    pub fn new(column: &'static str, value: impl Bindable<sqlx::Postgres> + 'static) -> Self {
        Self {
            column,
            value: Box::new(value),
        }
    }
}

impl SearchCriteria for ILikeCriteria {
    fn extend_query_builder(&self, qb: &mut QueryBuilder<'_, sqlx::Postgres>) {
        qb.push("LOWER(")
            .push(self.column)
            .push(")")
            .push(" LIKE LOWER(");
        self.value.bind_to_query_builder(qb);
        qb.push(")");
    }
}