test_subquery/
test_subquery.rs

1//! Test INSERT...SELECT and Subquery in SET
2
3use qail_core::parse;
4use qail_core::transpiler::ToSql;
5
6fn main() {
7    println!("=== Testing INSERT...SELECT ===\n");
8
9    // Test 1: Basic INSERT SELECT
10    let query1 =
11        "add archive fields id, name from (get users fields id, name where active = false)";
12    println!("Query 1: {}", query1);
13    match parse(query1) {
14        Ok(cmd) => {
15            println!("  source_query: {:?}", cmd.source_query.is_some());
16            println!("  SQL: {}\n", cmd.to_sql());
17        }
18        Err(e) => println!("  Parse error: {:?}\n", e),
19    }
20
21    println!("=== Testing Subquery in SET ===\n");
22
23    // Test 2: Subquery in UPDATE
24    let query2 = "set orders values total = (get items fields sum(price) where order_id = orders.id) where id = :id";
25    println!("Query 2: {}", query2);
26    match parse(query2) {
27        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
28        Err(e) => println!("  Parse error: {:?}\n", e),
29    }
30
31    // Test 3: Simple subquery value
32    let query3 =
33        "set users values role_id = (get roles fields id where name = 'admin') where user_id = :id";
34    println!("Query 3: {}", query3);
35    match parse(query3) {
36        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
37        Err(e) => println!("  Parse error: {:?}\n", e),
38    }
39}