From fc83fca77df2dc18db34484ee2f03c28a0effa56 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Mon, 24 Mar 2025 09:49:33 +0800 Subject: [PATCH] [viz] Improve JSON response --- frameworks/Rust/viz/Cargo.toml | 6 +++-- frameworks/Rust/viz/src/db_pg.rs | 16 ++++++------ frameworks/Rust/viz/src/main.rs | 30 ++++++++++++++--------- frameworks/Rust/viz/viz-diesel.dockerfile | 2 +- frameworks/Rust/viz/viz-pg.dockerfile | 2 +- frameworks/Rust/viz/viz-sqlx.dockerfile | 2 +- frameworks/Rust/viz/viz.dockerfile | 2 +- 7 files changed, 34 insertions(+), 26 deletions(-) diff --git a/frameworks/Rust/viz/Cargo.toml b/frameworks/Rust/viz/Cargo.toml index a1daab27b7f..72d159b4b79 100644 --- a/frameworks/Rust/viz/Cargo.toml +++ b/frameworks/Rust/viz/Cargo.toml @@ -25,14 +25,14 @@ required-features = ["diesel", "diesel-async", "sailfish"] [dependencies] viz = "0.10" -hyper = "1.5" +hyper = "1.0" hyper-util = "0.1" http-body-util = "0.1" atoi = "2.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1" mime = "0.3" -rand = { version = "0.8", features = ["small_rng"] } +rand = { version = "0.9", features = ["small_rng"] } thiserror = "2.0" futures-util = "0.3" @@ -66,3 +66,5 @@ sailfish = { version = "0.9", optional = true } [profile.release] lto = true codegen-units = 1 +strip = true +opt-level = 3 diff --git a/frameworks/Rust/viz/src/db_pg.rs b/frameworks/Rust/viz/src/db_pg.rs index bb280fafc10..da7a5a0be5f 100644 --- a/frameworks/Rust/viz/src/db_pg.rs +++ b/frameworks/Rust/viz/src/db_pg.rs @@ -1,7 +1,7 @@ use std::{collections::HashMap, fmt::Write, io, sync::Arc}; use futures_util::{stream::FuturesUnordered, StreamExt, TryFutureExt, TryStreamExt}; -use rand::{rngs::SmallRng, thread_rng, Rng, SeedableRng}; +use rand::{rng, rngs::SmallRng, Rng, SeedableRng}; use tokio::pin; use tokio_postgres::{connect, types::ToSql, Client, NoTls, Statement}; use viz::{Error, IntoResponse, Response, StatusCode}; @@ -105,19 +105,19 @@ impl PgConnection { } pub async fn get_world(&self) -> Result { - let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap(); - let random_id = (rng.gen::() % 10_000 + 1) as i32; + let mut rng = SmallRng::from_rng(&mut rng()); + let random_id = (rng.random::() % 10_000 + 1) as i32; self.query_one_world(random_id).await } pub async fn get_worlds(&self, num: u16) -> Result, PgError> { - let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap(); + let mut rng = SmallRng::from_rng(&mut rng()); let worlds = FuturesUnordered::new(); for _ in 0..num { - let id = (rng.gen::() % 10_000 + 1) as i32; + let id = (rng.random::() % 10_000 + 1) as i32; worlds.push(self.query_one_world(id)); } @@ -125,13 +125,13 @@ impl PgConnection { } pub async fn update(&self, num: u16) -> Result, PgError> { - let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap(); + let mut rng = SmallRng::from_rng(&mut rng()); let worlds = FuturesUnordered::new(); for _ in 0..num { - let id = (rng.gen::() % 10_000 + 1) as i32; - let rid = (rng.gen::() % 10_000 + 1) as i32; + let id = (rng.random::() % 10_000 + 1) as i32; + let rid = (rng.random::() % 10_000 + 1) as i32; worlds.push(self.query_one_world(id).map_ok(move |mut world| { world.randomnumber = rid; diff --git a/frameworks/Rust/viz/src/main.rs b/frameworks/Rust/viz/src/main.rs index 0bde892034a..4daffd4916c 100644 --- a/frameworks/Rust/viz/src/main.rs +++ b/frameworks/Rust/viz/src/main.rs @@ -2,7 +2,7 @@ use serde::Serialize; use viz::{ - header::{HeaderValue, SERVER}, + header::{HeaderValue, CONTENT_TYPE, SERVER}, Bytes, Error, Request, Response, ResponseExt, Result, Router, }; @@ -22,18 +22,24 @@ async fn plaintext(_: Request) -> Result { } async fn json(_: Request) -> Result { - let mut res = Response::with( - http_body_util::Full::new(Bytes::from( - serde_json::to_vec(&Message { - message: "Hello, World!", - }) - .unwrap(), - )), - mime::APPLICATION_JSON.as_ref(), + let mut resp = Response::builder() + .body( + http_body_util::Full::new(Bytes::from( + serde_json::to_vec(&Message { + message: "Hello, World!", + }) + .unwrap(), + )) + .into(), + ) + .unwrap(); + let headers = resp.headers_mut(); + headers.insert(SERVER, HeaderValue::from_static("Viz")); + headers.insert( + CONTENT_TYPE, + HeaderValue::from_static(mime::APPLICATION_JSON.as_ref()), ); - res.headers_mut() - .insert(SERVER, HeaderValue::from_static("Viz")); - Ok(res) + Ok(resp) } #[tokio::main] diff --git a/frameworks/Rust/viz/viz-diesel.dockerfile b/frameworks/Rust/viz/viz-diesel.dockerfile index 62eec4e7ebd..9dac40c5efe 100644 --- a/frameworks/Rust/viz/viz-diesel.dockerfile +++ b/frameworks/Rust/viz/viz-diesel.dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.83 +FROM rust:1.85 ADD ./ /viz WORKDIR /viz diff --git a/frameworks/Rust/viz/viz-pg.dockerfile b/frameworks/Rust/viz/viz-pg.dockerfile index e45d0db4402..d0ee0ebed7a 100644 --- a/frameworks/Rust/viz/viz-pg.dockerfile +++ b/frameworks/Rust/viz/viz-pg.dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.83 +FROM rust:1.85 ADD ./ /viz WORKDIR /viz diff --git a/frameworks/Rust/viz/viz-sqlx.dockerfile b/frameworks/Rust/viz/viz-sqlx.dockerfile index 62bd3cac1d8..734fccc8d4a 100644 --- a/frameworks/Rust/viz/viz-sqlx.dockerfile +++ b/frameworks/Rust/viz/viz-sqlx.dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.83 +FROM rust:1.85 ADD ./ /viz WORKDIR /viz diff --git a/frameworks/Rust/viz/viz.dockerfile b/frameworks/Rust/viz/viz.dockerfile index 16abf430a9f..df606181820 100644 --- a/frameworks/Rust/viz/viz.dockerfile +++ b/frameworks/Rust/viz/viz.dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.83 +FROM rust:1.85 ADD ./ /viz WORKDIR /viz