Skip to content

Commit 9cdf124

Browse files
authored
use homebrew postgres driver. (#7243)
1 parent 090f776 commit 9cdf124

File tree

6 files changed

+49
-33
lines changed

6 files changed

+49
-33
lines changed

frameworks/Rust/xitca-web/Cargo.toml

+13-15
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,21 @@ xitca-http-codegen = "0.1"
1717
xitca-server = "0.1"
1818
xitca-service = "0.1"
1919
xitca-web = "0.1"
20+
xitca-postgres = "0.1"
2021

2122
ahash = { version = "0.7.6", features = ["compile-time-rng"] }
2223
atoi = "0.4.0"
2324
core_affinity = "0.5.10"
24-
diesel = { git = "https://github.com/diesel-rs/diesel.git", rev = "37ec18f46ced2d6e9197414156fdb705d7a61426", default-features = false }
25+
diesel = { version = "2", default-features = false }
2526
diesel-async = { version = "0.1.0", features = ["postgres"], default-features = false }
2627
futures-util = { version = "0.3.18", default-features = false, features = ["alloc"] }
2728
mimalloc = { version = "0.1.27", default-features = false }
2829
rand = { version = "0.8", default-features = false, features = ["min_const_gen", "small_rng"] }
29-
sailfish = "0.3.3"
30+
sailfish = "0.3.4"
3031
serde = "1"
3132
simd-json = "0.4.8"
3233
tang-rs = "0.2"
3334
tokio = { version = "1.14", features = ["macros", "rt"] }
34-
tokio-postgres = "0.7.5"
3535

3636
[profile.release]
3737
lto = true
@@ -40,15 +40,13 @@ codegen-units = 1
4040
panic = "abort"
4141

4242
[patch.crates-io]
43-
xitca-http = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "59827177f6c319c6fa9940fe5f146754fff90aad" }
44-
xitca-http-codegen = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "59827177f6c319c6fa9940fe5f146754fff90aad" }
45-
xitca-io = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "59827177f6c319c6fa9940fe5f146754fff90aad" }
46-
xitca-server = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "59827177f6c319c6fa9940fe5f146754fff90aad" }
47-
xitca-service = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "59827177f6c319c6fa9940fe5f146754fff90aad" }
48-
xitca-web = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "59827177f6c319c6fa9940fe5f146754fff90aad" }
49-
50-
diesel = { git = "https://github.com/diesel-rs/diesel.git", rev = "37ec18f46ced2d6e9197414156fdb705d7a61426" }
51-
diesel-async = { git = "https://github.com/weiznich/diesel_async.git", rev = "06b3416826dbc8ce404f6d613daea989b23549ca" }
52-
53-
# this is not right. but not much can be done when the maintainer is unactive.
54-
sailfish = { git = "https://github.com/jdrouet/sailfish", rev = "7d2b59247eaab10b67311d6c1c7d50a7d751d791" }
43+
xitca-http = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "e1debcd4630196669923f94c7693e5519f34db52" }
44+
xitca-http-codegen = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "e1debcd4630196669923f94c7693e5519f34db52" }
45+
xitca-io = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "e1debcd4630196669923f94c7693e5519f34db52" }
46+
xitca-postgres = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "e1debcd4630196669923f94c7693e5519f34db52" }
47+
xitca-server = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "e1debcd4630196669923f94c7693e5519f34db52" }
48+
xitca-service = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "e1debcd4630196669923f94c7693e5519f34db52" }
49+
xitca-web = { git = "https://github.com/fakeshadow/xitca-web.git", rev = "e1debcd4630196669923f94c7693e5519f34db52" }
50+
51+
diesel = { git = "https://github.com/fakeshadow/diesel.git", rev = "ed2ceeb377c986c1013c6261e44658e3f43725d3" }
52+
diesel-async = { git = "https://github.com/fakeshadow/diesel_async.git", rev = "dc2e77677299aa6b406353960a9eab7a7bd5bc72" }

frameworks/Rust/xitca-web/src/db.rs

+28-8
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,51 @@ use ahash::AHashMap;
44
use futures_util::stream::{FuturesUnordered, StreamExt, TryStreamExt};
55
use rand::{rngs::SmallRng, Rng, SeedableRng};
66
use tokio::pin;
7-
use tokio_postgres::{types::ToSql, NoTls, Statement};
7+
use xitca_postgres::{Postgres, Statement, ToSql};
88

99
use super::ser::{Fortune, Fortunes, World};
1010

1111
pub struct Client {
12-
client: tokio_postgres::Client,
12+
client: xitca_postgres::Client,
1313
rng: RefCell<SmallRng>,
1414
fortune: Statement,
1515
world: Statement,
1616
updates: AHashMap<u16, Statement>,
1717
}
1818

