chain_builder/query/join/
mod.rs1mod join_methods;
4
5use serde_json::Value;
6
7pub use join_methods::*;
9
10#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
12pub(crate) enum JoinStatement {
13 On(String, String, String),
15 OrChain(Box<JoinBuilder>),
17 OnVal(String, String, Value),
19 OnRaw(String, Option<Vec<Value>>),
21}
22
23impl JoinStatement {
24 pub fn as_mut_join_builder(&mut self) -> &mut JoinBuilder {
26 match self {
27 JoinStatement::OrChain(query) => query,
28 _ => panic!("JoinStatement::as_mut_join_builder() called on non-chain statement"),
29 }
30 }
31}
32
33#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
35pub struct JoinBuilder {
36 pub(crate) table: String,
38 pub(crate) join_type: String,
40 pub(crate) statement: Vec<JoinStatement>,
42 pub(crate) raw: Option<(String, Option<Vec<Value>>)>,
44 pub(crate) as_name: Option<String>,
46}