sql_tools 0.11.10

A rust crate meant to make SQL queries simple and communication between various SQL versions easy.
Documentation
use crate::{
    query_conjunctions::{
        QueryConjunctions, WhereArg,
        utils::{conjunction_match, conjunction_match_not, where_match, where_match_not},
    },
    statements::{
        delete::DeleteProps,
        select::{ColumnProps, SelectProps},
        update::UpdateProps,
    },
};

impl QueryConjunctions for SelectProps {
    fn where_in(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let where_clause = where_match(&column, values);
        self.clause = Some(where_clause);
        self
    }

    fn where_not(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let where_clause = where_match_not(&column, values);
        self.clause = Some(where_clause);
        self
    }

    fn and(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match(&column, values, &self.clause, "AND");
        self.clause = Some(clause);
        self
    }

    fn or(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match(&column, values, &self.clause, "OR");
        self.clause = Some(clause);
        self
    }

    fn and_not(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match_not(&column, values, &self.clause, "AND");
        self.clause = Some(clause);
        self
    }

    fn or_not(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match_not(&column, values, &self.clause, "OR");
        self.clause = Some(clause);
        self
    }
}

impl QueryConjunctions for DeleteProps {
    fn where_in(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let where_clause = where_match(&column, values);
        self.clause = Some(where_clause);
        self
    }

    fn where_not(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let where_clause = where_match_not(&column, values);
        self.clause = Some(where_clause);
        self
    }

    fn and(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match(&column, values, &self.clause, "AND");
        self.clause = Some(clause);
        self
    }

    fn or(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match(&column, values, &self.clause, "OR");
        self.clause = Some(clause);
        self
    }

    fn and_not(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match_not(&column, values, &self.clause, "AND");
        self.clause = Some(clause);
        self
    }

    fn or_not(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match_not(&column, values, &self.clause, "OR");
        self.clause = Some(clause);
        self
    }
}

impl QueryConjunctions for UpdateProps {
    fn where_in(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let where_clause = where_match(&column, values);
        self.clause = Some(where_clause);
        self
    }

    fn where_not(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let where_clause = where_match_not(&column, values);
        self.clause = Some(where_clause);
        self
    }

    fn and(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match(&column, values, &self.clause, "AND");
        self.clause = Some(clause);
        self
    }

    fn or(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match(&column, values, &self.clause, "OR");
        self.clause = Some(clause);
        self
    }

    fn and_not(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match_not(&column, values, &self.clause, "AND");
        self.clause = Some(clause);
        self
    }

    fn or_not(mut self, column: &ColumnProps, values: WhereArg) -> Self {
        let clause = conjunction_match_not(&column, values, &self.clause, "OR");
        self.clause = Some(clause);
        self
    }
}