r2d2_aykroyd/
lib.rs

1//! Aykroyd support for the `r2d2` connection pool.
2//!
3//! Examples
4//! --------
5#![cfg_attr(
6    feature = "postgres",
7    doc = r##"
8
9An example of the `postgres` client.
10
11```no_run
12use std::thread;
13use postgres::NoTls;
14use r2d2_aykroyd::postgres::AykroydConnectionManager;
15
16#[derive(aykroyd::QueryOne)]
17#[aykroyd(row(Row), text = "SELECT 1 + $1")]
18struct AddOneTo(i32);
19
20#[derive(aykroyd::FromRow)]
21struct Row(i32);
22
23fn main() {
24    let manager = AykroydConnectionManager::new(
25        "host=localhost user=postgres".parse().unwrap(),
26        NoTls,
27    );
28    let pool = r2d2::Pool::new(manager).unwrap();
29
30    for i in 0..10i32 {
31        let pool = pool.clone();
32        thread::spawn(move || {
33            let mut client = pool.get().unwrap();
34            let row = client.query_one(&AddOneTo(i)).unwrap();
35            let value = row.0;
36            assert_eq!(value, i + 1);
37        });
38    }
39}
40```
41"##)]
42#![cfg_attr(
43    feature = "mysql",
44    doc = r##"
45
46An example of the `mysql` client.
47
48```no_run
49use std::thread;
50use r2d2_aykroyd::mysql::AykroydConnectionManager;
51
52#[derive(aykroyd::QueryOne)]
53#[aykroyd(row(Row), text = "SELECT 1 + ?")]
54struct AddOneTo(i32);
55
56#[derive(aykroyd::FromRow)]
57struct Row(i32);
58
59fn main() {
60    let opts = mysql::Opts::from_url(
61        "mysql://user:password@locahost:3307/db_name",
62    ).unwrap();
63    let builder = mysql::OptsBuilder::from_opts(opts);
64    let manager = AykroydConnectionManager::new(builder);
65    let pool = r2d2::Pool::new(manager).unwrap();
66
67    for i in 0..10i32 {
68        let pool = pool.clone();
69        thread::spawn(move || {
70            let mut client = pool.get().unwrap();
71            let row = client.query_one(&AddOneTo(i)).unwrap();
72            let value = row.0;
73            assert_eq!(value, i + 1);
74        });
75    }
76}
77```
78"##)]
79#![cfg_attr(
80    feature = "rusqlite",
81    doc = r##"
82
83An example of the `rusqlite` client.
84
85```no_run
86use std::thread;
87use r2d2_aykroyd::rusqlite::AykroydConnectionManager;
88
89#[derive(aykroyd::QueryOne)]
90#[aykroyd(row(Row), text = "SELECT 1 + $1")]
91struct AddOneTo(i32);
92
93#[derive(aykroyd::FromRow)]
94struct Row(i32);
95
96fn main() {
97    let manager = AykroydConnectionManager::file("file.db");
98    let pool = r2d2::Pool::new(manager).unwrap();
99
100    for i in 0..10i32 {
101        let pool = pool.clone();
102        thread::spawn(move || {
103            let mut client = pool.get().unwrap();
104            let row = client.query_one(&AddOneTo(i)).unwrap();
105            let value = row.0;
106            assert_eq!(value, i + 1);
107        });
108    }
109}
110```
111"##)]
112#![deny(missing_docs, missing_debug_implementations)]
113#![cfg_attr(docsrs, feature(doc_cfg))]
114
115#[cfg(feature = "mysql")]
116#[cfg_attr(docsrs, doc(cfg(feature = "mysql")))]
117pub mod mysql;
118
119#[cfg(feature = "postgres")]
120#[cfg_attr(docsrs, doc(cfg(feature = "postgres")))]
121pub mod postgres;
122
123#[cfg(feature = "rusqlite")]
124#[cfg_attr(docsrs, doc(cfg(feature = "rusqlite")))]
125pub mod rusqlite;