|
|
@@ -2,6 +2,7 @@ use actix_web::{HttpResponse, HttpRequest, Responder, web, post};
|
|
|
use sqlx::PgPool;
|
|
|
use uuid::Uuid;
|
|
|
use serde::Serialize;
|
|
|
+use tokio::sync::oneshot::Receiver;
|
|
|
use crate::{
|
|
|
http_error::HttpError,
|
|
|
auth::user_auth,
|
|
|
@@ -31,23 +32,34 @@ pub async fn route(
|
|
|
let game_id = Uuid::parse_str(&path.into_inner())?;
|
|
|
let (game, mut characters, sessions) = Game::get_full_game(&db, game_id.clone(), Some(user.id)).await?;
|
|
|
let session = Session::new(game_id);
|
|
|
- /*let response = prompt(game, characters.remove(0), sessions, vec![], None, true).await?;
|
|
|
- let turn = Turn::new(
|
|
|
- session.id,
|
|
|
- response.input_tokens,
|
|
|
- response.output_tokens,
|
|
|
- "".to_string(),
|
|
|
- response.message
|
|
|
- );
|
|
|
- session.insert(&db).await?;
|
|
|
- turn.insert(&db).await?;
|
|
|
- User::add_tokens(&db, user.id, -turn.tokens_used).await?;
|
|
|
+ let response = prompt(
|
|
|
+ game,
|
|
|
+ characters.remove(0),
|
|
|
+ sessions,
|
|
|
+ vec![],
|
|
|
+ None,
|
|
|
+ true
|
|
|
+ ).await?;
|
|
|
+ update_db(response.message, session, "".to_string(), user.id, db);
|
|
|
+ Ok(response.sse)
|
|
|
+}
|
|
|
|
|
|
- let tokens_remaining = user.tokens - turn.tokens_used;
|
|
|
- Ok(HttpResponse::Ok().json(Response {
|
|
|
- session: session,
|
|
|
- turn: turn,
|
|
|
- tokens_remaining: tokens_remaining
|
|
|
- }))*/
|
|
|
- Ok(HttpResponse::Ok().body("ok"))
|
|
|
+fn update_db(
|
|
|
+ message: Receiver<(String, i32, i32)>,
|
|
|
+ session: Session,
|
|
|
+ user_text: String,
|
|
|
+ user_id: Uuid,
|
|
|
+ db: web::Data<PgPool>
|
|
|
+) {
|
|
|
+ tokio::spawn(async move {
|
|
|
+ if let Ok((m, it, ot)) = message.await {
|
|
|
+ let new_turn = Turn::new(session.id, it, ot, user_text, m);
|
|
|
+ session.insert(&db).await;
|
|
|
+ new_turn.insert(&db).await;
|
|
|
+ User::add_tokens(&db, user_id, -new_turn.tokens_used).await;
|
|
|
+ Ok::<(), HttpError>(())
|
|
|
+ } else {
|
|
|
+ Ok::<(), HttpError>(())
|
|
|
+ };
|
|
|
+ });
|
|
|
}
|