test_case_when/
test_case_when.rs1use qail_core::parse;
4use qail_core::transpiler::ToSql;
5
6fn main() {
7 println!("=== Testing CASE WHEN Expressions ===\n");
8
9 let query1 = "get users fields case when status = 'active' then 1 else 0 end as is_active";
11 println!("Query 1: {}", query1);
12 match parse(query1) {
13 Ok(cmd) => println!(" SQL: {}\n", cmd.to_sql()),
14 Err(e) => println!(" Parse error: {:?}\n", e),
15 }
16
17 let query2 = "get orders fields case when total > 1000 then 'large' when total > 100 then 'medium' else 'small' end as size";
19 println!("Query 2: {}", query2);
20 match parse(query2) {
21 Ok(cmd) => println!(" SQL: {}\n", cmd.to_sql()),
22 Err(e) => println!(" Parse error: {:?}\n", e),
23 }
24
25 let query3 =
27 "set products values price = case when stock > 0 then price else 0 end where id = :id";
28 println!("Query 3: {}", query3);
29 match parse(query3) {
30 Ok(cmd) => println!(" SQL: {}\n", cmd.to_sql()),
31 Err(e) => println!(" Parse error: {:?}\n", e),
32 }
33
34 let query4 = "get users fields case when role = :role then 1 else 0 end as matched";
36 println!("Query 4: {}", query4);
37 match parse(query4) {
38 Ok(cmd) => println!(" SQL: {}\n", cmd.to_sql()),
39 Err(e) => println!(" Parse error: {:?}\n", e),
40 }
41
42 let query5 = "get users where name is null";
44 println!("Query 5 (WHERE IS NULL): {}", query5);
45 match parse(query5) {
46 Ok(cmd) => println!(" SQL: {}\n", cmd.to_sql()),
47 Err(e) => println!(" Parse error: {:?}\n", e),
48 }
49
50 let query6 = "get users fields case when name is null then email else name end";
52 println!("Query 6 (CASE IS NULL): {}", query6);
53 match parse(query6) {
54 Ok(cmd) => println!(" SQL: {}\n", cmd.to_sql()),
55 Err(e) => println!(" Parse error: {:?}\n", e),
56 }
57}