Replace couchbase counters with drb version
This commit is contained in:
+2
-70
@@ -1,6 +1,7 @@
|
||||
class Supplier
|
||||
include SimplyStored::Couch
|
||||
include ActiveModel::SerializerSupport
|
||||
include Supplier::Counters
|
||||
|
||||
view :by_confirmation_token, key: :confirmation_token # devise confirmable
|
||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :confirmable
|
||||
@@ -96,7 +97,7 @@ class Supplier
|
||||
self.open = true
|
||||
save
|
||||
end
|
||||
|
||||
|
||||
def mark_as_closed!
|
||||
self.open = false
|
||||
save
|
||||
@@ -128,38 +129,6 @@ class Supplier
|
||||
confirmable
|
||||
end
|
||||
|
||||
def self.reset_counters!
|
||||
# Set all known counters to zero
|
||||
Qwaiter::Couchbase.design_doc('supplier').counters(reduce: false).each{|counter| Qwaiter::Counter.set counter.key, 0}
|
||||
|
||||
spec = Order.by_supplier_id_and_state(reduce: true, group_level: 2)
|
||||
reset_order_counters_with_spec spec
|
||||
end
|
||||
|
||||
def reset_counters!
|
||||
spec = Order.by_supplier_id_and_state(startkey: [id], endkey: [id, {}], reduce: true, group_level: 2)
|
||||
self.class.reset_order_counters_with_spec spec
|
||||
end
|
||||
|
||||
def self.reset_order_counters_with_spec(spec)
|
||||
# taken from the couch_potato source since we want a model/custom mix here (hmmmm, something that should be fixed in the couchbase version)
|
||||
results = CouchPotato::View::ViewQuery.new(
|
||||
database.couchrest_database,
|
||||
spec.design_document,
|
||||
{spec.view_name => { map: spec.map_function, reduce: spec.reduce_function} },
|
||||
({spec.list_name => spec.list_function} unless spec.list_name.nil?),
|
||||
spec.language
|
||||
).query_view!(spec.view_parameters)
|
||||
Array.wrap(results['rows']).each do |result|
|
||||
supplier_id, state = result['key']
|
||||
case state
|
||||
when 'placed' then Qwaiter::Counter.set "supplier_counter:#{supplier_id}:orders_placed", result['value']
|
||||
when 'active' then Qwaiter::Counter.set "supplier_counter:#{supplier_id}:orders_in_process", result['value']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Send confirmation instructions by email
|
||||
def send_confirmation_instructions(*args)
|
||||
self.confirmation_token = nil if reconfirmation_required?
|
||||
@@ -183,43 +152,6 @@ class Supplier
|
||||
true
|
||||
end
|
||||
|
||||
# COUNTER SECTION. Can be a concern in a future
|
||||
def increment_orders_in_process_count!
|
||||
Qwaiter::Counter.incr self.class.orders_in_process_counter_key(id)
|
||||
end
|
||||
|
||||
def increment_orders_placed_count!
|
||||
Qwaiter::Counter.incr self.class.orders_placed_counter_key(id)
|
||||
end
|
||||
|
||||
def decrement_orders_in_process_count!
|
||||
Qwaiter::Counter.decr self.class.orders_in_process_counter_key(id)
|
||||
end
|
||||
|
||||
def decrement_orders_placed_count!
|
||||
Qwaiter::Counter.decr self.class.orders_placed_counter_key(id)
|
||||
end
|
||||
|
||||
def orders_in_process_count
|
||||
Qwaiter::Counter.get self.class.orders_in_process_counter_key(id)
|
||||
end
|
||||
|
||||
def orders_placed_count
|
||||
Qwaiter::Counter.get self.class.orders_placed_counter_key(id)
|
||||
end
|
||||
|
||||
def self.orders_in_process_counter_key(id)
|
||||
"supplier_counter:#{id}:orders_in_process"
|
||||
end
|
||||
|
||||
def self.orders_placed_counter_key(id)
|
||||
"supplier_counter:#{id}:orders_placed"
|
||||
end
|
||||
|
||||
def active_order_count
|
||||
orders_in_process_count + orders_placed_count
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def add_section_on_create
|
||||
|
||||
Reference in New Issue
Block a user