Skip to content

Commit fbc43c7

Browse files
committed
Spawn query_chat
1 parent 5a9451a commit fbc43c7

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

crates/server/src/main.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::sync::Arc;
2+
13
use miniserve::{http::StatusCode, Content, Request, Response};
24
use serde::{Deserialize, Serialize};
35
use tokio::join;
@@ -16,19 +18,23 @@ async fn chat(req: Request) -> Response {
1618
let Request::Post(body) = req else {
1719
return Err(StatusCode::METHOD_NOT_ALLOWED);
1820
};
19-
let Ok(mut messages) = serde_json::from_str::<Messages>(&body) else {
21+
let Ok(mut data) = serde_json::from_str::<Messages>(&body) else {
2022
return Err(StatusCode::INTERNAL_SERVER_ERROR);
2123
};
2224

23-
let (i, mut responses) = join!(
25+
let messages = Arc::new(data.messages);
26+
let messages_ref = Arc::clone(&messages);
27+
let (i, responses) = join!(
2428
chatbot::gen_random_number(),
25-
chatbot::query_chat(&messages.messages)
29+
tokio::spawn(async move { chatbot::query_chat(&messages_ref).await })
2630
);
31+
let mut responses = responses.unwrap();
2732

2833
let response = responses.remove(i % responses.len());
29-
messages.messages.push(response);
34+
data.messages = Arc::into_inner(messages).unwrap();
35+
data.messages.push(response);
3036

31-
Ok(Content::Json(serde_json::to_string(&messages).unwrap()))
37+
Ok(Content::Json(serde_json::to_string(&data).unwrap()))
3238
}
3339

3440
#[tokio::main]

0 commit comments

Comments
 (0)