surrealdb_core/syn/parser/stmt/
upsert.rs1use 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 with = self.try_parse_with()?;
16 let data = self.try_parse_data(stk).await?;
17 let cond = self.try_parse_condition(stk).await?;
18 let output = self.try_parse_output(stk).await?;
19 let timeout = self.try_parse_timeout()?;
20 let parallel = self.eat(t!("PARALLEL"));
21 let explain = self.try_parse_explain()?;
22
23 Ok(UpsertStatement {
24 only,
25 what,
26 with,
27 data,
28 cond,
29 output,
30 timeout,
31 parallel,
32 explain,
33 })
34 }
35}