class IsItDoneYet::WebApp

Constants

ALREADY_EXISTS
NO_BUILD_STATE
TTL_SECONDS
UNKNOWN_BUILD
UNKNOWN_NODE

Public Instance Methods

clear_nodes(build_id) click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 61
def clear_nodes(build_id)
  state = settings.state
  keys_for_build = state.keys.select { |(b, _n)| b == build_id }
  keys_for_build.each { |key| state.delete(key) }
end
house_keeping() click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 29
def house_keeping
  expired_keys =
    settings.state.each_pair.with_object([]) do |(key, (_b, time)), acc|
      acc << key if time < Time.now - TTL_SECONDS
    end

  expired_keys.each { |key| settings.state.delete(key) }
end
key(build_id, node_id) click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 25
def key(build_id, node_id)
  [build_id, node_id].freeze
end
merge(key:, value_if_absent:, value_if_present:) click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 42
def merge(key:, value_if_absent:, value_if_present:)
  settings.state.merge_pair(key, [value_if_absent, Time.now]) do
    [value_if_present, Time.now]
  end
end
retrieve(key) click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 48
def retrieve(key)
  build_state, _t = settings.state[key]
  build_state
end
retrieve_all(build_id) click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 53
def retrieve_all(build_id)
  settings.state
          .each_pair
          .select { |((b, _n), _v)| build_id == b }
          .map { |((_b, node_id), (build_state, _t))| [node_id, build_state] }
          .to_h
end
store(key, value) click to toggle source
# File lib/is_it_done_yet/web_app.rb, line 38
def store(key, value)
  settings.state[key] = [value, Time.now]
end