mirror of
https://github.com/neondatabase/neon.git
synced 2026-05-29 11:00:38 +00:00
This upgrades the `proxy/` crate as well as the forked libraries in `libs/proxy/` to edition 2024. Also reformats the imports of those forked libraries via: ``` cargo +nightly fmt -p proxy -p postgres-protocol2 -p postgres-types2 -p tokio-postgres2 -- -l --config imports_granularity=Module,group_imports=StdExternalCrate,reorder_imports=true ``` It can be read commit-by-commit: the first commit has no formatting changes, only changes to accomodate the new edition. Part of #10918
63 lines
1.8 KiB
Rust
63 lines
1.8 KiB
Rust
#![allow(async_fn_in_trait)]
|
|
|
|
use postgres_protocol2::Oid;
|
|
|
|
use crate::query::RowStream;
|
|
use crate::types::Type;
|
|
use crate::{Client, Error, Transaction};
|
|
|
|
mod private {
|
|
pub trait Sealed {}
|
|
}
|
|
|
|
/// A trait allowing abstraction over connections and transactions.
|
|
///
|
|
/// This trait is "sealed", and cannot be implemented outside of this crate.
|
|
pub trait GenericClient: private::Sealed {
|
|
/// Like `Client::query_raw_txt`.
|
|
async fn query_raw_txt<S, I>(&self, statement: &str, params: I) -> Result<RowStream, Error>
|
|
where
|
|
S: AsRef<str> + Sync + Send,
|
|
I: IntoIterator<Item = Option<S>> + Sync + Send,
|
|
I::IntoIter: ExactSizeIterator + Sync + Send;
|
|
|
|
/// Query for type information
|
|
async fn get_type(&self, oid: Oid) -> Result<Type, Error>;
|
|
}
|
|
|
|
impl private::Sealed for Client {}
|
|
|
|
impl GenericClient for Client {
|
|
async fn query_raw_txt<S, I>(&self, statement: &str, params: I) -> Result<RowStream, Error>
|
|
where
|
|
S: AsRef<str> + Sync + Send,
|
|
I: IntoIterator<Item = Option<S>> + Sync + Send,
|
|
I::IntoIter: ExactSizeIterator + Sync + Send,
|
|
{
|
|
self.query_raw_txt(statement, params).await
|
|
}
|
|
|
|
/// Query for type information
|
|
async fn get_type(&self, oid: Oid) -> Result<Type, Error> {
|
|
crate::prepare::get_type(self.inner(), oid).await
|
|
}
|
|
}
|
|
|
|
impl private::Sealed for Transaction<'_> {}
|
|
|
|
impl GenericClient for Transaction<'_> {
|
|
async fn query_raw_txt<S, I>(&self, statement: &str, params: I) -> Result<RowStream, Error>
|
|
where
|
|
S: AsRef<str> + Sync + Send,
|
|
I: IntoIterator<Item = Option<S>> + Sync + Send,
|
|
I::IntoIter: ExactSizeIterator + Sync + Send,
|
|
{
|
|
self.query_raw_txt(statement, params).await
|
|
}
|
|
|
|
/// Query for type information
|
|
async fn get_type(&self, oid: Oid) -> Result<Type, Error> {
|
|
self.client().get_type(oid).await
|
|
}
|
|
}
|