Class: Textus::Action::Drain

Inherits:
Base
  • Object
show all
Defined in:
lib/textus/action/drain.rb

Class Method Summary collapse

Methods inherited from Base

inherited, proposal_from

Methods included from Contract::DSL

#arg, #cli, #cli_stdin, #contract, #contract?, #summary, #surfaces, #verb, #view

Class Method Details

.call(container:, call:, prefix: nil, lane: nil) ⇒ Object

rubocop:disable Lint/UnusedMethodArgument



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/textus/action/drain.rb', line 13

def self.call(container:, call:, prefix: nil, lane: nil) # rubocop:disable Lint/UnusedMethodArgument
  queue = Textus::Store::Jobs::Queue.new(store: container.job_store)
  Textus::Store::Jobs::Planner.seed(
    container: container,
    queue: queue,
    role: call.role,
  )
  queue.reclaim(now: Textus::Port::Clock.new.now)
  summary = Textus::Store::Jobs::Worker.for(container:, queue:).drain
  Success({
            "protocol" => Textus::PROTOCOL,
            "ok" => summary.failed.zero?,
            "completed" => summary.completed,
            "failed" => summary.failed,
          })
end