chain_builder/join/
mod.rs1mod join_methods;
2
3pub use join_methods::*;
5
6#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
7pub(crate) enum JoinStatement {
8 On(String, String, String),
9 OrChain(Box<JoinBuilder>),
10 OnVal(String, String, serde_json::Value),
11 OnRaw(String, Option<Vec<serde_json::Value>>),
12}
13
14impl JoinStatement {
15 pub fn as_mut_join_builder(&mut self) -> &mut JoinBuilder {
16 match self {
17 JoinStatement::OrChain(query) => query,
18 _ => panic!("JoinStatement::to_join_builder()"),
19 }
20 }
21}
22
23#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
24pub struct JoinBuilder {
25 pub(crate) table: String,
26 pub(crate) join_type: String,
27 pub(crate) statement: Vec<JoinStatement>,
28 pub(crate) raw: Option<(String, Option<Vec<serde_json::Value>>)>,
29 pub(crate) as_name: Option<String>,
30}