Module: Featurevisor::Events

Defined in:
lib/featurevisor/events.rb

Overview

Events module for generating event parameters

Class Method Summary collapse

Class Method Details

.get_params_for_datafile_set_event(previous_reader, new_reader) ⇒ Hash

Get parameters for datafile set event

Parameters:

Returns:

  • (Hash)

    Event parameters



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/featurevisor/events.rb', line 27

def self.get_params_for_datafile_set_event(previous_reader, new_reader)
  previous_revision = previous_reader.get_revision
  previous_feature_keys = previous_reader.get_feature_keys

  new_revision = new_reader.get_revision
  new_feature_keys = new_reader.get_feature_keys

  # results
  removed_features = []
  changed_features = []
  added_features = []

  # checking against existing datafile
  previous_feature_keys.each do |previous_feature_key|
    if !new_feature_keys.include?(previous_feature_key)
      # feature was removed in new datafile
      removed_features << previous_feature_key
      next
    end

    # feature exists in both datafiles, check if it was changed
    previous_feature = previous_reader.get_feature(previous_feature_key)
    new_feature = new_reader.get_feature(previous_feature_key)

    if previous_feature && new_feature && previous_feature[:hash] != new_feature[:hash]
      # feature was changed in new datafile
      changed_features << previous_feature_key
    end
  end

  # checking against new datafile
  new_feature_keys.each do |new_feature_key|
    if !previous_feature_keys.include?(new_feature_key)
      # feature was added in new datafile
      added_features << new_feature_key
    end
  end

  # combine all affected feature keys
  all_affected_features = (removed_features + changed_features + added_features).uniq

  {
    revision: new_revision,
    previous_revision: previous_revision,
    revision_changed: previous_revision != new_revision,
    features: all_affected_features
  }
end

.get_params_for_sticky_set_event(previous_sticky = {}, new_sticky = {}, replace = false) ⇒ Hash

Get parameters for sticky set event

Parameters:

  • previous_sticky (Hash) (defaults to: {})

    Previous sticky features

  • new_sticky (Hash) (defaults to: {})

    New sticky features

  • replace (Boolean) (defaults to: false)

    Whether features were replaced

Returns:

  • (Hash)

    Event parameters



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/featurevisor/events.rb', line 11

def self.get_params_for_sticky_set_event(previous_sticky = {}, new_sticky = {}, replace = false)
  keys_before = previous_sticky.keys
  keys_after = new_sticky.keys

  all_keys = (keys_before + keys_after).uniq

  {
    features: all_keys,
    replaced: replace
  }
end