test_upsert/
test_upsert.rs1use qail_core::parse;
4use qail_core::transpiler::ToSql;
5
6fn main() {
7 println!("=== Testing UPSERT / ON CONFLICT ===\n");
8
9 let query1 = "add contacts fields phone, name values :phone, :name conflict (phone) nothing";
11 println!("Query 1: {}", query1);
12 match parse(query1) {
13 Ok(cmd) => {
14 println!(" On Conflict: {:?}", cmd.on_conflict);
15 println!(" SQL: {}\n", cmd.to_sql());
16 }
17 Err(e) => println!(" Parse error: {:?}\n", e),
18 }
19
20 let query2 = "add contacts fields phone, name values :phone, :name conflict (phone) update name = excluded.name";
22 println!("Query 2: {}", query2);
23 match parse(query2) {
24 Ok(cmd) => {
25 println!(" On Conflict: {:?}", cmd.on_conflict);
26 println!(" SQL: {}\n", cmd.to_sql());
27 }
28 Err(e) => println!(" Parse error: {:?}\n", e),
29 }
30
31 let query3 =
33 "add users fields email, data values :email, :data conflict (email) update data = :data";
34 println!("Query 3: {}", query3);
35 match parse(query3) {
36 Ok(cmd) => {
37 println!(" On Conflict: {:?}", cmd.on_conflict);
38 println!(" SQL: {}\n", cmd.to_sql());
39 }
40 Err(e) => println!(" Parse error: {:?}\n", e),
41 }
42
43 let query4 = "add items fields a, b, c values 1, 2, 3 conflict (a) update b = 10, c = 20";
45 println!("Query 4: {}", query4);
46 match parse(query4) {
47 Ok(cmd) => {
48 println!(" On Conflict: {:?}", cmd.on_conflict);
49 println!(" SQL: {}\n", cmd.to_sql());
50 }
51 Err(e) => println!(" Parse error: {:?}\n", e),
52 }
53}