openSUSE/open-build-service

View on GitHub
src/api/app/services/monitor_controller_service/status_history_fetcher.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module MonitorControllerService
  class StatusHistoryFetcher
    def initialize(key, range)
      @key = key
      @range = user_range(range)
    end

    def call
      Rails.cache.fetch(custom_cache_key, expires_in: (@range.to_i * 3600) / 150) do
        status_history
      end
    end

    private

    def user_range(range)
      [upper_range_limit, range].min
    end

    def upper_range_limit
      24 * 365
    end

    def custom_cache_key
      "#{@key}-#{@range}"
    end

    def status_history
      StatusHistory.history_by_key_and_hours(@key, @range).sort_by { |a| a[0] }
    end
  end
end