Sha256: 631acef45fe53fd42819bb7995ae33145428172d604c03a085d2b7b04c0922c9

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

module WorldBank

  class DataQuery < Query

    def initialize(name, id, model)
      super
      @param_dir = []
      @params_filled = false
    end

    def lending_type(lending_type)
      ensure_unconflicting_qualifiers
      parsed = indifferent_number lending_type
      @param_dir = ['lendingTypes', parsed]
      self
    end

    def income_level(income_level)
      ensure_unconflicting_qualifiers
      parsed = indifferent_number income_level
      @param_dir = ['incomeLevels', parsed]
      self
    end

    def region(regions)
      ensure_unconflicting_qualifiers
      parsed = indifferent_number regions
      @param_dir = ['countries', parsed]
      self
    end

    def country(country)
      ensure_unconflicting_qualifiers
      parsed = indifferent_type country
      parsed = ensure_country_id parsed
      @param_dir = ['countries', parsed]
      self
    end

    def indicator(indicators)
      parsed = indifferent_number indicators
      @id = parsed
      self
    end
    alias_method(:find, :indicator)

    def source(sources)
      ensure_unconflicting_qualifiers
      parsed = indifferent_number sources
      @param_dir = ['sources', parsed]
      self
    end

    private

    def ensure_unconflicting_qualifiers
      if @params_filled
        raise ArgumentError,
          "Only one of 'income_level', 'lending_type', 'country', or 'source' can be called on the same query"
      end
      @params_filled = true
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
world_bank-0.9.0 lib/world_bank/data_query.rb