From 0d0e6c68f86692fd7151c70b5a581766d98d501b Mon Sep 17 00:00:00 2001 From: Sergey Kucher Date: Thu, 15 Mar 2018 19:10:42 +0500 Subject: [PATCH] chore: previous company for processors/company/base https://jira.railsc.ru/browse/ORDERS-1453 --- lib/treasury/processors/base.rb | 6 ++++++ lib/treasury/processors/company/base.rb | 9 +++++++++ lib/treasury/processors/user/base.rb | 9 +++++++++ 3 files changed, 24 insertions(+) diff --git a/lib/treasury/processors/base.rb b/lib/treasury/processors/base.rb index b2986ce..066a75c 100644 --- a/lib/treasury/processors/base.rb +++ b/lib/treasury/processors/base.rb @@ -12,7 +12,9 @@ class Base < Treasury::Pgq::Consumer attr_reader :data attr_reader :params attr_reader :event + attr_accessor :object + attr_accessor :prev_object def initialize(processor_info, logger = Rails.logger) @processor_info = processor_info @@ -73,6 +75,10 @@ def current_value(field_name = nil) object_value(@object, field_name) end + def previous_value(field_name = nil) + object_value(@prev_object, field_name) + end + def object_value(l_object, field_name = nil) value = if @data.key?(l_object) && @data[l_object].key?(field_name || field.first_field) @data[l_object][field_name || field.first_field] diff --git a/lib/treasury/processors/company/base.rb b/lib/treasury/processors/company/base.rb index 1d66e65..d834350 100644 --- a/lib/treasury/processors/company/base.rb +++ b/lib/treasury/processors/company/base.rb @@ -7,16 +7,25 @@ class Base < ::Treasury::Processors::Base alias :company_id= :object= alias :company_id :object + alias :prev_company_id= :prev_object= + alias :prev_company_id :prev_object + protected def init_event_params self.company_id = extract_company.to_i.nonzero? + self.prev_company_id = extract_prev_company.to_i.nonzero? + raise ArgumentError, "Company ID expected to be Integer, #{@event.inspect}" unless company_id end def extract_company @event.raw_data.key?(:company_id) ? @event.raw_data[:company_id] : @event.raw_data[:id] end + + def extract_prev_company + @event.raw_prev_data.key?(:company_id) ? @event.raw_prev_data[:company_id] : @event.raw_prev_data[:id] + end end end end diff --git a/lib/treasury/processors/user/base.rb b/lib/treasury/processors/user/base.rb index a9c89a3..6725c9a 100644 --- a/lib/treasury/processors/user/base.rb +++ b/lib/treasury/processors/user/base.rb @@ -7,16 +7,25 @@ class Base < ::Treasury::Processors::Base alias :user_id= :object= alias :user_id :object + alias :prev_user_id= :prev_object= + alias :prev_user_id :prev_object + protected def init_event_params self.user_id = extract_user + self.prev_user_id = extract_prev_user + raise ArgumentError, "User ID expected to be Integer, #{@event.inspect}" unless user_id end def extract_user @event.raw_data[:user_id] || @event.raw_data[:id] end + + def extract_prev_user + @event.raw_prev_data[:user_id] || @event.raw_prev_data[:id] + end end end end