create.rs 678 B

12345678910111213141516171819202122232425
  1. use actix_web::{HttpResponse, HttpRequest, web, post};
  2. use sqlx::PgPool;
  3. use uuid::Uuid;
  4. use crate::{
  5. http_error::HttpError,
  6. auth::user_auth,
  7. models::{
  8. session::Session,
  9. game::Game
  10. }
  11. };
  12. #[post("/game/{game_id}/session")]
  13. pub async fn route(
  14. db: web::Data<PgPool>,
  15. path: web::Path<String>,
  16. req: HttpRequest
  17. ) -> Result<HttpResponse, HttpError> {
  18. let user = user_auth(&db, &req, true).await?;
  19. let game_id = Uuid::parse_str(&path.into_inner())?;
  20. let game = Game::get_one(&db, game_id, Some(user.id)).await?;
  21. let session = Session::new(game.id);
  22. session.insert(&db).await?;
  23. Ok(HttpResponse::Ok().json(session))
  24. }