1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-04-04 13:43:48 +00:00

Reload last_match and wrestler in advanced_wrestler. Moved calculate team score to the end of advance_wrestler.

This commit is contained in:
2025-09-15 18:22:42 -04:00
parent dd5ce9bd60
commit d61ed80287
4 changed files with 21 additions and 16 deletions

View File

@@ -2,11 +2,6 @@ class AdvanceWrestlerJob < ApplicationJob
queue_as :default
def perform(wrestler, match)
# Add a small delay to increase chance of transaction commit
# without this some matches were getting a deserialization error when running the rake task
# to finish tournaments
sleep(0.5) unless Rails.env.test?
# Get tournament from wrestler
tournament = wrestler.tournament

View File

@@ -10,12 +10,17 @@ class Match < ApplicationRecord
# Callback to update finished_at when a match is finished
before_save :update_finished_at
after_update :after_finished_actions, if: -> {
saved_change_to_finished? ||
saved_change_to_winner_id? ||
saved_change_to_win_type? ||
saved_change_to_score? ||
saved_change_to_overtime_type?
# Enqueue advancement and related actions after the DB transaction has committed.
# Using after_commit ensures any background jobs enqueued inside these callbacks
# will see the committed state of the match (e.g. finished == 1). Enqueuing
# jobs from after_update can cause jobs to run before the transaction commits,
# which leads to jobs observing stale data and not performing advancement.
after_commit :after_finished_actions, on: :update, if: -> {
saved_change_to_finished? ||
saved_change_to_winner_id? ||
saved_change_to_win_type? ||
saved_change_to_score? ||
saved_change_to_overtime_type?
}
def after_finished_actions
@@ -30,7 +35,8 @@ class Match < ApplicationRecord
self.mat.assign_next_match
end
advance_wrestlers
calculate_school_points
# School point calculation has move to the end of advance wrestler
# calculate_school_points
end
end

View File

@@ -12,12 +12,14 @@ class AdvanceWrestler
end
def advance_raw
@last_match.reload
@wrestler.reload
if @last_match && @last_match.finished?
pool_to_bracket_advancement if @tournament.tournament_type == "Pool to bracket"
ModifiedDoubleEliminationAdvance.new(@wrestler, @last_match).bracket_advancement if @tournament.tournament_type.include? "Modified 16 Man Double Elimination"
DoubleEliminationAdvance.new(@wrestler, @last_match).bracket_advancement if @tournament.tournament_type.include? "Regular Double Elimination"
end
@wrestler.school.calculate_score
end
def pool_to_bracket_advancement