瀏覽代碼

Update axum to 0.6.1 and update other packages (#7784)

* Update axium to 0.6.1 and update other packages

* Cleanup Buildflags

* Use FromRequestParts instead of FromRequest

* package updates and fixed parameter order for updates and query function

* update docker base image

* remove explicit deref which will be handled bu auto-deref

---------

Co-authored-by: Roman Stingler <[email protected]>
romanstingler 2 年之前
父節點
當前提交
dc7a3d11ad

+ 2 - 1
frameworks/Rust/axum/.gitignore

@@ -1 +1,2 @@
-.env
+.env
+target/

File diff suppressed because it is too large
+ 283 - 163
frameworks/Rust/axum/Cargo.lock


+ 18 - 17
frameworks/Rust/axum/Cargo.toml

@@ -29,27 +29,28 @@ name = "axum-pg"
 path = "src/main_pg.rs"
 
 [dependencies]
-axum = { version = "0.5.1", default-features = false, features = ["json", "query"] }
-deadpool = { version = "0.9.3", features = ["rt_tokio_1", "serde", "async-trait", "managed" ] }
-deadpool-postgres = "0.10.2"
+axum = { version = "0.6.1", default-features = false, features = ["json", "query", "headers", "http1", "tokio"] }
+deadpool = { version = "0.9.5", features = ["rt_tokio_1", "serde", "async-trait", "managed" ] }
+deadpool-postgres = "0.10.3"
 dotenv = "0.15.0"
-futures = "0.3.21"
-futures-util = "0.3.21"
-hyper = { version = "0.14.18", features = ["http1"] }
-mongodb = { version = "2.2.1", features = ["zstd-compression", "snappy-compression", "zlib-compression"] }
-num_cpus = "1.13.1"
+futures = "0.3.25"
+futures-util = "0.3.25"
+hyper = { version = "0.14.23", features = ["http1", "server"] }
+mongodb = { version = "2.3.1", features = ["zstd-compression", "snappy-compression", "zlib-compression"] }
+num_cpus = "1.14.0"
 rand = { version = "0.8.5", features = ["small_rng"] }
-serde = { version = "1.0.136", features = ["derive"] }
-serde_json = "1.0.79"
-sqlx = { version = "0.6.0", features = ["postgres", "macros", "runtime-tokio-native-tls"] }
-tokio = { version = "1.20.3", features = ["full"] }
+serde = { version = "1.0.149", features = ["derive"] }
+serde_json = "1.0.89"
+sqlx = { version = "0.6.2", features = ["postgres", "macros", "runtime-tokio-native-tls"] }
+tokio = { version = "1.23.0", features = ["full"] }
 tokio-pg-mapper = "0.2.0"
 tokio-pg-mapper-derive = "0.2.0"
-tokio-postgres = "0.7.5"
-tower = { version = "0.4.12", features = ["util"] }
-tower-http = { version = "0.3.4", features = ["set-header"] }
-yarte = "0.15.6"
+tokio-postgres = "0.7.7"
+tower = { version = "0.4.13", features = ["util"] }
+tower-http = { version = "0.3.5", features = ["set-header"] }
+yarte = "0.15.7"
+
 
 [profile.release]
 lto = true
-codegen-units = 1
+codegen-units = 1

+ 1 - 1
frameworks/Rust/axum/axum-mongo-raw.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.60-slim-buster
+FROM rust:1.65-slim-buster
 
 ENV AXUM_TECHEMPOWER_MONGODB_URL=mongodb://tfb-database:27017
 ENV AXUM_TECHEMPOWER_MAX_POOL_SIZE=28

+ 1 - 1
frameworks/Rust/axum/axum-mongo.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.60-slim-buster
+FROM rust:1.65-slim-buster
 
 ENV AXUM_TECHEMPOWER_MONGODB_URL=mongodb://tfb-database:27017
 ENV AXUM_TECHEMPOWER_MAX_POOL_SIZE=28

+ 1 - 1
frameworks/Rust/axum/axum-pg-pool.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.60-slim-buster
+FROM rust:1.65-slim-buster
 
 ENV AXUM_TECHEMPOWER_DATABASE_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database/hello_world
 ENV AXUM_TECHEMPOWER_MAX_POOL_SIZE=28

+ 1 - 1
frameworks/Rust/axum/axum-pg.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.60-slim-buster
+FROM rust:1.65-slim-buster
 
 ENV AXUM_TECHEMPOWER_DATABASE_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database/hello_world
 

+ 1 - 1
frameworks/Rust/axum/axum-sqlx.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.60-slim-buster
+FROM rust:1.65-slim-buster
 
 ENV AXUM_TECHEMPOWER_DATABASE_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database/hello_world
 ENV AXUM_TECHEMPOWER_MAX_POOL_SIZE=56

+ 1 - 1
frameworks/Rust/axum/axum.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.60-slim-buster
+FROM rust:1.65-slim-buster
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
     pkg-config libssl-dev \

+ 1 - 1
frameworks/Rust/axum/config.toml

@@ -16,4 +16,4 @@ os = "Linux"
 orm = "Raw"
 platform = "Rust"
 webserver = "Hyper"
-versus = "None"
+versus = "None"

+ 9 - 6
frameworks/Rust/axum/src/database_mongo.rs

@@ -1,5 +1,6 @@
 use axum::async_trait;
-use axum::extract::{Extension, FromRequest, RequestParts};
+use axum::extract::{Extension, FromRequestParts};
+use axum::http::request::Parts;
 use axum::http::StatusCode;
 use futures_util::stream::FuturesUnordered;
 use futures_util::TryStreamExt;
@@ -14,14 +15,16 @@ use mongodb::Database;
 pub struct DatabaseConnection(pub Database);
 
 #[async_trait]
-impl<B> FromRequest<B> for DatabaseConnection
+impl<S> FromRequestParts<S> for DatabaseConnection
 where
-    B: Send,
+    S: Send + Sync,
 {
     type Rejection = (StatusCode, String);
-
-    async fn from_request(req: &mut RequestParts<B>) -> Result<Self, Self::Rejection> {
-        let Extension(db) = Extension::<Database>::from_request(req)
+    async fn from_request_parts(
+        parts: &mut Parts,
+        state: &S,
+    ) -> Result<Self, Self::Rejection> {
+        let Extension(db) = Extension::<Database>::from_request_parts(parts, state)
             .await
             .map_err(internal_error)?;
 

+ 9 - 5
frameworks/Rust/axum/src/database_mongo_raw.rs

@@ -1,5 +1,6 @@
 use axum::async_trait;
-use axum::extract::{Extension, FromRequest, RequestParts};
+use axum::extract::{Extension, FromRequestParts};
+use axum::http::request::Parts;
 use axum::http::StatusCode;
 use futures_util::stream::FuturesUnordered;
 use futures_util::TryStreamExt;
@@ -13,14 +14,17 @@ use mongodb::Database;
 pub struct DatabaseConnection(pub Database);
 
 #[async_trait]
-impl<B> FromRequest<B> for DatabaseConnection
+impl<S> FromRequestParts<S> for DatabaseConnection
 where
-    B: Send,
+    S: Send + Sync,
 {
     type Rejection = (StatusCode, String);
 
-    async fn from_request(req: &mut RequestParts<B>) -> Result<Self, Self::Rejection> {
-        let Extension(db) = Extension::<Database>::from_request(req)
+    async fn from_request_parts(
+        parts: &mut Parts,
+        state: &S,
+    ) -> Result<Self, Self::Rejection> {
+        let Extension(db) = Extension::<Database>::from_request_parts(parts, state)
             .await
             .map_err(internal_error)?;
 

+ 13 - 8
frameworks/Rust/axum/src/database_pg.rs

@@ -1,5 +1,6 @@
 use axum::async_trait;
-use axum::extract::{Extension, FromRequest, RequestParts};
+use axum::extract::{Extension, FromRequestParts};
+use axum::http::request::Parts;
 use axum::http::StatusCode;
 use futures::{
     stream::futures_unordered::FuturesUnordered, FutureExt, StreamExt, TryStreamExt,
@@ -41,7 +42,7 @@ pub struct PgConnection {
 
 impl PgConnection {
     pub async fn connect(db_url: String) -> Arc<PgConnection> {
-        let (cl, conn) = connect(&*db_url, NoTls)
+        let (cl, conn) = connect(&db_url, NoTls)
             .await
             .expect("can not connect to postgresql");
 
@@ -190,16 +191,20 @@ impl PgConnection {
 pub struct DatabaseConnection(pub Arc<PgConnection>);
 
 #[async_trait]
-impl<B> FromRequest<B> for DatabaseConnection
+impl<S> FromRequestParts<S> for DatabaseConnection
 where
-    B: Send,
+    S: Send + Sync,
 {
     type Rejection = (StatusCode, String);
 
-    async fn from_request(req: &mut RequestParts<B>) -> Result<Self, Self::Rejection> {
-        let Extension(pg_connection) = Extension::<Arc<PgConnection>>::from_request(req)
-            .await
-            .map_err(internal_error)?;
+    async fn from_request_parts(
+        parts: &mut Parts,
+        state: &S,
+    ) -> Result<Self, Self::Rejection> {
+        let Extension(pg_connection) =
+            Extension::<Arc<PgConnection>>::from_request_parts(parts, state)
+                .await
+                .map_err(internal_error)?;
 
         Ok(Self(pg_connection))
     }

+ 13 - 8
frameworks/Rust/axum/src/database_pg_pool.rs

@@ -1,5 +1,6 @@
 use axum::async_trait;
-use axum::extract::{Extension, FromRequest, RequestParts};
+use axum::extract::{Extension, FromRequestParts};
+use axum::http::request::Parts;
 use axum::http::StatusCode;
 use deadpool_postgres::{Client, Manager, ManagerConfig, RecyclingMethod};
 use std::io;
@@ -33,7 +34,7 @@ pub async fn create_pool(
     max_pool_size: u32,
 ) -> deadpool_postgres::Pool {
     let pg_config =
-        tokio_postgres::Config::from_str(&*database_url).expect("invalid database url");
+        tokio_postgres::Config::from_str(&database_url).expect("invalid database url");
 
     let mgr_config = ManagerConfig {
         recycling_method: RecyclingMethod::Fast,
@@ -50,16 +51,20 @@ pub async fn create_pool(
 pub struct DatabaseClient(pub Client);
 
 #[async_trait]
-impl<B> FromRequest<B> for DatabaseClient
+impl<S> FromRequestParts<S> for DatabaseClient
 where
-    B: Send,
+    S: Send + Sync,
 {
     type Rejection = (StatusCode, String);
 
-    async fn from_request(req: &mut RequestParts<B>) -> Result<Self, Self::Rejection> {
-        let Extension(pool) = Extension::<deadpool_postgres::Pool>::from_request(req)
-            .await
-            .map_err(internal_error)?;
+    async fn from_request_parts(
+        parts: &mut Parts,
+        state: &S,
+    ) -> Result<Self, Self::Rejection> {
+        let Extension(pool) =
+            Extension::<deadpool_postgres::Pool>::from_request_parts(parts, state)
+                .await
+                .map_err(internal_error)?;
 
         let conn = pool.get().await.map_err(internal_error)?;
 

+ 10 - 7
frameworks/Rust/axum/src/database_sqlx.rs

@@ -1,5 +1,6 @@
 use axum::async_trait;
-use axum::extract::{Extension, FromRequest, RequestParts};
+use axum::extract::{Extension, FromRequestParts};
+use axum::http::request::Parts;
 use axum::http::StatusCode;
 use std::io;
 
@@ -35,7 +36,7 @@ pub async fn create_pool(
     PgPoolOptions::new()
         .max_connections(max_pool_size)
         .min_connections(min_pool_size)
-        .connect(&*database_url)
+        .connect(&database_url)
         .await
         .unwrap()
 }
@@ -43,14 +44,16 @@ pub async fn create_pool(
 pub struct DatabaseConnection(pub PoolConnection<Postgres>);
 
 #[async_trait]
-impl<B> FromRequest<B> for DatabaseConnection
+impl<S> FromRequestParts<S> for DatabaseConnection
 where
-    B: Send,
+    S: Send + Sync,
 {
     type Rejection = (StatusCode, String);
-
-    async fn from_request(req: &mut RequestParts<B>) -> Result<Self, Self::Rejection> {
-        let Extension(pool) = Extension::<PgPool>::from_request(req)
+    async fn from_request_parts(
+        parts: &mut Parts,
+        state: &S,
+    ) -> Result<Self, Self::Rejection> {
+        let Extension(pool) = Extension::<PgPool>::from_request_parts(parts, state)
             .await
             .map_err(internal_error)?;
 

+ 2 - 2
frameworks/Rust/axum/src/utils.rs

@@ -14,9 +14,9 @@ where
     <T as FromStr>::Err: Debug,
 {
     T::from_str(
-        &*env::var(key).expect(&*format!("{} environment variable was not set", key)),
+        &env::var(key).unwrap_or_else(|_| panic!("{} environment variable was not set", key)),
     )
-    .expect(&*format!("could not parse {}", key))
+    .unwrap_or_else(|_| panic!("could not parse {}", key))
 }
 
 #[derive(Debug, Deserialize)]

Some files were not shown because too many files changed in this diff