Skip to content

Commit 1a438b8

Browse files
committed
feat: update
1 parent 7222c44 commit 1a438b8

File tree

5 files changed

+39
-37
lines changed

5 files changed

+39
-37
lines changed

frameworks/Rust/hyperlane/src/db.rs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,13 @@ pub async fn get_update_data(
119119
let db_pool: &DbPoolConnection = get_db_connection();
120120
let mut query_res_list: Vec<QueryRow> = Vec::with_capacity(limit as usize);
121121
let rows: Vec<QueryRow> = get_some_row_id(limit, db_pool).await;
122-
let mut sql: String = format!("UPDATE {} SET randomNumber = CASE id ", TABLE_NAME_WORLD);
122+
let mut sql: String = String::with_capacity(rows.len() * 32);
123+
sql.push_str(&format!(
124+
"UPDATE {} SET randomNumber = CASE id ",
125+
TABLE_NAME_WORLD
126+
));
123127
let mut id_list: Vec<i32> = Vec::with_capacity(rows.len());
124-
let mut value_list: Vec<String> = Vec::with_capacity(rows.len() * 2);
128+
let mut value_list: Vec<String> = Vec::with_capacity(rows.len());
125129
let mut random_numbers: Vec<i32> = Vec::with_capacity(rows.len());
126130
for (i, row) in rows.iter().enumerate() {
127131
let new_random_number: i32 = get_random_id() as i32;
@@ -131,10 +135,8 @@ pub async fn get_update_data(
131135
query_res_list.push(QueryRow::new(row.id, new_random_number));
132136
}
133137
sql.push_str(&value_list.join(" "));
134-
let id_params: String = id_list
135-
.iter()
136-
.enumerate()
137-
.map(|(i, _)| format!("${}", (rows.len() * 2 + 1) + i))
138+
let id_params: String = (0..rows.len())
139+
.map(|i| format!("${}", (rows.len() * 2 + 1) + i))
138140
.collect::<Vec<_>>()
139141
.join(",");
140142
sql.push_str(&format!(
@@ -174,7 +176,7 @@ pub async fn query_world_row(db_pool: &DbPoolConnection, id: Queries) -> QueryRo
174176
pub async fn update_world_rows(limit: Queries) -> Vec<QueryRow> {
175177
let db_pool: &DbPoolConnection = get_db_connection();
176178
let (sql, data, id_list, random_numbers) = get_update_data(limit).await;
177-
let mut query_builder: query::Query<'_, Postgres, postgres::PgArguments> = query(&sql);
179+
let mut query_builder = query(&sql);
178180
for (id, random_number) in id_list.iter().zip(random_numbers.iter()) {
179181
query_builder = query_builder.bind(id).bind(random_number);
180182
}
@@ -194,18 +196,18 @@ pub async fn all_world_row() -> Vec<PgRow> {
194196

195197
pub async fn get_some_row_id(limit: Queries, db_pool: &DbPoolConnection) -> Vec<QueryRow> {
196198
let semaphore: Arc<Semaphore> = Arc::new(Semaphore::new(32));
197-
let mut tasks: Vec<JoinHandle<QueryRow>> = Vec::with_capacity(limit as usize);
198-
for _ in 0..limit {
199-
let _ = semaphore.clone().acquire_owned().await.map(|permit| {
200-
let db_pool: DbPoolConnection = db_pool.clone();
201-
tasks.push(spawn(async move {
199+
let tasks: Vec<_> = (0..limit)
200+
.map(|_| {
201+
let semaphore: Arc<Semaphore> = semaphore.clone();
202+
let db_pool: Pool<Postgres> = db_pool.clone();
203+
spawn(async move {
204+
let _permit: Result<OwnedSemaphorePermit, AcquireError> =
205+
semaphore.acquire_owned().await;
202206
let id: i32 = get_random_id();
203-
let res: QueryRow = query_world_row(&db_pool, id).await;
204-
drop(permit);
205-
res
206-
}));
207-
});
208-
}
207+
query_world_row(&db_pool, id).await
208+
})
209+
})
210+
.collect();
209211
join_all(tasks)
210212
.await
211213
.into_iter()

frameworks/Rust/hyperlane/src/main.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ pub(crate) use hyperlane::{
1717
once_cell::sync::Lazy,
1818
serde::*,
1919
serde_json::{Value, json},
20-
tokio::{spawn, sync::Semaphore, task::JoinHandle},
20+
tokio::{
21+
spawn,
22+
sync::{AcquireError, OwnedSemaphorePermit, Semaphore},
23+
task::JoinHandle,
24+
},
2125
*,
2226
};
2327
pub(crate) use lazy::*;
2428
pub(crate) use rand::{Rng, SeedableRng, rng, rngs::SmallRng};
25-
pub(crate) use request_middleware::*;
26-
pub(crate) use route::*;
2729
pub(crate) use server::*;
2830
pub(crate) use sqlx::{
2931
postgres::{PgPoolOptions, PgRow},

frameworks/Rust/hyperlane/src/request_middleware.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ pub async fn request(ctx: Context) {
99
.await;
1010
#[cfg(feature = "plaintext")]
1111
{
12-
set_response_header(CONTENT_TYPE, TEXT_PLAIN).await;
12+
ctx.set_response_header(CONTENT_TYPE, TEXT_PLAIN).await;
1313
}
1414
#[cfg(feature = "fortunes")]
1515
{
16-
ctx = ctx
17-
.set_response_header(CONTENT_TYPE, content_type_charset(TEXT_HTML, UTF8))
16+
ctx.set_response_header(CONTENT_TYPE, content_type_charset(TEXT_HTML, UTF8))
1817
.await;
1918
}
2019
#[cfg(any(
@@ -25,8 +24,7 @@ pub async fn request(ctx: Context) {
2524
feature = "cached_query"
2625
))]
2726
{
28-
ctx = ctx
29-
.set_response_header(CONTENT_TYPE, APPLICATION_JSON)
27+
ctx.set_response_header(CONTENT_TYPE, APPLICATION_JSON)
3028
.await;
3129
}
3230
}

frameworks/Rust/hyperlane/src/route.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub async fn db(ctx: Context) {
2121
.await;
2222
}
2323

24-
pub async fn queries(ctx: Context) {
24+
pub async fn query(ctx: Context) {
2525
let queries: Queries = ctx
2626
.get_request_query("q")
2727
.await
@@ -55,7 +55,7 @@ pub async fn fortunes(ctx: Context) {
5555
let _ = ctx.send_response(200, res).await;
5656
}
5757

58-
pub async fn updates(ctx: Context) {
58+
pub async fn update(ctx: Context) {
5959
let queries: Queries = ctx
6060
.get_request_query("q")
6161
.await
@@ -69,7 +69,7 @@ pub async fn updates(ctx: Context) {
6969
.await;
7070
}
7171

72-
pub async fn cached_queries(ctx: Context) {
72+
pub async fn cached_query(ctx: Context) {
7373
let count: Queries = ctx
7474
.get_request_query("c")
7575
.await

frameworks/Rust/hyperlane/src/server.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,21 @@ async fn init_server() {
2323
server.disable_inner_print().await;
2424
server.http_line_buffer_size(256).await;
2525
server.websocket_buffer_size(256).await;
26-
server.request_middleware(request).await;
26+
server.request_middleware(request_middleware::request).await;
2727
#[cfg(feature = "plaintext")]
28-
server.route("/plaintext", plaintext).await;
28+
server.route("/plaintext", route::plaintext).await;
2929
#[cfg(feature = "json")]
30-
server.route("/json", json).await;
30+
server.route("/json", route::json).await;
3131
#[cfg(feature = "cached_query")]
32-
server.route("/cached-quer", cached_queries).await;
32+
server.route("/cached-quer", route::cached_query).await;
3333
#[cfg(feature = "db")]
34-
server.route("/db", db).await;
34+
server.route("/db", route::db).await;
3535
#[cfg(feature = "query")]
36-
server.route("/query", queries).await;
36+
server.route("/query", route::query).await;
3737
#[cfg(feature = "fortunes")]
38-
server.route("/fortunes", fortunes).await;
38+
server.route("/fortunes", route::fortunes).await;
3939
#[cfg(feature = "update")]
40-
server.route("/upda", updates).await;
40+
server.route("/upda", route::update).await;
4141
server.listen().await.unwrap();
4242
}
4343

0 commit comments

Comments
 (0)