Skip to content

Commit fb3c281

Browse files
authored
bump rama to 0.2 (#9895)
* bump rama to 0.2 rama 0.2 anouncement: <plabayo/rama#544> * cached query results are not optional json null values are not allowed, instead they prefer to not have the items at all, in case ids did not exist
1 parent 6d175fa commit fb3c281

File tree

10 files changed

+394
-96
lines changed

10 files changed

+394
-96
lines changed

frameworks/Rust/rama/Cargo.lock

Lines changed: 340 additions & 38 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frameworks/Rust/rama/Cargo.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ default = []
3333
simd-json = ["dep:simd-json", "dep:mime", "dep:serde_path_to_error"]
3434

3535
[dependencies]
36-
rama = { version = "0.2.0-alpha.11", default-features = false, features = [
37-
"http-full",
38-
] }
36+
rama = { version = "0.2.0", default-features = false, features = ["http-full"] }
3937
deadpool = { version = "0.12", features = ["rt_tokio_1", "serde", "managed"] }
4038
deadpool-postgres = { version = "0.14", features = ["rt_tokio_1", "serde"] }
4139
dotenv = "0.15"

frameworks/Rust/rama/src/common/simd_json.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
use bytes::{BufMut, BytesMut};
44
use rama::http::{
5-
HeaderMap, HeaderValue, IntoResponse, Request, Response, StatusCode, header,
5+
HeaderMap, HeaderValue, Request, Response, StatusCode, header,
66
service::web::extract::{
77
Bytes, FromRequest,
88
body::{BytesRejection, InvalidJsonContentType, JsonRejection},
99
},
10+
service::web::response::IntoResponse,
1011
};
1112
use serde::{Serialize, de::DeserializeOwned};
1213
use simd_json;
@@ -83,7 +84,7 @@ fn json_content_type(headers: &HeaderMap) -> bool {
8384

8485
let is_json_content_type = mime.type_() == "application"
8586
&& (mime.subtype() == "json"
86-
|| mime.suffix().map_or(false, |name| name == "json"));
87+
|| mime.suffix().is_some_and(|name| name == "json"));
8788

8889
is_json_content_type
8990
}
Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use bytes::Bytes;
2-
use rama::http::{HeaderValue, IntoResponse, Response, StatusCode, header};
1+
use rama::http::StatusCode;
32
use serde::Deserialize;
43

54
#[derive(Debug, Deserialize)]
@@ -26,26 +25,3 @@ where
2625
{
2726
(StatusCode::INTERNAL_SERVER_ERROR, err.to_string())
2827
}
29-
30-
#[derive(Clone, Copy, Debug)]
31-
pub struct Utf8Html<T>(pub T);
32-
33-
impl<T> IntoResponse for Utf8Html<T>
34-
where
35-
T: Into<Bytes>,
36-
{
37-
fn into_response(self) -> Response {
38-
let mut res = (StatusCode::OK, self.0.into()).into_response();
39-
res.headers_mut().insert(
40-
header::CONTENT_TYPE,
41-
HeaderValue::from_static("text/html; charset=utf-8"),
42-
);
43-
res
44-
}
45-
}
46-
47-
impl<T> From<T> for Utf8Html<T> {
48-
fn from(inner: T) -> Self {
49-
Self(inner)
50-
}
51-
}

frameworks/Rust/rama/src/main.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@ static GLOBAL: MiMalloc = MiMalloc;
1111
#[cfg(feature = "simd-json")]
1212
use common::simd_json::Json;
1313
#[cfg(not(feature = "simd-json"))]
14-
use rama::http::response::Json;
15-
use rama::http::{IntoResponse, StatusCode, service::web::Router};
14+
use rama::http::service::web::response::Json;
15+
use rama::http::{
16+
StatusCode,
17+
service::web::{Router, response::IntoResponse},
18+
};
1619

1720
/// Return a plaintext static string.
1821
#[inline(always)]

frameworks/Rust/rama/src/main_mongo.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@ use mongodb::{
1717
options::{ClientOptions, Compressor},
1818
};
1919
#[cfg(not(feature = "simd-json"))]
20-
use rama::http::response::Json;
20+
use rama::http::service::web::response::Json;
2121
use rama::http::{
22-
IntoResponse, StatusCode,
23-
service::web::{Router, extract::Query},
22+
StatusCode,
23+
service::web::{
24+
Router,
25+
extract::Query,
26+
response::{Html, IntoResponse},
27+
},
2428
};
2529
use rand::{SeedableRng, rng, rngs::SmallRng};
2630
use yarte::Template;
@@ -30,7 +34,7 @@ static GLOBAL: MiMalloc = MiMalloc;
3034

3135
use common::{
3236
get_env,
33-
utils::{Params, Utf8Html, parse_params},
37+
utils::{Params, parse_params},
3438
};
3539
use mongo::database::{
3640
DatabaseConnection, fetch_fortunes, find_world_by_id, find_worlds, update_worlds,
@@ -101,7 +105,7 @@ async fn fortunes(DatabaseConnection(db): DatabaseConnection) -> impl IntoRespon
101105
})
102106
.collect();
103107

