Class: RailsPulse::Query
Constant Summary
Constants included
from Taggable
Taggable::MAX_TAG_LENGTH, Taggable::TAG_NAME_REGEX
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Taggable
#add_tag, #has_tag?, #remove_tag, #tag_list, #tag_list=
Class Method Details
.ransackable_associations(auth_object = nil) ⇒ Object
29
30
31
|
# File 'app/models/rails_pulse/query.rb', line 29
def self.ransackable_associations(auth_object = nil)
%w[operations]
end
|
.ransackable_attributes(auth_object = nil) ⇒ Object
25
26
27
|
# File 'app/models/rails_pulse/query.rb', line 25
def self.ransackable_attributes(auth_object = nil)
%w[id normalized_sql average_query_time_ms execution_count total_time_consumed performance_status occurred_at]
end
|
Instance Method Details
#analysis_status ⇒ Object
87
88
89
90
91
|
# File 'app/models/rails_pulse/query.rb', line 87
def analysis_status
return "not_analyzed" unless analyzed?
return "needs_update" if needs_reanalysis?
"current"
end
|
#analyzed? ⇒ Boolean
69
70
71
|
# File 'app/models/rails_pulse/query.rb', line 69
def analyzed?
analyzed_at.present?
end
|
#critical_issues_count ⇒ Object
99
100
101
|
# File 'app/models/rails_pulse/query.rb', line 99
def critical_issues_count
issues_by_severity["critical"]&.count || 0
end
|
#generate_hashed_sql ⇒ Object
111
112
113
114
|
# File 'app/models/rails_pulse/query.rb', line 111
def generate_hashed_sql
require "digest"
self.hashed_sql = Digest::MD5.hexdigest(normalized_sql)
end
|
#has_recent_operations? ⇒ Boolean
73
74
75
|
# File 'app/models/rails_pulse/query.rb', line 73
def has_recent_operations?
operations.where("occurred_at > ?", 48.hours.ago).exists?
end
|
#issues_by_severity ⇒ Object
93
94
95
96
97
|
# File 'app/models/rails_pulse/query.rb', line 93
def issues_by_severity
return {} unless analyzed? && issues.present?
issues.group_by { |issue| issue["severity"] || "unknown" }
end
|
#needs_reanalysis? ⇒ Boolean
77
78
79
80
81
82
83
84
85
|
# File 'app/models/rails_pulse/query.rb', line 77
def needs_reanalysis?
return true unless analyzed?
last_operation_time = operations.maximum(:occurred_at)
return false unless last_operation_time
last_operation_time > analyzed_at
end
|
#to_s ⇒ Object
107
108
109
|
# File 'app/models/rails_pulse/query.rb', line 107
def to_s
id
end
|
#warning_issues_count ⇒ Object
103
104
105
|
# File 'app/models/rails_pulse/query.rb', line 103
def warning_issues_count
issues_by_severity["warning"]&.count || 0
end
|