mirror of
https://github.com/Steffo99/distributed-arcade.git
synced 2024-11-21 15:44:26 +00:00
parent
e7521147f2
commit
9f6381071e
1 changed files with 8 additions and 5 deletions
|
@ -64,7 +64,7 @@ async fn ensure_key_is_empty(rconn: &mut redis::aio::Connection, key: &str) -> R
|
|||
.map_err(outcome::redis_cmd_failed)?
|
||||
.eq("none")
|
||||
.then_some(())
|
||||
.ok_or((StatusCode::CONFLICT, outcome::req_error!("Board already exists")))
|
||||
.ok_or_else(|| (StatusCode::CONFLICT, outcome::req_error!("Board already exists")))
|
||||
}
|
||||
|
||||
/// Handler for `GET /board/`.
|
||||
|
@ -140,16 +140,19 @@ pub(crate) async fn route_board_post(
|
|||
|
||||
let mut rconn = rclient.get_connection_or_504().await?;
|
||||
|
||||
log::trace!("Watching board keys...");
|
||||
redis::cmd("WATCH").arg(&order_key).arg(&token_key).arg(&scores_key).query_async(&mut rconn).await
|
||||
.map_err(outcome::redis_cmd_failed)?;
|
||||
|
||||
log::trace!("Ensuring a board does not already exist...");
|
||||
ensure_key_is_empty(&mut rconn, &order_key).await?;
|
||||
ensure_key_is_empty(&mut rconn, &token_key).await?;
|
||||
ensure_key_is_empty(&mut rconn, &scores_key).await?;
|
||||
|
||||
log::trace!("Starting Redis transaction...");
|
||||
redis::cmd("MULTI").query_async(&mut rconn).await
|
||||
.map_err(outcome::redis_cmd_failed)?;
|
||||
|
||||
ensure_key_is_empty(&mut rconn, &order_key).await?;
|
||||
ensure_key_is_empty(&mut rconn, &token_key).await?;
|
||||
ensure_key_is_empty(&mut rconn, &scores_key).await?;
|
||||
|
||||
let token = SecureToken::new_or_500()?;
|
||||
|
||||
log::debug!("Creating board: {name:?}");
|
||||
|
|
Loading…
Reference in a new issue