Skip to content

Commit 3ffa082

Browse files
committed
Add method to resend points for recent submissions with duration validation
1 parent 1e604e9 commit 3ffa082

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

app/models/kafka_batch_update_points.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,25 @@ def self.send_points_again_for_user_and_all_courses(user_id)
1919
end
2020
end
2121
end
22+
23+
# Requires an ActiveSupport::Duration, e.g. 1.week, 3.days, etc.
24+
def self.resend_points_for_recent_submissions(duration)
25+
unless duration.is_a?(ActiveSupport::Duration)
26+
raise ArgumentError,
27+
'Invalid argument: expected an ActiveSupport::Duration (e.g. 1.week, 3.days). ' \
28+
'Call it like: KafkaBatchUpdatePoints.resend_points_for_recent_submissions(1.week)'
29+
end
30+
31+
pairs = Submission
32+
.where(created_at: (Time.current - duration)..Time.current)
33+
.select(:course_id, :user_id)
34+
.distinct
35+
.pluck(:course_id, :user_id)
36+
37+
transaction do
38+
pairs.each do |course_id, user_id|
39+
send_points_again_for_user_and_course(course_id, user_id)
40+
end
41+
end
42+
end
2243
end

0 commit comments

Comments
 (0)