discourse/app/services/problem_check/problem.rb

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