surrealdb_core/syn/parser/stmt/
upsert.rs

1use reblessive::Stk;
2
3use crate::{
4	sql::{statements::UpsertStatement, Values},
5	syn::{
6		parser::{ParseResult, Parser},
7		token::t,
8	},
9};
10
11impl Parser<'_> {
12	pub async fn parse_upsert_stmt(&mut self, stk: &mut Stk) -> ParseResult<UpsertStatement> {
13		let only = self.eat(t!("ONLY"));
14		let what = Values(self.parse_what_list(stk).await?);
15		let data = self.try_parse_data(stk).await?;
16		let cond = self.try_parse_condition(stk).await?;
17		let output = self.try_parse_output(stk).await?;
18		let timeout = self.try_parse_timeout()?;
19		let parallel = self.eat(t!("PARALLEL"));
20
21		Ok(UpsertStatement {
22			only,
23			what,
24			data,
25			cond,
26			output,
27			timeout,
28			parallel,
29		})
30	}
31}