test_order_by/
test_order_by.rs

1//! Test Complex ORDER BY
2
3use qail_core::parse;
4use qail_core::transpiler::ToSql;
5
6fn main() {
7    println!("=== Testing Complex ORDER BY ===\n");
8    
9    // Test 1: Simple ORDER BY
10    let query1 = "get users fields name order by created_at desc";
11    println!("Query 1 (Simple ORDER BY):");
12    match parse(query1) {
13        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
14        Err(e) => println!("  Error: {}\n", e),
15    }
16    
17    // Test 2: ORDER BY with expression
18    let query2 = "get users fields name order by first_name || last_name";
19    println!("Query 2 (ORDER BY expression):");
20    match parse(query2) {
21        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
22        Err(e) => println!("  Error: {}\n", e),
23    }
24    
25    // Test 3: ORDER BY with CASE WHEN
26    let query3 = "get orders fields id order by case when status = 'urgent' then 1 else 2 end";
27    println!("Query 3 (ORDER BY CASE WHEN):");
28    match parse(query3) {
29        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
30        Err(e) => println!("  Error: {}\n", e),
31    }
32    
33    // Test 4: Complex ORDER BY from message_repository
34    let query4 = r#"get orders fields normalized_phone order by 
35        case when phone like '0%' then '62' || substring(phone from 2) else phone end, 
36        created_at desc"#;
37    println!("Query 4 (Complex CASE + SUBSTRING in ORDER BY):");
38    match parse(query4) {
39        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
40        Err(e) => println!("  Error: {}\n", e),
41    }
42}