Class: Ace::Assign::Models::AssignmentInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/assign/models/assignment_info.rb

Overview

Enriched assignment model combining Assignment + QueueState.

Pure data carrier with computed state (ATOM pattern). Wraps an assignment with its queue state to provide computed state, progress, and current step information.

Examples:

info = AssignmentInfo.new(assignment: assignment, queue_state: state)
info.state          # => :running
info.progress       # => "2/5"
info.current_step  # => "020-implement"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(assignment:, queue_state:) ⇒ AssignmentInfo

Returns a new instance of AssignmentInfo.

Parameters:

  • assignment (Assignment)

    Assignment metadata

  • queue_state (QueueState)

    Queue state for this assignment



22
23
24
25
# File 'lib/ace/assign/models/assignment_info.rb', line 22

def initialize(assignment:, queue_state:)
  @assignment = assignment
  @queue_state = queue_state
end

Instance Attribute Details

#assignmentObject (readonly)

Returns the value of attribute assignment.



18
19
20
# File 'lib/ace/assign/models/assignment_info.rb', line 18

def assignment
  @assignment
end

#queue_stateObject (readonly)

Returns the value of attribute queue_state.



18
19
20
# File 'lib/ace/assign/models/assignment_info.rb', line 18

def queue_state
  @queue_state
end

Instance Method Details

#completed?Boolean

Check if assignment is completed

Returns:

  • (Boolean)


52
53
54
# File 'lib/ace/assign/models/assignment_info.rb', line 52

def completed?
  state == :completed
end

#created_atObject



61
# File 'lib/ace/assign/models/assignment_info.rb', line 61

def created_at = assignment.created_at

#current_stepString

Current step display string

Returns:

  • (String)

    Current step name or “-”



45
46
47
# File 'lib/ace/assign/models/assignment_info.rb', line 45

def current_step
  queue_state.current&.name || "-"
end

#idObject

Delegate common accessors to assignment



57
# File 'lib/ace/assign/models/assignment_info.rb', line 57

def id = assignment.id

#nameObject



58
# File 'lib/ace/assign/models/assignment_info.rb', line 58

def name = assignment.name

#parentObject



62
# File 'lib/ace/assign/models/assignment_info.rb', line 62

def parent = assignment.parent

#progressString

Progress string (done/total)

Returns:

  • (String)

    Progress display (e.g., “2/5”)



37
38
39
40
# File 'lib/ace/assign/models/assignment_info.rb', line 37

def progress
  s = queue_state.summary
  "#{s[:done]}/#{s[:total]}"
end

#stateSymbol

Computed assignment state

Returns:

  • (Symbol)

    :empty, :failed, :completed, :running, or :paused



30
31
32
# File 'lib/ace/assign/models/assignment_info.rb', line 30

def state
  queue_state.assignment_state
end

#task_refObject



59
# File 'lib/ace/assign/models/assignment_info.rb', line 59

def task_ref = assignment.name

#updated_atObject



60
# File 'lib/ace/assign/models/assignment_info.rb', line 60

def updated_at = assignment.updated_at