Class: SplitIoClient::Helpers::RepositoryHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/splitclient-rb/helpers/repository_helper.rb

Class Method Summary collapse

Class Method Details

.check_missing_elements(feature_flag, config) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/splitclient-rb/helpers/repository_helper.rb', line 25

def self.check_missing_elements(feature_flag, config)
  unless feature_flag.key?(:impressionsDisabled)
    feature_flag[:impressionsDisabled] = false
    if config.debug_enabled
      config.logger.debug("feature flag (#{feature_flag[:name]}) does not have impressionsDisabled field, setting it to false")
    end
  end

  unless feature_flag.key?(:prerequisites)
    feature_flag[:prerequisites] = []
    if config.debug_enabled
      config.logger.debug("feature flag (#{feature_flag[:name]}) does not have prerequisites field, setting it to empty array")
    end
  end

  feature_flag
end

.update_feature_flag_repository(feature_flag_repository, feature_flags, change_number, config, clear_storage) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/splitclient-rb/helpers/repository_helper.rb', line 6

def self.update_feature_flag_repository(feature_flag_repository, feature_flags, change_number, config, clear_storage)
  to_add = []
  to_delete = []
  feature_flags.each do |feature_flag|
    if Engine::Models::Split.archived?(feature_flag) || !feature_flag_repository.flag_set_filter.intersect?(feature_flag[:sets])
      config.logger.debug("removing feature flag from store(#{feature_flag})") if config.debug_enabled
      to_delete.push(feature_flag)
      next
    end

    feature_flag = check_missing_elements(feature_flag, config)

    config.logger.debug("storing feature flag (#{feature_flag[:name]})") if config.debug_enabled
    to_add.push(feature_flag)
  end
  feature_flag_repository.clear if clear_storage
  feature_flag_repository.update(to_add, to_delete, change_number)
end

.update_rule_based_segment_repository(rule_based_segment_repository, rule_based_segments, change_number, config) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/splitclient-rb/helpers/repository_helper.rb', line 43

def self.update_rule_based_segment_repository(rule_based_segment_repository, rule_based_segments, change_number, config)
  to_add = []
  to_delete = []
  rule_based_segments.each do |rule_based_segment|
    if Engine::Models::Split.archived?(rule_based_segment)
      config.logger.debug("removing rule based segment from store(#{rule_based_segment})") if config.debug_enabled
      to_delete.push(rule_based_segment)
      next
    end

    config.logger.debug("storing rule based segment (#{rule_based_segment[:name]})") if config.debug_enabled
    to_add.push(rule_based_segment)
  end

  rule_based_segment_repository.update(to_add, to_delete, change_number)
end