taitan-orm-parser 0.1.11

Next Generation ORM based on sqlx
Documentation
use taitan_orm_trait::parsers::PlaceholderParser;
#[test]
fn test_dynamic_placeholder() {
    let template = "SELECT * FROM users WHERE a=:{a} AND b=:{b} AND c=:{c}";
    let (sql, vars) = PlaceholderParser::parse(template);

    assert_eq!(sql, "SELECT * FROM users WHERE a=? AND b=? AND c=?");
    assert_eq!(vars, vec!["a".to_string(), "b".to_string(), "c".to_string()]);

    let (sql, vars) = PlaceholderParser::parse_indexed(template);

    assert_eq!(sql, "SELECT * FROM users WHERE a=$1 AND b=$2 AND c=$3");
    assert_eq!(vars, vec!["a".to_string(), "b".to_string(), "c".to_string()]);


    let template = "SELECT * FROM users WHERE a=:{a} AND b=:{b} AND c=:{c} OR d='sdf'";
    let (sql, vars) = PlaceholderParser::parse_indexed(template);
    assert_eq!(sql, "SELECT * FROM users WHERE a=$1 AND b=$2 AND c=$3 OR d='sdf'");
    assert_eq!(vars, vec!["a".to_string(), "b".to_string(), "c".to_string()]);

    let template = "SELECT * FROM users WHERE a=:{a} AND b=:{b} AND c=:{c} OR d=':{name}'";
    let (sql, vars) = PlaceholderParser::parse_indexed(template);
    assert_eq!(sql, "SELECT * FROM users WHERE a=$1 AND b=$2 AND c=$3 OR d=':{name}'");
    assert_eq!(vars, vec!["a".to_string(), "b".to_string(), "c".to_string()]);
}