app/models/apidae/selection.rb in apidae-0.2.9 vs app/models/apidae/selection.rb in apidae-0.3.0

- old
+ new

@@ -38,17 +38,29 @@ def total(where_clause) objects.where(where_clause).count end def api_results(opts = {}) - query_args = build_args(SELECTION_ENDPOINT, opts.merge({selection_ids: [apidae_id]})) - query_api(query_args, true) + key = cache_key(:results) + res = $apidae_cache.read(key) + unless res + query_args = build_args(SELECTION_ENDPOINT, opts.merge({selection_ids: [apidae_id]})) + res = query_api(query_args, true) + $apidae_cache.write(key, res) + end + res end def api_agenda(from, to) - query_args = build_args(AGENDA_ENDPOINT, {selection_ids: [apidae_id], from: from, to: to}) - query_api(query_args, true) + key = cache_key(:agenda, from, to) + res = $apidae_cache.read(key) + unless res + query_args = build_args(AGENDA_ENDPOINT, {selection_ids: [apidae_id], from: from, to: to}) + res = query_api(query_args, true) + $apidae_cache.write(key, res) + end + res end private def query_api(query_args, all_results = false) @@ -128,8 +140,12 @@ } end def generate_reference self.reference ||= (self.label.parameterize || self.apidae_id) + end + + def cache_key(*args) + "#{apidae_id}_#{args.map {|a| a.to_s.parameterize}.join('_')}" end end end