Skip to content

Commit

Permalink
Lock down public API a little
Browse files Browse the repository at this point in the history
  • Loading branch information
zachahn committed Aug 10, 2024
1 parent a51b0e1 commit d91f64c
Showing 1 changed file with 7 additions and 35 deletions.
42 changes: 7 additions & 35 deletions app/models/disqualified/record.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,19 @@ class Disqualified::Record < Disqualified::BaseRecord
scope :runnable, -> { where(finished_at: nil, run_at: (..Time.now), locked_by: nil) }

sig do
params(
block: T.nilable(T.proc.params(arg0: ActiveRecord::Relation).returns(ActiveRecord::Relation))
).returns(Disqualified::Record)
params(id: T.nilable(T.any(Integer, String))).returns(Disqualified::Record)
end
def self.claim_one!(&block)
def self.claim_one!(id: nil)
run_id = SecureRandom.uuid
base_association =
association =
Disqualified::Record
.runnable
.order(run_at: :asc)
.limit(1)

association =
if block
yield base_association
else
base_association
end
if id
association = association.where(id:)
end

claimed_count = association.update_all(
locked_by: run_id,
Expand All @@ -39,32 +34,9 @@ def self.claim_one!(&block)
Disqualified::Record.find_by!(locked_by: run_id)
end

sig do
params(
identifier: T.any(Integer, String, Disqualified::Record)
).returns(Disqualified::Record)
end
def self.claim!(identifier)
id =
case identifier
when Integer
identifier
when String
Integer(identifier)
when Disqualified::Record
identifier.id
else
T.absurd(identifier)
end

claim_one! do |association|
association.where(id:)
end
end

sig { returns(Disqualified::Record) }
def run!
record = self.class.claim!(self)
record = self.class.claim_one!(id:)
record.send(:instantiate_handler_and_perform_with_args)
record.finish
record
Expand Down

0 comments on commit d91f64c

Please sign in to comment.