# frozen_string_literal: true

module PerformanceMonitoring
  class PrometheusPanelGroup
    include ActiveModel::Model

    attr_accessor :group, :priority, :panels

    validates :group, presence: true
    validates :panels, presence: true

    def self.from_json(json_content)
      panel_group = new(
        group: json_content['group'],
        priority: json_content['priority'],
        panels: json_content['panels'].map { |panel| PrometheusPanel.from_json(panel) }
      )

      panel_group.tap(&:validate!)
    end
  end
end
