surrealdb_sql/statements/
live.rs1use surrealdb_types::{SqlFormat, ToSql, write_sql};
2
3use crate::{Cond, CoverStmts, Expr, Fetchs, Fields};
4
5#[derive(Clone, Debug, Eq, PartialEq)]
6#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
7pub enum LiveFields {
8 Diff,
9 Select(Fields),
10}
11
12#[derive(Clone, Debug, Eq, PartialEq)]
13#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
14pub struct LiveStatement {
15 pub fields: LiveFields,
16 pub what: Expr,
17 pub cond: Option<Cond>,
18 pub fetch: Option<Fetchs>,
19}
20
21impl ToSql for LiveStatement {
22 fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
23 f.push_str("LIVE SELECT");
24 match &self.fields {
25 LiveFields::Diff => write_sql!(f, fmt, " DIFF"),
26 LiveFields::Select(x) => write_sql!(f, fmt, " {}", x),
27 }
28 write_sql!(f, fmt, " FROM {}", CoverStmts(&self.what));
29 if let Some(ref v) = self.cond {
30 write_sql!(f, fmt, " {v}");
31 }
32 if let Some(ref v) = self.fetch {
33 write_sql!(f, fmt, " {v}");
34 }
35 }
36}