1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//! SurrealDB `UPDATE` statement builder.
//!
//! Builds parameterized `UPDATE` expressions in three modes:
//!
//! - **SET** (default) — `UPDATE target SET key = val, ...`
//! - **CONTENT** — `UPDATE target CONTENT {...}` (replaces all fields)
//! - **MERGE** — `UPDATE target MERGE {...}` (partial update, keeps unmentioned fields)
//!
//! Supports optional `WHERE` conditions for bulk updates.
//!
//! # Examples
//!
//! ```rust,ignore
//! use vantage_surrealdb::{SurrealUpdate, thing::Thing};
//!
//! // SET mode (default) — update specific fields
//! let upd = SurrealUpdate::new(Thing::new("users", "alice"))
//! .with_field("score", 99i64);
//!
//! // CONTENT mode — replace all fields
//! let upd = SurrealUpdate::new(Thing::new("users", "alice"))
//! .content()
//! .with_field("name", "Alice".to_string());
//!
//! // MERGE mode — partial update
//! let upd = SurrealUpdate::new(Thing::new("users", "alice"))
//! .merge()
//! .with_field("verified", true);
//!
//! // Bulk update with WHERE
//! let upd = SurrealUpdate::table("users")
//! .with_field("active", false)
//! .with_condition(surreal_expr!("last_login < {}", "2020-01-01"));
//!
//! // Execute
//! db.execute(&upd.expr()).await?;
//! ```
use IndexMap;
use crateExpr;
use crateAnySurrealType;
/// Update mode determines the SurrealDB update strategy.
/// Builder for SurrealDB `UPDATE` statements.
///
/// Produces `UPDATE target SET/CONTENT/MERGE ... [WHERE ...]`.
/// All field values are passed as parameterized CBOR values, not inlined strings.