Class: Textus::Action::KeyDeletePrefix

Inherits:
Base
  • Object
show all
Defined in:
lib/textus/action/key_delete_prefix.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:, dry_run: false) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/textus/action/key_delete_prefix.rb', line 17

def self.call(container:, call:, prefix:, dry_run: false)
  return Failure(code: :usage_error, message: "prefix required") if prefix.nil? || prefix.empty?

  leaves = Textus::Action::List.leaf_keys(container: container, prefix: prefix)

  warnings = leaves.empty? ? ["no keys under #{prefix}"] : []
  steps = leaves.map { |key| { "op" => "delete", "key" => key } }

  plan = Textus::Store::Jobs::Plan.new(steps: steps, warnings: warnings)
  return Success(plan) if dry_run

  steps.each do |step|
    Value::Result.unwrap(Textus::Action::KeyDelete.call(container: container, call: call, key: step["key"]))
  end
  Success(plan)
end