Class: CodeSunset::FeatureQuery
- Inherits:
-
Object
- Object
- CodeSunset::FeatureQuery
- Defined in:
- lib/code_sunset/feature_query.rb
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(filters = {}, scope: CodeSunset::Feature.ordered) ⇒ FeatureQuery
constructor
A new instance of FeatureQuery.
Constructor Details
#initialize(filters = {}, scope: CodeSunset::Feature.ordered) ⇒ FeatureQuery
Returns a new instance of FeatureQuery.
3 4 5 6 |
# File 'lib/code_sunset/feature_query.rb', line 3 def initialize(filters = {}, scope: CodeSunset::Feature.ordered) @filters = filters.to_h.symbolize_keys @scope = scope end |
Instance Method Details
#call ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/code_sunset/feature_query.rb', line 8 def call features = scope.to_a return [] if features.empty? metrics = metrics_by_feature_key(features.map(&:key)) features.map do |feature| feature_metrics = metrics.fetch(feature.key, {}) last_seen_at = feature_metrics[:last_seen_at] snapshot = CodeSunset::FeatureSnapshot.new( feature: feature, last_seen_at: last_seen_at, hits_7d: feature_metrics[:hits_7d].to_i, hits_30d: feature_metrics[:hits_30d].to_i, unique_orgs_count: feature_metrics[:unique_orgs_count].to_i, unique_users_count: feature_metrics[:unique_users_count].to_i, paid_hits_30d: feature_metrics[:paid_hits_30d].to_i, status: feature.computed_status(last_seen_at: last_seen_at), score: 0.0 ) snapshot.score = CodeSunset::ScoreCalculator.new(feature: feature, snapshot: snapshot).score snapshot end end |