Skip to main content

surrealdb_expr/expr/
data.rs

1use crate::expr::{AssignOperator, Expr, Idiom};
2
3#[derive(Clone, Debug, Default, Eq, PartialEq, Hash)]
4#[allow(clippy::enum_variant_names)]
5pub enum Data {
6	/// Represents an empty expression
7	#[default]
8	EmptyExpression,
9	/// Represents a `UPDATE something SET a = b, x = y` clause
10	SetExpression(Vec<Assignment>),
11	/// Represents a `UPDATE something UNSET x, y, z` clause
12	UnsetExpression(Vec<Idiom>),
13	/// Represents a `UPDATE something PATCH { ... }` expression
14	PatchExpression(Expr),
15	/// Represents a `UPDATE something MERGE { ... }` expression
16	MergeExpression(Expr),
17	/// Represents a `UPDATE something REPLACE { ... }` expression
18	ReplaceExpression(Expr),
19	/// Represents a `CREATE something CONTENT { ... }` expression
20	ContentExpression(Expr),
21	/// Represents a `INSERT INTO table { ... }` expression
22	SingleExpression(Expr),
23	/// Represents a `INSERT INTO table (... fields ...) VALUES (... values ...)` expression
24	ValuesExpression(Vec<Vec<(Idiom, Expr)>>),
25	/// Represents a `ON DUPLICATE KEY UPDATE ...` clause
26	UpdateExpression(Vec<Assignment>),
27}
28
29#[derive(Clone, Debug, Eq, PartialEq, Hash)]
30pub struct Assignment {
31	pub place: Idiom,
32	pub operator: AssignOperator,
33	pub value: Expr,
34}