Module: Card::Query::Run
- Included in:
- Card::Query
- Defined in:
- lib/card/query/run.rb
Instance Method Summary collapse
- #alter_result(name) ⇒ Object
- #alter_results? ⇒ Boolean
- #card_result(record, _field) ⇒ Object
- #count_result(results, _field) ⇒ Object
- #default_result(record, field) ⇒ Object
- #fetch_or_instantiate(record) ⇒ Object
- #id_result(record, field) ⇒ Object
- #name_result(record, pattern) ⇒ Object
- #process_name(name, pattern) ⇒ Object
- #raw_result(record, _field) ⇒ Object
- #result_method(retrn) ⇒ Object
- #return_list(sql_results, retrn) ⇒ Array
- #return_simple(sql_result, retrn) ⇒ (not an Array)
-
#run ⇒ Object
run the current query.
- #run_sql ⇒ Object
- #simple_result?(retrn) ⇒ Boolean
Instance Method Details
#alter_result(name) ⇒ Object
88 89 90 91 |
# File 'lib/card/query/run.rb', line 88 def alter_result name name_parts = [statement[:prepend], name, statement[:append]].compact Card::Name[name_parts] end |
#alter_results? ⇒ Boolean
97 98 99 |
# File 'lib/card/query/run.rb', line 97 def alter_results? statement[:prepend] || statement[:append] end |
#card_result(record, _field) ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/card/query/run.rb', line 58 def card_result record, _field if alter_results? Card.fetch alter_result(record["name"]), new: {} 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
66 67 68 69 70 71 72 73 74 |
# File 'lib/card/query/run.rb', line 66 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
54 55 56 |
# File 'lib/card/query/run.rb', line 54 def name_result record, pattern process_name record["name"], pattern end |
#process_name(name, pattern) ⇒ Object
82 83 84 85 86 |
# File 'lib/card/query/run.rb', line 82 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) ⇒ 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
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)
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 |
#run ⇒ Object
run the current query
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_sql ⇒ Object
76 77 78 79 80 |
# File 'lib/card/query/run.rb', line 76 def run_sql # puts "\nstatement = #{@statement}" # puts "sql = #{sql}" ActiveRecord::Base.connection.select_all(sql) end |
#simple_result?(retrn) ⇒ Boolean
93 94 95 |
# File 'lib/card/query/run.rb', line 93 def simple_result? retrn retrn == "count" end |