19+
impl Drop for Client {
20+
fn drop(&mut self) {
21+
drop(self.fortune.clone().into_guarded(&self.client));
22+
23+
drop(self.world.clone().into_guarded(&self.client));
24+
25+
for (_, stmt) in std::mem::take(&mut self.updates) {
26+
drop(stmt.into_guarded(&self.client))
27+
}
28+
}
29+
}
30+
1931
pub async fn create(config: &str) -> Client {
20-
let (client, conn) = tokio_postgres::connect(config, NoTls).await.unwrap();
32+
let (client, conn) = Postgres::new(config).connect().await.unwrap();
2133

2234
tokio::task::spawn_local(async move {
2335
let _ = conn.await;
2436
});
2537

26-
let fortune = client.prepare("SELECT * FROM fortune").await.unwrap();
38+
let fortune = client
39+
.prepare("SELECT * FROM fortune", &[])
40+
.await
41+
.unwrap()
42+
.leak();
43+
2744
let world = client
28-
.prepare("SELECT * FROM world WHERE id=$1")
45+
.prepare("SELECT * FROM world WHERE id=$1", &[])
2946
.await
30-
.unwrap();
47+
.unwrap()
48+
.leak();
49+
3150
let mut updates = AHashMap::new();
51+
3252
for num in 1..=500u16 {
3353
let mut pl = 1;
3454
let mut q = String::new();
@@ -45,7 +65,7 @@ pub async fn create(config: &str) -> Client {
4565
q.pop();
4666
q.push(')');
4767

48-
let st = client.prepare(&q).await.unwrap();
68+
let st = client.prepare(&q, &[]).await.unwrap().leak();
4969
updates.insert(num, st);
5070
}
5171

@@ -130,7 +150,7 @@ impl Client {
130150

131151
let stream = self
132152
.client
133-
.query_raw::<_, _, &[i32; 0]>(&self.fortune, &[])
153+
.query_raw::<_, &[i32; 0]>(&self.fortune, &[])
134154
.await?;
135155

136156
pin!(stream);

frameworks/Rust/xitca-web/src/main.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ use self::util::{
3838
TEXT_HEADER_VALUE,
3939
};
4040

41-
type Request = http::Request<RequestBody>;
41+
type Request = xitca_http::Request<RequestBody>;
4242

4343
type Response = http::Response<ResponseBody>;
4444

@@ -162,14 +162,12 @@ impl HttpService {
162162
}
163163
}
164164

165-
#[inline]
166165
async fn _fortunes(&self) -> Result<Bytes, Box<dyn Error>> {
167166
use sailfish::TemplateOnce;
168167
let fortunes = self.state.client().tell_fortune().await?.render_once()?;
169168
Ok(fortunes.into())
170169
}
171170

172-
#[inline]
173171
fn _json<S>(&self, req: Request, value: &S) -> Result<Response, Infallible>
174172
where
175173
S: ?Sized + Serialize,

frameworks/Rust/xitca-web/src/main_diesel.rs

100755100644
+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ mod schema;
99
mod ser;
1010
mod util;
1111

12-
use std::{error::Error, io};
12+
use std::{convert::Infallible, error::Error, io};
1313

1414
use serde::Serialize;
1515
use xitca_web::{
@@ -37,8 +37,8 @@ async fn main() -> io::Result<()> {
3737

3838
HttpServer::new(move || {
3939
App::with_async_state(move || async move {
40-
let pool = create(config).await.map_err(|_| ())?;
41-
Ok(AppState::new(pool))
40+
let pool = create(config).await.unwrap();
41+
Ok::<_, Infallible>(AppState::new(pool))
4242
})
4343
.service(fn_service(handle))
4444
})

frameworks/Rust/xitca-web/xitca-web-diesel.dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
FROM rust:1.58
1+
FROM rust:1.59
22

33
ADD ./ /xitca-web
44
WORKDIR /xitca-web
55

6-
RUN rustup default nightly-2022-01-26
6+
RUN rustup default nightly-2022-03-24
77
RUN cargo clean
88
RUN RUSTFLAGS="-C target-cpu=native" cargo build --release --bin xitca-web-diesel
99

frameworks/Rust/xitca-web/xitca-web.dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
FROM rust:1.58
1+
FROM rust:1.59
22

33
ADD ./ /xitca-web
44
WORKDIR /xitca-web
55

6-
RUN rustup default nightly-2022-01-26
6+
RUN rustup default nightly-2022-03-24
77
RUN cargo clean
88
RUN RUSTFLAGS="-C target-cpu=native" cargo build --release --bin xitca-web
99

0 commit comments

Comments
 (0)