class AdwordsApi::ServiceQueryBuilder

Public Class Methods

new(api) { |self| ... } click to toggle source
Calls superclass method AdwordsApi::QueryBuilder::new
# File lib/adwords_api/query_utils/service_query_builder.rb, line 26
def initialize(api)
  super(api)
  @select = nil
  @order = []
  @start_index = nil
  @page_size = nil
  yield self if block_given?
end

Public Instance Methods

build() click to toggle source
# File lib/adwords_api/query_utils/service_query_builder.rb, line 62
def build()
  raise ArgumentError,
      'Must specify SELECT clause for valid AWQL' if @select.nil?
  if !@start_index.nil? && @page_size.nil?
    raise ArgumentError, 'Cannot specify start index without page size.'
  end
  if !@page_size.nil? && @start_index.nil?
    raise ArgumentError, 'Cannot specify page size without start index.'
  end
  result = sprintf('SELECT %s', @select.to_a.join(', '))
  result += build_where()
  unless @order.empty?
    orders = @order.map do |o|
      sprintf('%s %s', o[:field], o[:direction])
    end
    result += sprintf(' ORDER BY %s', orders.join(', '))
  end
  @api.utils_reporter.service_query_builder_used()
  return ServiceQuery.new(result, @start_index, @page_size)
end
configure() { |self| ... } click to toggle source
# File lib/adwords_api/query_utils/service_query_builder.rb, line 35
def configure()
  yield self
end
limit(start_index, page_size) click to toggle source
# File lib/adwords_api/query_utils/service_query_builder.rb, line 57
def limit(start_index, page_size)
  @start_index = start_index
  @page_size = page_size
end
order_by_asc(field) click to toggle source
# File lib/adwords_api/query_utils/service_query_builder.rb, line 43
def order_by_asc(field)
  @order << {
    :field => field,
    :direction => 'ASC'
  }
end
order_by_desc(field) click to toggle source
# File lib/adwords_api/query_utils/service_query_builder.rb, line 50
def order_by_desc(field)
  @order << {
    :field => field,
    :direction => 'DESC'
  }
end
select(*fields) click to toggle source
# File lib/adwords_api/query_utils/service_query_builder.rb, line 39
def select(*fields)
  @select = Set[*fields]
end