11# frozen_string_literal: true
22
33class TableSync ::Publishing ::Batch
4- include Tainbox
5- include TableSync ::Utils ::RequiredValidator
4+ attr_accessor :object_class ,
5+ :original_attributes ,
6+ :custom_version ,
7+ :routing_key ,
8+ :headers ,
9+ :event
610
7- attribute :object_class
8- attribute :original_attributes
9- attribute :custom_version
10- attribute :routing_key
11- attribute :headers
11+ def initialize ( attrs = { } )
12+ @object_class = attrs [ :object_class ]
13+ @original_attributes = attrs [ :original_attributes ]
14+ @custom_version = attrs [ :custom_version ]
15+ @routing_key = attrs [ :routing_key ]
16+ @headers = attrs [ :headers ]
17+ @event = attrs . fetch ( :event , :update )
1218
13- attribute :event , default : :update
14-
15- require_attributes :object_class , :original_attributes
19+ validate_required_attributes!
20+ end
1621
1722 def publish_later
1823 job . perform_later ( job_attributes )
@@ -30,6 +35,27 @@ def message
3035
3136 private
3237
38+ def validate_required_attributes!
39+ missing = [ ]
40+ missing << :object_class if object_class . nil?
41+ missing << :original_attributes if original_attributes . nil?
42+
43+ unless missing . empty?
44+ raise ArgumentError , "Some of required attributes is not provided: #{ missing . inspect } "
45+ end
46+ end
47+
48+ def attributes
49+ {
50+ object_class : object_class ,
51+ original_attributes : original_attributes ,
52+ custom_version : custom_version ,
53+ routing_key : routing_key ,
54+ headers : headers ,
55+ event : event ,
56+ }
57+ end
58+
3359 # JOB
3460
3561 def job
0 commit comments