1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
mod tests;
pub mod query;
pub mod queryblock;
pub mod condition;
pub mod predicate;
pub mod upsert;
pub mod mutation;
pub mod schema;

pub use query::QueryBuilder;
pub use queryblock::QueryBlockBuilder;
pub use predicate::EdgeBuilder;
pub use mutation::MutationBuilder;

pub trait ToQueryString {
    fn to_query_string(&self) -> String;
}

trait IndentedString {
    fn indent(&self) -> String;
}

impl IndentedString for String {
    fn indent(&self) -> String {
        format!("\t{}", self.replace("\n", "\n\t"))
    }
}

impl<I: ToQueryString + Clone> ToQueryString for Option<I> {
    fn to_query_string(&self) -> String {
        self.clone()
            .map(|item| item.to_query_string())
            .unwrap_or("".to_string())
    }
}