chain_builder/join/
mod.rs

1mod join_methods;
2
3// export
4pub 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}