module Bigqueryid::Criteria::Queryable

Defines behaviour for query operations.

Public Instance Methods

fetch(query) click to toggle source
# File lib/bigqueryid/criteria/queryable.rb, line 32
def fetch(query)
  result = bigquery.query query
  if result.count > 0
    result.map { |element| new(element) }
  else
    []
  end
end
run(query) click to toggle source
# File lib/bigqueryid/criteria/queryable.rb, line 27
def run(query)
  result = bigquery.query query
  new(result.first) if result.count == 1
end
where(filter) click to toggle source
# File lib/bigqueryid/criteria/queryable.rb, line 9
def where(filter)
  return [] if filter.empty?

  where = []
  filter.each do |key, value|
    filter[key] = coercer.coerce(key, value)
    where << "#{key} = @#{key}"
  end

  query = "SELECT * FROM #{dataset_name}.#{table_name}" \
          " WHERE #{where.join(' AND ')}"

  result = bigquery.query(query, params: filter)
  result.map do |row|
    new(row.select { |f| attributes.include?(f) })
  end
end