33 lines
741 B
Ruby
33 lines
741 B
Ruby
# frozen_string_literal: true
|
|
|
|
class ProblemCheck::Problem
|
|
PRIORITIES = %w[low high].freeze
|
|
|
|
attr_reader :message, :priority, :identifier, :target, :details
|
|
|
|
def initialize(message, priority: "low", identifier: nil, target: nil, details: {})
|
|
@message = message
|
|
@priority = PRIORITIES.include?(priority) ? priority : "low"
|
|
@identifier = identifier
|
|
@target = target
|
|
@details = details
|
|
end
|
|
|
|
def to_s
|
|
@message
|
|
end
|
|
|
|
def to_h
|
|
{ message: message, priority: priority, identifier: identifier }
|
|
end
|
|
alias_method :attributes, :to_h
|
|
|
|
def self.from_h(h)
|
|
h = h.with_indifferent_access
|
|
|
|
return if h[:message].blank?
|
|
|
|
new(h[:message], priority: h[:priority], identifier: h[:identifier])
|
|
end
|
|
end
|