Skip to content

Commit

Permalink
問題が既に再展開されている場合、エラーを返すようにした
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryoga Saito committed Dec 2, 2023
1 parent ac56ccc commit 2f51b16
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/bot/commands/redeploy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,17 @@ enum RedeployCommandError<'a> {
#[error("問題コード `{0}` に対応する問題はありません。問題コードを再度お確かめください。")]
InvalidProblemCodeError(&'a str),

#[error("問題 `{0}` 再展開は実行中です。再展開が完了してから再度お試しください。")]
AnotherJobInQueue(String),

// /redeployコマンドの使用者のチームが解決できない時に発生するエラー
#[error("予期しないエラーが発生しました。運営にお問い合わせください。")]
UnexpectedSenderTeamsError,

// redeploy serviceからエラーが帰ってきた時に発生するエラー
#[error("予期しないエラーが発生しました。運営にお問い合わせください。")]
RedeployServiceError(#[from] RedeployError),

#[error("予期しないエラーが発生しました。運営にお問い合わせください。")]
InconsistentCommandDefinitionError,

Expand Down Expand Up @@ -202,6 +209,20 @@ impl Bot {
let sender = &interaction.user;
let sender_team = self.get_team_for(sender).await?;

let redeploy_status = self.redeploy_service.get_status(&sender_team.id).await?;
let redeploy_job_exists = redeploy_status.iter().any(|status| {
// リクエストされた問題が既に再展開中か?
status.problem_code == problem.code
&& status.last_redeploy_started_at.is_some()
&& status.last_redeploy_completed_at.is_none()
});

if redeploy_job_exists {
return Err(RedeployCommandError::AnotherJobInQueue(
problem.name.clone(),
));
}

self.edit_response(interaction, |data| {
// TODO: チーム名にする
data.content(format!(
Expand Down

0 comments on commit 2f51b16

Please sign in to comment.