# frozen_string_literal: true

module Dhis2
  module Api
    class Base < OpenStruct
      class << self
        def resource_key
          Dhis2::Case.underscore(resource_name)
        end

        def resource_name
          simple_name = name.split("::").last
          simple_name[0].downcase + simple_name[1..-1] + "s"
        end
      end

      def initialize(client, raw_data)
        super(raw_data)

        self.client = client
      end

      def to_h
        super.tap {|h| h.delete(:client) }
      end

      def ==(other)
        self.class == other.class && id == other.id
      end
    end
  end
end
