Class: SourceMonitor::Dashboard::Queries

Inherits:
Object
  • Object
show all
Defined in:
lib/source_monitor/dashboard/queries.rb,
lib/source_monitor/dashboard/queries/stats_query.rb,
lib/source_monitor/dashboard/queries/recent_activity_query.rb

Defined Under Namespace

Classes: Cache, RecentActivityQuery, StatsQuery

Instance Method Summary collapse

Constructor Details

#initialize(reference_time: Time.current) ⇒ Queries

Returns a new instance of Queries.



11
12
13
14
# File 'lib/source_monitor/dashboard/queries.rb', line 11

def initialize(reference_time: Time.current)
  @reference_time = reference_time
  @cache = Cache.new
end

Instance Method Details

#job_metrics(queue_names: queue_name_map.values) ⇒ Object



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
# File 'lib/source_monitor/dashboard/queries.rb', line 36

def job_metrics(queue_names: queue_name_map.values)
  measure(:job_metrics, queue_names:) do
    summaries = SourceMonitor::Jobs::SolidQueueMetrics.call(queue_names:)

    queue_name_map.map do |role, queue_name|
      summary = summaries[queue_name.to_s] || SourceMonitor::Jobs::SolidQueueMetrics::QueueSummary.new(
        queue_name: queue_name.to_s,
        ready_count: 0,
        scheduled_count: 0,
        failed_count: 0,
        recurring_count: 0,
        paused: false,
        last_enqueued_at: nil,
        last_started_at: nil,
        last_finished_at: nil,
        available: false
      )

      {
        role: role,
        queue_name: queue_name,
        summary: summary
      }
    end
  end
end

#quick_actionsObject



32
33
34
# File 'lib/source_monitor/dashboard/queries.rb', line 32

def quick_actions
  QUICK_ACTIONS
end

#recent_activity(limit: DEFAULT_RECENT_ACTIVITY_LIMIT) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/source_monitor/dashboard/queries.rb', line 24

def recent_activity(limit: DEFAULT_RECENT_ACTIVITY_LIMIT)
  cache.fetch([ :recent_activity, limit ]) do
    measure(:recent_activity, limit:) do
      RecentActivityQuery.new(limit:).call
    end
  end
end

#statsObject



16
17
18
19
20
21
22
# File 'lib/source_monitor/dashboard/queries.rb', line 16

def stats
  cache.fetch(:stats) do
    measure(:stats) do
      StatsQuery.new(reference_time:).call
    end
  end
end

#upcoming_fetch_schedule(pages: {}) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/source_monitor/dashboard/queries.rb', line 63

def upcoming_fetch_schedule(pages: {})
  cache.fetch([ :upcoming_fetch_schedule, pages ]) do
    measure(:upcoming_fetch_schedule) do
      SourceMonitor::Dashboard::UpcomingFetchSchedule.new(scope: SourceMonitor::Source.active, pages: pages)
    end
  end
end