@@ 243,12 243,21 @@ func (r *mutationResolver) CancelMatch(ctx context.Context, id int) (string, err
query := `
UPDATE "Match"
SET status = 'cancelled'
- WHERE id = $1`
- _, err := database.DB.Exec(query, id)
+ WHERE id = $1 AND status = 'ongoing'`
+ result, err := database.DB.Exec(query, id)
+ if err != nil {
+ return "CancelFail", err
+ }
+
+ count, err := result.RowsAffected()
if err != nil {
return "CancelFail", err
}
+ if count != 1 {
+ return "CancelFail", errors.New("match is not ongoing")
+ }
+
return "CancelSuccess", nil
}
@@ 258,10 267,13 @@ func (r *mutationResolver) FinishMatch(ctx context.Context, id int, winner strin
query := `
SELECT t1, t2, elo1, elo2
FROM "Match"
- WHERE id = $1`
+ WHERE id = $1 and status = 'ongoing'`
err := database.DB.QueryRow(query, id).
Scan(&team1.ID, &team2.ID, &team1.Elo, &team2.Elo)
if err != nil {
+ if errors.Is(err, sql.ErrNoRows) {
+ return "FinishFail", errors.New("match is not ongoing")
+ }
return "FinishFail", err
}