Class: Togls::ToggleRepository
- Inherits:
-
Object
- Object
- Togls::ToggleRepository
- Defined in:
- lib/togls/toggle_repository.rb
Overview
Toggle Repository
Repository interface for storing and retrieving toggles.
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.
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/togls/toggle_repository.rb', line 6 def initialize(drivers, feature_repository, rule_repository) unless drivers.is_a?(Array) raise Togls::InvalidDriver, 'ToggleRepository requires a valid driver' end if drivers.empty? raise Togls::MissingDriver, '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
28 29 30 |
# File 'lib/togls/toggle_repository.rb', line 28 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
32 33 34 35 36 |
# File 'lib/togls/toggle_repository.rb', line 32 def get(id) toggle_data = fetch_toggle_data(id) return reconstitute_toggle(toggle_data) if toggle_data Togls::NullToggle.new 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 toggle end |
#store(toggle) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/togls/toggle_repository.rb', line 18 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 |