blob: d83a0c487e6bec1e826174319e553ae4530f21db (
plain)
1
2
3
4
5
6
7
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# frozen_string_literal: true
module ErrorTracking
class ErrorsFinder
def initialize(current_user, project, params)
@current_user = current_user
@project = project
@params = params
end
def execute
return ErrorTracking::Error.none unless authorized?
collection = project.error_tracking_errors
collection = by_status(collection)
collection = sort(collection)
# Limit collection until pagination implemented.
limit(collection)
end
private
attr_reader :current_user, :project, :params
def by_status(collection)
if params[:status].present? && ErrorTracking::Error.statuses.key?(params[:status])
collection.for_status(params[:status])
else
collection
end
end
def authorized?
Ability.allowed?(current_user, :read_sentry_issue, project)
end
def sort(collection)
params[:sort] ? collection.sort_by_attribute(params[:sort]) : collection.order_id_desc
end
def limit(collection)
# Restrict the maximum limit at 100 records.
collection.limit([(params[:limit] || 20).to_i, 100].min)
end
end
end
|