Test and fix where method
This commit is contained in:
parent
1e7644108b
commit
4262b5b1c0
@ -8,10 +8,6 @@
|
||||
//!
|
||||
//! ```
|
||||
#![warn(missing_docs)]
|
||||
// Temporarily silence unused variables and uncalled code warnings
|
||||
// @TODO remove when most of the code is implemented
|
||||
#![allow(dead_code)]
|
||||
#![allow(unused_variables)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate lazy_static;
|
||||
|
@ -656,7 +656,7 @@ impl QueryBuilder {
|
||||
let keys = self._where(key, vec![value]);
|
||||
|
||||
for k in keys {
|
||||
self._where_string_key(key, conj);
|
||||
self._where_string_key(&k, conj);
|
||||
}
|
||||
|
||||
self
|
||||
@ -664,9 +664,8 @@ impl QueryBuilder {
|
||||
|
||||
fn _where_string_key(&mut self, key: &str, conj: &str) {
|
||||
let field = key.trim().split(" ").collect::<Vec<&str>>();
|
||||
let query_map = self.state.get_query_map();
|
||||
|
||||
let last_item = &query_map[query_map.len() - 1];
|
||||
let last_item = self.state.get_query_map_last();
|
||||
let mut item = self.driver.quote_identifier(field[0]);
|
||||
|
||||
let item2 = if field.len() == 1 {
|
||||
@ -677,8 +676,13 @@ impl QueryBuilder {
|
||||
|
||||
item += &item2;
|
||||
|
||||
let conj = if last_item.clause_type == QueryClauseType::GroupStart {
|
||||
String::from("")
|
||||
let conj = if last_item.is_some() {
|
||||
let last_item = last_item.unwrap();
|
||||
|
||||
match last_item.clause_type {
|
||||
QueryClauseType::GroupStart => String::from(""),
|
||||
_ => format!(" {} ", conj)
|
||||
}
|
||||
} else {
|
||||
format!(" {} ", conj)
|
||||
};
|
||||
@ -933,6 +937,16 @@ impl QueryState {
|
||||
&self.query_map
|
||||
}
|
||||
|
||||
pub fn get_query_map_last(&self) -> Option<&QueryClause> {
|
||||
if self.query_map.len() == 0 {
|
||||
return None
|
||||
}
|
||||
|
||||
let index = self.query_map.len() - 1;
|
||||
|
||||
Some(&self.query_map[index])
|
||||
}
|
||||
|
||||
pub fn get_select_string(&self) -> &str {
|
||||
&self.select_string
|
||||
}
|
||||
|
@ -47,6 +47,19 @@ fn select_without_from() {
|
||||
qb.get_compiled_select();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn select_where() {
|
||||
let mut qb = QueryBuilder::default();
|
||||
|
||||
qb.from("test")
|
||||
.r#where("foo", "bar");
|
||||
|
||||
let sql = qb.get_compiled_select();
|
||||
let expected = "SELECT *\nFROM \"test\" WHERE \"foo\"=?";
|
||||
|
||||
assert_eq!(sql, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn select_where_in() {
|
||||
let mut qb = QueryBuilder::default();
|
||||
|
Loading…
Reference in New Issue
Block a user