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