Skip to content

Commit 8ae04d5

Browse files
committed
Fix problem with keys not being symbolized for TotalOrderValueUpdated event by defining event attributes. When attributes were not defined DomainEvent transformation was not able to symbolize existing keys.
1 parent 90d8c0a commit 8ae04d5

File tree

4 files changed

+22
-21
lines changed

4 files changed

+22
-21
lines changed

infra/lib/infra/event_store.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ module Infra
22
class EventStore < SimpleDelegator
33
def self.main
44
require_relative "../../../rails_application/lib/transformations/refund_to_return_event_mapper" rescue nil
5-
require_relative "../../../rails_application/lib/transformations/symbolize_data_keys" rescue nil
65

76
begin
87
mapper = RubyEventStore::Mappers::PipelineMapper.new(
@@ -12,8 +11,8 @@ def self.main
1211
'Ordering::ItemAddedToRefund' => 'Ordering::ItemAddedToReturn',
1312
'Ordering::ItemRemovedFromRefund' => 'Ordering::ItemRemovedFromReturn'
1413
),
15-
Transformations::SymbolizeDataKeys.new,
16-
RubyEventStore::Mappers::Transformation::SymbolizeMetadataKeys.new
14+
RubyEventStore::Mappers::Transformation::SymbolizeMetadataKeys.new,
15+
to_domain_event: RubyEventStore::Mappers::Transformation::DomainEvent.new
1716
)
1817
)
1918
client = RailsEventStore::JSONClient.new(mapper: mapper)

rails_application/app/processes/processes/invoices/money_splitter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module Processes
22
module Invoices
33
class MoneySplitter
44
def initialize(amount, quantity)
5-
@amount = BigDecimal(amount.to_s)
5+
@amount = amount
66
@weights = Array.new(quantity, 1)
77
end
88

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
module Processes
22
class TotalOrderValueUpdated < Infra::Event
3+
attribute :order_id, Infra::Types::UUID
4+
attribute :total_amount, Infra::Types::Price
5+
attribute :discounted_amount, Infra::Types::Price
6+
attribute? :items, Infra::Types::Array do
7+
attribute :product_id, Infra::Types::UUID
8+
attribute :quantity, Infra::Types::Quantity
9+
attribute :amount, Infra::Types::Price
10+
end
311
end
412
end

rails_application/lib/transformations/refund_to_return_event_mapper.rb

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,14 @@ def load(record)
1414

1515
if old_class_name != new_class_name
1616
transformed_data = transform_payload(record.data, old_class_name)
17-
begin
18-
metadata_json = record.metadata.respond_to?(:to_json) ? record.metadata.to_json : record.metadata.to_h.to_json
19-
RubyEventStore::SerializedRecord.new(
20-
event_id: record.event_id,
21-
event_type: new_class_name,
22-
data: transformed_data.to_json,
23-
metadata: metadata_json,
24-
timestamp: record.timestamp,
25-
valid_at: record.valid_at
26-
)
27-
rescue => e
28-
puts "Mapper error: #{e.message}, falling back to original record"
29-
record
30-
end
17+
RubyEventStore::Record.new(
18+
event_id: record.event_id,
19+
event_type: new_class_name,
20+
data: transformed_data,
21+
metadata: record.metadata,
22+
timestamp: record.timestamp,
23+
valid_at: record.valid_at
24+
)
3125
else
3226
record
3327
end
@@ -38,10 +32,10 @@ def load(record)
3832
def transform_payload(data, old_class_name)
3933
case old_class_name
4034
when 'Ordering::DraftRefundCreated'
41-
data = transform_refund_to_return_payload(data, :refund_id, :return_id)
42-
transform_refund_to_return_payload(data, :refundable_products, :returnable_products)
35+
data = transform_refund_to_return_payload(data, "refund_id", "return_id")
36+
transform_refund_to_return_payload(data, "refundable_products", "returnable_products")
4337
when 'Ordering::ItemAddedToRefund', 'Ordering::ItemRemovedFromRefund'
44-
transform_refund_to_return_payload(data, :refund_id, :return_id)
38+
transform_refund_to_return_payload(data, "refund_id", "return_id")
4539
else
4640
data
4741
end

0 commit comments

Comments
 (0)