From e416232e6a0c0ffb53bc386987378bb1976056e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Pacana?= Date: Mon, 20 Nov 2023 12:56:34 +0100 Subject: [PATCH] Transactional changes --- .../lib/project_management/command_handler.rb | 18 +++++++++++++----- examples/rails_way/test/issue_test.rb | 5 ++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/examples/rails_way/lib/project_management/command_handler.rb b/examples/rails_way/lib/project_management/command_handler.rb index 474cac0..11e686b 100644 --- a/examples/rails_way/lib/project_management/command_handler.rb +++ b/examples/rails_way/lib/project_management/command_handler.rb @@ -45,17 +45,25 @@ def resolve(cmd) private + def stream_name(id) = "Issue$#{id}" + + def in_transaction(&) = ActiveRecord::Base.transaction(&) + def create_issue(id) - Issue.create!(uuid: id) - @event_store.publish(yield, stream_name: "Issue$#{id}") + in_transaction do + Issue.create!(uuid: id) + @event_store.publish(yield, stream_name: stream_name(id)) + end rescue ActiveRecord::RecordNotUnique raise Error end def load_issue(id) - issue = Issue.find_by!(uuid: id) - @event_store.publish(yield(issue), stream_name: "Issue$#{id}") - issue.save! + in_transaction do + issue = Issue.find_by!(uuid: id) + @event_store.publish(yield(issue), stream_name: stream_name(id)) + issue.save! + end rescue AASM::InvalidTransition, ActiveRecord::RecordNotFound raise Error end diff --git a/examples/rails_way/test/issue_test.rb b/examples/rails_way/test/issue_test.rb index 1560495..a474638 100644 --- a/examples/rails_way/test/issue_test.rb +++ b/examples/rails_way/test/issue_test.rb @@ -21,7 +21,10 @@ def test_passed_expected_version end def setup - ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") + ActiveRecord::Base.establish_connection( + adapter: "sqlite3", + database: ":memory:" + ) ActiveRecord::Schema.verbose = false ActiveRecord::Schema.define do