postgres_querybuilder/
lib.rs1#[cfg(test)]
7#[macro_use]
8extern crate serial_test;
9
10pub mod bucket;
11pub mod prelude;
12mod select_builder;
13mod update_builder;
14
15pub use select_builder::SelectBuilder;
16pub use update_builder::UpdateBuilder;
17
18#[cfg(test)]
19mod test {
20 use super::prelude::*;
21 use super::select_builder::SelectBuilder;
22 use super::*;
23 use postgres::{Client, Error, NoTls};
24 use std::env;
25
26 fn get_url() -> String {
27 match env::var("DATABASE_URL") {
28 Ok(value) => value,
29 Err(_) => "postgres://postgres:password@localhost/postgres".into(),
30 }
31 }
32
33 fn prepare(client: &mut Client) {
34 client.execute("DROP TABLE IF EXISTS users;", &[]).unwrap();
35 client
36 .execute(
37 "CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT UNIQUE NOT NULL);",
38 &[],
39 )
40 .unwrap();
41 }
42
43 fn get_connection() -> Client {
44 let url = get_url();
45 let mut client = Client::connect(url.as_str(), NoTls).unwrap();
46 prepare(&mut client);
47 client
48 }
49
50 fn execute<T: QueryBuilder>(builder: T) -> Result<u64, Error> {
51 let mut client = get_connection();
52 let stmt = builder.get_query();
53 let params = builder.get_ref_params();
54 client.execute(stmt.as_str(), ¶ms)
55 }
56
57 #[serial]
58 #[test]
59 fn select_limit_offset() {
60 let mut builder = SelectBuilder::new("users");
61 builder.select("id");
62 builder.select("name");
63 builder.limit(3);
64 builder.offset(1);
65 execute(builder).unwrap();
66 }
67
68 #[serial]
69 #[test]
70 fn select_where() {
71 let mut builder = SelectBuilder::new("users");
72 builder.select("id");
73 builder.select("name");
74 builder.where_eq("id", 42);
75 execute(builder).unwrap();
76 }
77}