lib/toy/querying.rb in toystore-0.13.1 vs lib/toy/querying.rb in toystore-0.13.2

- old
+ new

@@ -2,45 +2,73 @@ module Querying extend ActiveSupport::Concern module ClassMethods def read(id, options = nil) - if (attrs = adapter.read(id, options)) - load(id, attrs) - end + default_payload = { + :id => id, + :options => options, + :model => self, + :hit => false, # default to not found + } + + Toy.instrumenter.instrument('read.toystore', default_payload) { |payload| + if (attrs = adapter.read(id, options)) + payload[:hit] = true + load(id, attrs) + end + } end alias_method :get, :read alias_method :find, :read def read!(id, options = nil) - get(id, options) || raise(Toy::NotFound.new(id)) + read(id, options) || raise(Toy::NotFound.new(id)) end alias_method :get!, :read! alias_method :find!, :read! def read_multiple(ids, options = nil) - result = adapter.read_multiple(ids, options) - result.each do |id, attrs| - result[id] = attrs.nil? ? nil : load(id, attrs) - end - result + default_payload = { + :ids => ids, + :options => options, + :model => self, + :hits => 0, + :misses => 0, + } + + Toy.instrumenter.instrument('read_multiple.toystore', default_payload) { |payload| + result = adapter.read_multiple(ids, options) + result.each do |id, attrs| + result[id] = if attrs.nil? + payload[:misses] += 1 + nil + else + payload[:hits] += 1 + load(id, attrs) + end + end + result + } end alias_method :get_multiple, :read_multiple alias_method :find_multiple, :read_multiple - def get_or_new(id) - get(id) || new(:id => id) - end - - def get_or_create(id) - get(id) || create(:id => id) - end - def key?(id, options = nil) - adapter.key?(id, options) + default_payload = { + :id => id, + :options => options, + :model => self, + } + + Toy.instrumenter.instrument('key.toystore', default_payload) { |payload| + result = adapter.key?(id, options) + payload[:hit] = result + result + } end alias :has_key? :key? def load(id, attrs) attrs ||= {}