vantage-sql 0.4.5

Vantage extension for SQL databases (Postgres, MySQL, SQLite)
Documentation
//! PostgresOperation trait — vendor-specific comparison operations producing
//! `PostgresCondition`. Generated by `define_sql_operation!` in `condition.rs`.

use crate::condition::PostgresCondition;
use crate::define_sql_operation;

define_sql_operation!(
    PostgresOperation,
    PostgresCondition,
    crate::postgres::types::AnyPostgresType
);

#[cfg(test)]
mod tests {
    use super::*;
    use crate::postgres::types::AnyPostgresType;
    use vantage_table::column::core::Column;

    #[test]
    fn test_column_eq() {
        let name = Column::<AnyPostgresType>::new("name");
        let cond = name.eq(AnyPostgresType::from("Alice".to_string()));
        assert_eq!(cond.into_expr().preview(), "name = 'Alice'");
    }

    #[test]
    fn test_typed_column_gt() {
        let price = Column::<i64>::new("price");
        let cond = price.gt(150i64);
        assert_eq!(cond.into_expr().preview(), "price > 150");
    }

    #[test]
    fn test_chaining_gt_eq_false() {
        let price = Column::<i64>::new("price");
        let cond = price.gt(10i64).eq(false);
        assert_eq!(cond.into_expr().preview(), "price > 10 = false");
    }

    #[test]
    fn test_chaining_gt_eq_true() {
        let price = Column::<i64>::new("price");
        let cond = price.gt(10i64).eq(true);
        assert_eq!(cond.into_expr().preview(), "price > 10 = true");
    }

    #[test]
    fn test_typed_bool_column() {
        let is_deleted = Column::<bool>::new("is_deleted");
        let cond = is_deleted.eq(false);
        assert_eq!(cond.into_expr().preview(), "is_deleted = false");
    }

    #[test]
    fn test_cross_type_rejected() {
        let price = Column::<i64>::new("price");
        let _: PostgresCondition = price.gt(150i64);
    }
}