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 ||= {}