104-
Utf8Html(
108+
Html(
105109
FortunesTemplate {
106110
fortunes: &fortune_infos,
107111
}

frameworks/Rust/rama/src/main_mongo_raw.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ use common::{
1212
utils::{Params, parse_params},
1313
};
1414
use rama::http::{
15-
IntoResponse, StatusCode,
16-
service::web::{Router, extract::Query},
15+
StatusCode,
16+
service::web::{Router, extract::Query, response::IntoResponse},
1717
};
1818
use std::time::Duration;
1919

@@ -25,7 +25,7 @@ static GLOBAL: MiMalloc = MiMalloc;
2525
#[cfg(feature = "simd-json")]
2626
use common::simd_json::Json;
2727
#[cfg(not(feature = "simd-json"))]
28-
use rama::http::response::Json;
28+
use rama::http::service::web::response::Json;
2929

3030
use dotenv::dotenv;
3131
use mongodb::{

frameworks/Rust/rama/src/main_pg.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ mod pg;
44
use dotenv::dotenv;
55
use mimalloc::MiMalloc;
66
use rama::http::{
7-
IntoResponse, StatusCode,
8-
service::web::{Router, extract::Query},
7+
StatusCode,
8+
service::web::{
9+
Router,
10+
extract::Query,
11+
response::{Html, IntoResponse},
12+
},
913
};
1014
use rand::rng;
1115
use yarte::Template;
@@ -16,13 +20,13 @@ static GLOBAL: MiMalloc = MiMalloc;
1620
#[cfg(feature = "simd-json")]
1721
use common::simd_json::Json;
1822
#[cfg(not(feature = "simd-json"))]
19-
use rama::http::response::Json;
23+
use rama::http::service::web::response::Json;
2024

2125
mod server;
2226

2327
use common::{
2428
get_env, random_id,
25-
utils::{Params, Utf8Html, parse_params},
29+
utils::{Params, parse_params},
2630
};
2731
use pg::database::{DatabaseConnection, PgConnection};
2832
use pg::models::Fortune;
@@ -63,7 +67,7 @@ async fn fortunes(DatabaseConnection(conn): DatabaseConnection) -> impl IntoResp
6367
.await
6468
.expect("error loading fortunes");
6569

66-
Utf8Html(
70+
Html(
6771
FortunesTemplate {
6872
fortunes: &fortunes,
6973
}

frameworks/Rust/rama/src/main_pg_pool.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@ mod pg_pool;
44
#[cfg(feature = "simd-json")]
55
use common::simd_json::Json;
66
#[cfg(not(feature = "simd-json"))]
7-
use rama::http::response::Json;
7+
use rama::http::service::web::response::Json;
88

99
use common::{SELECT_ALL_FORTUNES, SELECT_WORLD_BY_ID, UPDATE_WORLDS, random_ids};
1010
use dotenv::dotenv;
1111
use futures_util::{TryStreamExt, stream::FuturesUnordered};
1212
use mimalloc::MiMalloc;
1313
use rama::http::{
14-
IntoResponse, StatusCode,
15-
service::web::{Router, extract::Query},
14+
StatusCode,
15+
service::web::{
16+
Router,
17+
extract::Query,
18+
response::{Html, IntoResponse},
19+
},
1620
};
1721
use rand::{SeedableRng, rng, rngs::SmallRng};
1822
use yarte::Template;
@@ -24,7 +28,7 @@ mod server;
2428

2529
use common::{
2630
get_env, random_id,
27-
utils::{Params, Utf8Html, parse_params},
31+
utils::{Params, parse_params},
2832
};
2933
use pg_pool::database::{
3034
DatabaseClient, PgError, create_pool, fetch_all_fortunes, fetch_world_by_id,
@@ -82,7 +86,7 @@ async fn fortunes(DatabaseClient(client): DatabaseClient) -> impl IntoResponse {
8286

8387
fortunes.sort_by(|a, b| a.message.cmp(&b.message));
8488

85-
Utf8Html(
89+
Html(
8690
FortunesTemplate {
8791
fortunes: &fortunes,
8892
}

frameworks/Rust/rama/src/main_sqlx.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@ use quick_cache::sync::Cache;
1010
use rama::{
1111
Context,
1212
http::{
13-
IntoResponse, StatusCode,
14-
service::web::{Router, extract::Query},
13+
StatusCode,
14+
service::web::{
15+
Router,
16+
extract::Query,
17+
response::{Html, IntoResponse},
18+
},
1519
},
1620
};
1721
use rand::{SeedableRng, rng, rngs::SmallRng};
@@ -22,15 +26,15 @@ use yarte::Template;
2226
static GLOBAL: MiMalloc = MiMalloc;
2327

2428
#[cfg(not(feature = "simd-json"))]
25-
use rama::http::response::Json;
29+
use rama::http::service::web::response::Json;
2630
#[cfg(feature = "simd-json")]
27-
use rama::http::response::Json;
31+
use rama::http::service::web::response::Json;
2832

2933
mod server;
3034

3135
use common::{
3236
get_env, random_id, random_ids,
33-
utils::{Params, Utf8Html, parse_params},
37+
utils::{Params, parse_params},
3438
};
3539
use sqlx::database::create_pool;
3640
use sqlx::models::Fortune;
@@ -91,7 +95,7 @@ async fn fortunes(ctx: Context<AppState>) -> impl IntoResponse {
9195

9296
fortunes.sort_by(|a, b| a.message.cmp(&b.message));
9397

94-
Utf8Html(
98+
Html(
9599
FortunesTemplate {
96100
fortunes: &fortunes,
97101
}
@@ -106,10 +110,12 @@ async fn cache(
106110
) -> impl IntoResponse {
107111
let count = parse_params(params);
108112
let mut rng = SmallRng::from_rng(&mut rng());
109-
let mut worlds: Vec<Option<World>> = Vec::with_capacity(count);
113+
let mut worlds: Vec<World> = Vec::with_capacity(count);
110114

111115
for id in random_ids(&mut rng, count) {
112-
worlds.push(ctx.state().cache.get(&id));
116+
if let Some(world) = ctx.state().cache.get(&id) {
117+
worlds.push(world);
118+
}
113119
}
114120

115121
(StatusCode::OK, Json(worlds))

0 commit comments

Comments
 (0)