Class: Togls::ToggleRepository
- Inherits:
-
Object
- Object
- Togls::ToggleRepository
- Defined in:
- lib/togls/toggle_repository.rb
Instance Method Summary collapse
- #all ⇒ Object
- #extract_storage_payload(toggle) ⇒ Object
- #fetch_all_toggle_data ⇒ Object
- #fetch_toggle_data(id) ⇒ Object
- #get(id) ⇒ Object
-
#initialize(drivers, feature_repository, rule_repository) ⇒ ToggleRepository
constructor
A new instance of ToggleRepository.
- #reconstitute_toggle(toggle_data) ⇒ Object
- #store(toggle) ⇒ Object
Constructor Details
#initialize(drivers, feature_repository, rule_repository) ⇒ ToggleRepository
Returns a new instance of ToggleRepository.
3 4 5 6 7 8 9 10 11 12 13 |
# File 'lib/togls/toggle_repository.rb', line 3 def initialize(drivers, feature_repository, rule_repository) if !drivers.is_a?(Array) raise Togls::InvalidDriver.new("ToggleRepository requires a valid driver") end if drivers.empty? raise Togls::MissingDriver.new("ToggleRepository requires a driver") end @drivers = drivers @feature_repository = feature_repository @rule_repository = rule_repository end |
Instance Method Details
#all ⇒ Object
63 64 65 66 67 68 69 |
# File 'lib/togls/toggle_repository.rb', line 63 def all toggle_data_collection = fetch_all_toggle_data.values toggle_data_collection.map do |toggle_data| reconstitute_toggle(toggle_data) end end |
#extract_storage_payload(toggle) ⇒ Object
25 26 27 |
# File 'lib/togls/toggle_repository.rb', line 25 def extract_storage_payload(toggle) { "feature_id" => toggle.feature.id, "rule_id" => toggle.rule.id } end |
#fetch_all_toggle_data ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/togls/toggle_repository.rb', line 55 def fetch_all_toggle_data toggle_data_collection = {} @drivers.each do |driver| toggle_data_collection.merge!(driver.all) end toggle_data_collection end |
#fetch_toggle_data(id) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/togls/toggle_repository.rb', line 46 def fetch_toggle_data(id) toggle_data = nil @drivers.reverse.each do |driver| toggle_data = driver.get(id) break if toggle_data end toggle_data end |
#get(id) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/togls/toggle_repository.rb', line 29 def get(id) toggle_data = fetch_toggle_data(id) if toggle_data return reconstitute_toggle(toggle_data) else return Togls::NullToggle.new end end |
#reconstitute_toggle(toggle_data) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/togls/toggle_repository.rb', line 38 def reconstitute_toggle(toggle_data) feature = @feature_repository.get(toggle_data["feature_id"]) rule = @rule_repository.get(toggle_data["rule_id"]) toggle = Togls::Toggle.new(feature) toggle.rule = rule return toggle end |
#store(toggle) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/togls/toggle_repository.rb', line 15 def store(toggle) @feature_repository.store(toggle.feature) @rule_repository.store(toggle.rule) payload = extract_storage_payload(toggle) @drivers.each do |driver| driver.store(toggle.id, payload) end end |