postgres_static_analyzer_reflect_queries/client/
async_.rs1pub use generic_client::GenericClient;
4#[cfg(feature = "deadpool")]
5mod deadpool;
6mod generic_client;
7use tokio_postgres::{
8 Error, Row, RowStream, Statement,
9 types::{BorrowToSql, ToSql},
10};
11pub trait Params<'c, 'a, 's, P, O, C> {
14 fn params(&'s self, client: &'c C, params: &'a P) -> O;
15}
16pub async fn one<C: GenericClient>(
17 client: &C,
18 query: &str,
19 params: &[&(dyn ToSql + Sync)],
20 cached: Option<&Statement>,
21) -> Result<Row, Error> {
22 if let Some(cached) = cached {
23 client.query_one(cached, params).await
24 } else if C::stmt_cache() {
25 let cached = client.prepare(query).await?;
26 client.query_one(&cached, params).await
27 } else {
28 client.query_one(query, params).await
29 }
30}
31pub async fn opt<C: GenericClient>(
32 client: &C,
33 query: &str,
34 params: &[&(dyn ToSql + Sync)],
35 cached: Option<&Statement>,
36) -> Result<Option<Row>, Error> {
37 if let Some(cached) = cached {
38 client.query_opt(cached, params).await
39 } else if C::stmt_cache() {
40 let cached = client.prepare(query).await?;
41 client.query_opt(&cached, params).await
42 } else {
43 client.query_opt(query, params).await
44 }
45}
46pub async fn raw<C: GenericClient, P, I>(
47 client: &C,
48 query: &str,
49 params: I,
50 cached: Option<&Statement>,
51) -> Result<RowStream, Error>
52where
53 P: BorrowToSql,
54 I: IntoIterator<Item = P> + Sync + Send,
55 I::IntoIter: ExactSizeIterator,
56{
57 if let Some(cached) = cached {
58 client.query_raw(cached, params).await
59 } else if C::stmt_cache() {
60 let cached = client.prepare(query).await?;
61 client.query_raw(&cached, params).await
62 } else {
63 client.query_raw(query, params).await
64 }
65}