module Card::Query::CardQuery::Run

run CQL queries

Public Instance Methods

alter_result(name) click to toggle source
# File lib/card/query/card_query/run.rb, line 97
def alter_result name
  name_parts = [statement[:prepend], name, statement[:append]].compact
  Card::Name[name_parts]
end
alter_results?() click to toggle source
# File lib/card/query/card_query/run.rb, line 106
def alter_results?
  statement[:prepend] || statement[:append]
end
card_result(record, _field) click to toggle source
# File lib/card/query/card_query/run.rb, line 67
def card_result record, _field
  if alter_results?
    Card.fetch name_result(record), new: {}
  else
    fetch_or_instantiate record
  end
end
count_result(results, _field) click to toggle source
# File lib/card/query/card_query/run.rb, line 41
def count_result results, _field
  results.first["count"].to_i
end
default_result(record, field) click to toggle source
# File lib/card/query/card_query/run.rb, line 45
def default_result record, field
  record[field]
end
fetch_or_instantiate(record) click to toggle source
# File lib/card/query/card_query/run.rb, line 75
def fetch_or_instantiate record
  card = Card.retrieve_from_cache_by_id record["id"]
  unless card
    card = Card.instantiate record
    Card.write_to_cache card
  end
  card.include_set_modules
  card
end
id_result(record, field) click to toggle source
# File lib/card/query/card_query/run.rb, line 49
def id_result record, field
  record[field].to_i
end
key_result(record, pattern="") click to toggle source
# File lib/card/query/card_query/run.rb, line 57
def key_result record, pattern=""
  name_result(record, pattern).to_name.key
end
large_list(length) click to toggle source
# File lib/card/query/card_query/run.rb, line 27
def large_list length
  Rails.logger.info "#{length} records returned by #{@statement}"
end
name_result(record, pattern="") click to toggle source
# File lib/card/query/card_query/run.rb, line 61
def name_result record, pattern=""
  name = record["name"]&.to_name
  name ||= Card::Lexicon.lex_to_name [record["left_id"], record["right_id"]]
  process_name name, pattern
end
process_name(name, pattern="") click to toggle source
# File lib/card/query/card_query/run.rb, line 90
def process_name name, pattern=""
  name = pattern.to_name.absolute(name) if pattern =~ /_\w+/
  return name unless alter_results?

  alter_result name
end
raw_result(record, _field) click to toggle source
# File lib/card/query/card_query/run.rb, line 53
def raw_result record, _field
  record
end
result_method(retrn) click to toggle source
# File lib/card/query/card_query/run.rb, line 31
def result_method retrn
  case
  when respond_to?(:"#{retrn}_result") then :"#{retrn}_result"
  when (retrn =~ /id$/)                then :id_result
  when (retrn =~ /_\w+/)               then :name_result
  when (retrn == "key")                then :key_result
  else                                      :default_result
  end
end
return_list(sql_results, retrn) click to toggle source

@return [Array]

# File lib/card/query/card_query/run.rb, line 20
def return_list sql_results, retrn
  large_list sql_results.length if sql_results.length > 1000
  sql_results.map do |record|
    return_simple record, retrn
  end
end
return_simple(sql_result, retrn) click to toggle source

@return [(not an Array)]

# File lib/card/query/card_query/run.rb, line 15
def return_simple sql_result, retrn
  send result_method(retrn), sql_result, retrn
end
run() click to toggle source

run the current query @return [Array] of card objects by default

# File lib/card/query/card_query/run.rb, line 8
def run
  retrn = statement[:return].present? ? statement[:return].to_s : "card"
  return_method = :"return_#{simple_result?(retrn) ? :simple : :list}"
  send return_method, run_sql, retrn
end
run_sql() click to toggle source
# File lib/card/query/card_query/run.rb, line 85
def run_sql
  # puts "\nSQL = #{sql}"
  ActiveRecord::Base.connection.select_all sql
end
simple_result?(retrn) click to toggle source
# File lib/card/query/card_query/run.rb, line 102
def simple_result? retrn
  retrn == "count"
end