Sha256: 041d9bf1b5805a59fbc1ba846f287a92523f6077cc2d599e29a99a2f855cb6b6

Contents?: true

Size: 1.09 KB

Versions: 7

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

module PgEventstore
  module Web
    module Subscriptions
      class SubscriptionsToSetAssociation
        attr_reader :subscriptions_set, :subscriptions

        # @param subscriptions_set [Array<PgEventstore::SubscriptionsSet>]
        # @param subscriptions [Array<PgEventstore::Subscription>]
        def initialize(subscriptions_set:, subscriptions:)
          @subscriptions_set = subscriptions_set
          @subscriptions = subscriptions
        end

        # @return [Hash{PgEventstore::SubscriptionsSet => Array<PgEventstore::Subscription>}]
        def association
          @association ||=
            begin
              association = subscriptions.group_by do |subscription|
                set = subscriptions_set.find { |set| set.id == subscription.locked_by }
                set || PgEventstore::SubscriptionsSet.new
              end
              (subscriptions_set - association.keys).each_with_object(association) do |subscriptions_set|
                association[subscriptions_set] = []
              end
            end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
pg_eventstore-1.1.3 lib/pg_eventstore/web/subscriptions/subscriptions_to_set_association.rb
pg_eventstore-1.1.2 lib/pg_eventstore/web/subscriptions/subscriptions_to_set_association.rb
pg_eventstore-1.1.1 lib/pg_eventstore/web/subscriptions/subscriptions_to_set_association.rb
pg_eventstore-1.1.0 lib/pg_eventstore/web/subscriptions/subscriptions_to_set_association.rb
pg_eventstore-1.0.4 lib/pg_eventstore/web/subscriptions/subscriptions_to_set_association.rb
pg_eventstore-1.0.0.rc2 lib/pg_eventstore/web/subscriptions/subscriptions_to_set_association.rb
pg_eventstore-1.0.0.rc1 lib/pg_eventstore/web/subscriptions/subscriptions_to_set_association.rb