audit_syntax/
audit_syntax.rs

1//! Test DISTINCT ON with Expressions
2
3use qail_core::parse;
4use qail_core::transpiler::ToSql;
5
6fn main() {
7    println!("=== Testing DISTINCT ON with Expressions ===\n");
8
9    // Test 1: Simple DISTINCT ON (column)
10    let q1 = "get distinct on (phone_number) messages fields phone_number, content order by phone_number, created_at desc";
11    println!("Test 1 (DISTINCT ON column):");
12    match parse(q1) {
13        Ok(cmd) => println!("  OK: {}\n", cmd.to_sql()),
14        Err(e) => println!("  ERR: {}\n", e),
15    }
16
17    // Test 2: DISTINCT ON with CASE WHEN expression
18    let q2 = r#"get distinct on (case when phone like '0%' then '62' || substring(phone from 2) else phone end) orders 
19        fields phone, name order by case when phone like '0%' then '62' || substring(phone from 2) else phone end, created_at desc"#;
20    println!("Test 2 (DISTINCT ON CASE WHEN):");
21    match parse(q2) {
22        Ok(cmd) => println!("  OK: {}\n", cmd.to_sql()),
23        Err(e) => println!("  ERR: {}\n", e),
24    }
25
26    // Test 3: DISTINCT ON with function
27    let q3 = "get distinct on (lower(email)) users fields email, name order by lower(email), id";
28    println!("Test 3 (DISTINCT ON function):");
29    match parse(q3) {
30        Ok(cmd) => println!("  OK: {}\n", cmd.to_sql()),
31        Err(e) => println!("  ERR: {}\n", e),
32    }
33}