Module: Card::Query::Run

Included in:
Card::Query
Defined in:
lib/card/query/run.rb

Instance Method Summary collapse

Instance Method Details

#alter_results?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/card/query/run.rb', line 69

def alter_results?
  statement[:prepend] || statement[:append]
end

#card_result(record, _field) ⇒ Object



73
74
75
76
77
78
79
# File 'lib/card/query/run.rb', line 73

def card_result record, _field
  if alter_results?
    Card.fetch process_name(record["name"])
  else
    fetch_or_instantiate record
  end
end

#count_result(results, _field) ⇒ Object



38
39
40
# File 'lib/card/query/run.rb', line 38

def count_result results, _field
  results.first["count"].to_i
end

#default_result(record, field) ⇒ Object



42
43
44
# File 'lib/card/query/run.rb', line 42

def default_result record, field
  record[field]
end

#fetch_or_instantiate(record) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'lib/card/query/run.rb', line 81

def fetch_or_instantiate record
  card = Card.retrieve_from_cache record["key"]
  unless card
    card = Card.instantiate record
    Card.write_to_cache card, {}
  end
  card.include_set_modules
  card
end

#id_result(record, field) ⇒ Object



46
47
48
# File 'lib/card/query/run.rb', line 46

def id_result record, field
  record[field].to_i
end

#name_result(record, pattern) ⇒ Object



58
59
60
# File 'lib/card/query/run.rb', line 58

def name_result record, pattern
  process_name record["name"], pattern
end

#process_name(name, pattern) ⇒ Object



62
63
64
65
66
67
# File 'lib/card/query/run.rb', line 62

def process_name name, pattern
  name = pattern.to_name.absolute(name) if pattern =~ /_\w+/
  return name unless alter_results?
  name_parts = [statement[:prepend], name, statement[:append]].compact
  Card::Name[name_parts]
end

#raw_result(record, _field) ⇒ Object



50
51
52
# File 'lib/card/query/run.rb', line 50

def raw_result record, _field
  record
end

#result_method(retrn) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/card/query/run.rb', line 29

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
  else                                      :default_result
  end
end

#return_list(sql_results, retrn) ⇒ Array

Returns:

  • (Array)


23
24
25
26
27
# File 'lib/card/query/run.rb', line 23

def return_list sql_results, retrn
  sql_results.map do |record|
    return_simple record, retrn
  end
end

#return_simple(sql_result, retrn) ⇒ (not an Array)

Returns:

  • ((not an Array))


18
19
20
# File 'lib/card/query/run.rb', line 18

def return_simple sql_result, retrn
  send result_method(retrn), sql_result, retrn
end

#runObject

run the current query

Returns:

  • array of card objects by default



11
12
13
14
15
# File 'lib/card/query/run.rb', line 11

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_sqlObject



91
92
93
94
95
# File 'lib/card/query/run.rb', line 91

def run_sql
  # puts "\nstatement = #{@statement}"
  # puts "sql = #{sql}"
  ActiveRecord::Base.connection.select_all(sql)
end

#simple_result?(retrn) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/card/query/run.rb', line 54

def simple_result? retrn
  retrn == "count"
end