From 1da5f68e3cb93021a2737875b2c14eefa83a1762 Mon Sep 17 00:00:00 2001 From: bedrock-adam Date: Mon, 21 Apr 2025 19:15:05 +1000 Subject: [PATCH] remove extra functionality --- .../outboxer_integration/test_started_job.rb | 9 +--- app/models/event.rb | 6 +-- app/models/outboxer_integration/test.rb | 7 --- app/services/event_service.rb | 9 ---- .../outboxer_integration/test_service.rb | 54 ------------------- bin/console | 2 - db/migrate/create_events.rb | 14 ++--- generators/install_generator.rb | 40 ++++---------- spec/bin/outboxer_publisher_spec.rb | 15 +++--- spec/rails_helper.rb | 4 -- spec/services/event_service_spec.rb | 19 ------- 11 files changed, 23 insertions(+), 156 deletions(-) delete mode 100644 app/models/outboxer_integration/test.rb delete mode 100644 app/services/event_service.rb delete mode 100644 app/services/outboxer_integration/test_service.rb delete mode 100644 spec/services/event_service_spec.rb diff --git a/app/jobs/outboxer_integration/test_started_job.rb b/app/jobs/outboxer_integration/test_started_job.rb index c1cfee9b..b530e084 100644 --- a/app/jobs/outboxer_integration/test_started_job.rb +++ b/app/jobs/outboxer_integration/test_started_job.rb @@ -3,14 +3,9 @@ class TestStartedJob include Sidekiq::Job def perform(event_id) - event = EventService.find_by_id(id: event_id) + test_started_event = TestStartedEvent.find(event_id) - CompleteTestJob.perform_async({ - "user_id" => event.user_id, - "tenant_id" => event.tenant_id, - "id" => event.eventable_id, - "lock_version" => event.index - }) + TestCompletedEvent.create!(body: { "test_id" => test_started_event.body["test_id"] }) end end end diff --git a/app/models/event.rb b/app/models/event.rb index 2de811cc..8e47db9a 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -1,11 +1,7 @@ class Event < ApplicationRecord self.table_name = "events" - default_scope { order(:index) } - - # associations - - belongs_to :eventable, polymorphic: true + default_scope { order(:created_at) } # validations diff --git a/app/models/outboxer_integration/test.rb b/app/models/outboxer_integration/test.rb deleted file mode 100644 index c06f8d59..00000000 --- a/app/models/outboxer_integration/test.rb +++ /dev/null @@ -1,7 +0,0 @@ -module OutboxerIntegration - class Test < ApplicationRecord - self.table_name = "outboxer_integration_tests" - - has_many :events, as: :eventable - end -end diff --git a/app/services/event_service.rb b/app/services/event_service.rb deleted file mode 100644 index 8f69bf6b..00000000 --- a/app/services/event_service.rb +++ /dev/null @@ -1,9 +0,0 @@ -module EventService - module_function - - def find_by_id(id:) - ActiveRecord::Base.connection_pool.with_connection do - Event.find(id) - end - end -end diff --git a/app/services/outboxer_integration/test_service.rb b/app/services/outboxer_integration/test_service.rb deleted file mode 100644 index ccc1bc92..00000000 --- a/app/services/outboxer_integration/test_service.rb +++ /dev/null @@ -1,54 +0,0 @@ -module OutboxerIntegration - module TestService - module_function - - def start(user_id:, tenant_id:, time: Time) - ActiveRecord::Base.connection_pool.with_connection do - ActiveRecord::Base.transaction do - current_time = time.current - test = Test.create!( - tenant_id: tenant_id, created_at: current_time, updated_at: current_time) - - event = TestStartedEvent.create!( - user_id: user_id, - tenant_id: tenant_id, - created_at: time.current, - eventable: test, - index: test.lock_version, - body: { - "test" => { - "id" => test.id, - "lock_version" => test.lock_version - } - }) - - [test, event] - end - end - end - - def complete(user_id:, tenant_id:, id:, lock_version:, time: Time) - ActiveRecord::Base.connection_pool.with_connection do - ActiveRecord::Base.transaction do - test = Test.find_by!(tenant_id: tenant_id, id: id) - test.update!(lock_version: lock_version, updated_at: time.current) - - event = TestCompletedEvent.create!( - user_id: user_id, - tenant_id: tenant_id, - created_at: time.current, - eventable: test, - index: test.lock_version, - body: { - "test" => { - "id" => test.id, - "lock_version" => test.lock_version - } - }) - - [test, event] - end - end - end - end -end diff --git a/bin/console b/bin/console index 168ca4ba..9c0d8d8e 100755 --- a/bin/console +++ b/bin/console @@ -6,8 +6,6 @@ require "outboxer" require "sidekiq" require "irb" -require_relative "../app/services/outboxer_integration/test_service" - Dir.glob(File.join(__dir__, "../app/models/**/*.rb")).each do |file| require file end diff --git a/db/migrate/create_events.rb b/db/migrate/create_events.rb index 4bd6d7c0..728b8d3e 100644 --- a/db/migrate/create_events.rb +++ b/db/migrate/create_events.rb @@ -1,17 +1,13 @@ class CreateEvents < ActiveRecord::Migration[7.0] def up create_table :events do |t| - t.bigint :user_id - t.bigint :tenant_id - t.datetime :created_at, null: false + t.string :type, null: false, limit: 255 + t.send json_column_type, :body - t.string :eventable_type, limit: 255 - t.bigint :eventable_id - t.bigint :index - t.index [:eventable_type, :eventable_id, :index], unique: true + t.datetime :created_at, null: false - t.string :type, null: false, limit: 255 - t.send(json_column_type, :body) + t.index :created_at + t.index [:type, :created_at] end end diff --git a/generators/install_generator.rb b/generators/install_generator.rb index bf783b70..e9688106 100644 --- a/generators/install_generator.rb +++ b/generators/install_generator.rb @@ -40,10 +40,6 @@ def copy_migrations migration_template( "db/migrate/create_events.rb", "db/migrate/create_events.rb") - - migration_template( - "db/migrate/create_outboxer_integration_tests.rb", - "db/migrate/create_outboxer_integration_tests.rb") end def copy_models @@ -51,10 +47,6 @@ def copy_models "app/models/event.rb", "app/models/event.rb") - copy_file( - "app/models/outboxer_integration/test.rb", - "app/models/outboxer_integration/test.rb") - copy_file( "app/models/outboxer_integration/test_started_event.rb", "app/models/outboxer_integration/test_started_event.rb") @@ -64,29 +56,6 @@ def copy_models "app/models/outboxer_integration/test_completed_event.rb") end - def copy_services - copy_file( - "app/services/event_service.rb", - "app/services/event_service.rb") - - copy_file( - "spec/services/event_service_spec.rb", - "spec/services/event_service_spec.rb") - - copy_file( - "app/services/outboxer_integration/test_service.rb", - "app/services/outboxer_integration/test_service.rb") - end - - def copy_bin_file - template "bin/outboxer_publisher", "bin/outboxer_publisher" - run "chmod +x bin/outboxer_publisher" - - copy_file( - "spec/bin/outboxer_publisher_spec.rb", - "spec/bin/outboxer_publisher_spec.rb") - end - def copy_jobs copy_file( "app/jobs/event_created_job.rb", @@ -104,5 +73,14 @@ def copy_jobs "app/jobs/outboxer_integration/complete_test_job.rb", "app/jobs/outboxer_integration/complete_test_job.rb") end + + def copy_bin_file + template "bin/outboxer_publisher", "bin/outboxer_publisher" + run "chmod +x bin/outboxer_publisher" + + copy_file( + "spec/bin/outboxer_publisher_spec.rb", + "spec/bin/outboxer_publisher_spec.rb") + end end end diff --git a/spec/bin/outboxer_publisher_spec.rb b/spec/bin/outboxer_publisher_spec.rb index a1f45554..19f21896 100644 --- a/spec/bin/outboxer_publisher_spec.rb +++ b/spec/bin/outboxer_publisher_spec.rb @@ -2,20 +2,16 @@ require_relative "../../app/models/application_record" require_relative "../../app/models/event" -require_relative "../../app/models/outboxer_integration/test" require_relative "../../app/models/outboxer_integration/test_started_event" require_relative "../../app/models/outboxer_integration/test_completed_event" -require_relative "../../app/services/outboxer_integration/test_service" - RSpec.describe "bin/outboxer_publisher" do - let(:user_id) { 1 } - let(:tenant_id) { 2 } + let(:test_id) { 999 } it "performs event job handler async" do Sidekiq::Testing.disable! - test, _event = OutboxerIntegration::TestService.start(user_id: user_id, tenant_id: tenant_id) + OutboxerIntegration::TestStartedEvent.create!(body: { "test_id" => test_id }) env = { "RAILS_ENV" => "test", @@ -33,9 +29,8 @@ test_completed_event = nil max_attempts.times do |attempt| - test = OutboxerIntegration::Test.find(test[:id]) test_completed_event = OutboxerIntegration::TestCompletedEvent.last - break if test_completed_event && (test.events.last == test_completed_event) + break if test_completed_event sleep 1 @@ -43,7 +38,9 @@ "Retrying (attempt #{attempt + 1}/#{max_attempts})..." end - expect(test_completed_event.body["test"]["id"]).to eql(test.id) + expect(test_completed_event.type).not_to be_nil + expect(test_completed_event.body).to eql({ "test_id" => test_id }) + expect(test_completed_event.created_at).not_to be_nil ensure if sidekiq_pid Process.kill("TERM", sidekiq_pid) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 94865e54..523092e1 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -11,10 +11,6 @@ Dir[File.join(__dir__, "factories/**/*.rb")].each { |f| require f } -require_relative "../app/models/application_record" -require_relative "../app/models/event" -require_relative "../app/services/event_service" - SimpleCov.formatter = Coveralls::SimpleCov::Formatter SimpleCov.start diff --git a/spec/services/event_service_spec.rb b/spec/services/event_service_spec.rb deleted file mode 100644 index d2826e75..00000000 --- a/spec/services/event_service_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -require "rails_helper" - -RSpec.describe EventService do - describe ".find_by_id" do - let!(:event) do - Event.create!(user_id: 1, tenant_id: 1, type: "Event", created_at: Time.current) - end - - it "returns the event with the given id" do - expect(EventService.find_by_id(id: event.id)).to eq(event) - end - - it "raises ActiveRecord::RecordNotFound if event does not exist" do - expect do - EventService.find_by_id(id: -1) - end.to raise_error(ActiveRecord::RecordNotFound) - end - end -end