Module: Textus::Application::Refresh::All

Defined in:
lib/textus/application/refresh/all.rb

Class Method Summary collapse

Class Method Details

.call(ctx, prefix: nil, zone: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/textus/application/refresh/all.rb', line 7

def call(ctx, prefix: nil, zone: nil)
  worker = Textus::Composition.refresh_worker(ctx)

  stale_rows = ctx.store.stale(prefix: prefix, zone: zone)
  refreshed = []
  failed = []
  skipped = []

  stale_rows.each do |row|
    key = row["key"] || row[:key]
    reason = row["reason"] || row[:reason]
    if reason.to_s.match?(/ttl exceeded|never refreshed/)
      begin
        worker.run(key)
        refreshed << key
      rescue Textus::Error => e
        failed << { "key" => key, "error" => e.message }
      end
    else
      skipped << { "key" => key, "reason" => reason }
    end
  end

  {
    "protocol" => Textus::PROTOCOL,
    "ok" => failed.empty?,
    "refreshed" => refreshed,
    "failed" => failed,
    "skipped" => skipped,
  }
end