Class: PgEventstore::Subscription

Inherits:
Object
  • Object
show all
Includes:
Extensions::OptionsExtension
Defined in:
lib/pg_eventstore/subscriptions/subscription.rb

Overview

Defines ruby’s representation of subscriptions record.

Constant Summary collapse

DEFAULT_TIMESTAMP =

Returns:

  • (Time)
Time.at(0).utc.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Extensions::OptionsExtension

included, #initialize, #options_hash, #readonly!, #readonly?

Instance Attribute Details

#average_event_processing_timeFloat?

Returns a speed of the subscription. Divide 1 by this value to determine how much events are processed by the Subscription per second.

Returns:

  • (Float, nil)

    a speed of the subscription. Divide 1 by this value to determine how much events are processed by the Subscription per second.



49
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 49

attribute(:average_event_processing_time)

#chunk_query_intervalInteger, ...

Returns determines how often to pull events for the given Subscription in seconds.

Returns:

  • (Integer, Float, nil)

    determines how often to pull events for the given Subscription in seconds



71
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 71

attribute(:chunk_query_interval)

#created_atTime?

Returns:

  • (Time, nil)


85
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 85

attribute(:created_at)

#current_positionInteger?

Returns current Subscription’s position. It is updated automatically each time an event is processed.

Returns:

  • (Integer, nil)

    current Subscription’s position. It is updated automatically each time an event is processed



41
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 41

attribute(:current_position)

#idInteger?

Returns:

  • (Integer, nil)


24
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 24

attribute(:id)

#last_chunk_fed_atTime?

Returns shows the time when last time events were fed to the event’s processor.

Returns:

  • (Time, nil)

    shows the time when last time events were fed to the event’s processor



74
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 74

attribute(:last_chunk_fed_at)

#last_chunk_greatest_positionInteger?

Returns shows the greatest global_position of the last event in the last chunk fed to the event’s processor.

Returns:

  • (Integer, nil)

    shows the greatest global_position of the last event in the last chunk fed to the event’s processor



78
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 78

attribute(:last_chunk_greatest_position)

#last_errorHash?

Returns the information about last error caused when processing events by the Subscription.

Returns:

  • (Hash, nil)

    the information about last error caused when processing events by the Subscription.



65
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 65

attribute(:last_error)

#last_error_occurred_atTime?

Returns the time when the last error occurred.

Returns:

  • (Time, nil)

    the time when the last error occurred



68
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 68

attribute(:last_error_occurred_at)

#last_restarted_atTime?

Returns last time the Subscription was restarted.

Returns:

  • (Time, nil)

    last time the Subscription was restarted



61
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 61

attribute(:last_restarted_at)

#locked_byInteger?

Returns The id of subscription manager which obtained the lock of the Subscription. nil value means that the Subscription isn’t locked yet by any subscription manager.

Returns:

  • (Integer, nil)

    The id of subscription manager which obtained the lock of the Subscription. nil value means that the Subscription isn’t locked yet by any subscription manager.



82
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 82

attribute(:locked_by)

#max_restarts_numberInteger?

Returns maximum number of times the Subscription can be restarted.

Returns:

  • (Integer, nil)

    maximum number of times the Subscription can be restarted



55
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 55

attribute(:max_restarts_number)

#nameString?

Returns Subscription’s name. Subscription should have unique pair of set and name.

Returns:

  • (String, nil)

    Subscription’s name. Subscription should have unique pair of set and name.



30
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 30

attribute(:name)

#optionsHash?

Returns subscription’s options to be used to query events. See SubscriptionManager#subscribe for the list of available options.

Returns:

  • (Hash, nil)

    subscription’s options to be used to query events. See SubscriptionManager#subscribe for the list of available options



37
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 37

attribute(:options)

#restart_countInteger?

Returns the number of Subscription’s restarts after its failure.

Returns:

  • (Integer, nil)

    the number of Subscription’s restarts after its failure



52
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 52

attribute(:restart_count)

#setString?

Returns Subscription’s set. Subscription should have unique pair of set and name.

Returns:

  • (String, nil)

    Subscription’s set. Subscription should have unique pair of set and name.



27
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 27

attribute(:set)

#stateString?

Returns current Subscription’s state. It is updated automatically during Subscription’s life cycle See RunnerState::STATES for possible values.

Returns:

  • (String, nil)

    current Subscription’s state. It is updated automatically during Subscription’s life cycle See RunnerState::STATES for possible values.



45
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 45

attribute(:state)

#time_between_restartsInteger?

Returns interval in seconds between retries of failed Subscription.

Returns:

  • (Integer, nil)

    interval in seconds between retries of failed Subscription



58
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 58

attribute(:time_between_restarts)

#total_processed_eventsInteger?

Returns total number of events, processed by this subscription.

Returns:

  • (Integer, nil)

    total number of events, processed by this subscription



33
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 33

attribute(:total_processed_events)

#updated_atTime?

Returns:

  • (Time, nil)


88
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 88

attribute(:updated_at)

Class Method Details

.ping_all(subscriptions_set_id, subscriptions) ⇒ void

This method returns an undefined value.

Parameters:



94
95
96
97
98
99
100
101
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 94

def ping_all(subscriptions_set_id, subscriptions)
  result = subscription_queries.ping_all(subscriptions_set_id, subscriptions.map(&:id))
  subscriptions.each do |subscription|
    next unless result[subscription.id]

    subscription.assign_attributes(updated_at: result[subscription.id])
  end
end

.subscription_queriesPgEventstore::SubscriptionQueries

Returns:

  • (PgEventstore::SubscriptionQueries)


104
105
106
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 104

def subscription_queries
  SubscriptionQueries.new(connection)
end

Instance Method Details

#==(other) ⇒ Boolean

Parameters:

  • other (Object)

Returns:

  • (Boolean)


165
166
167
168
169
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 165

def ==(other)
  return false unless other.is_a?(Subscription)

  id == other.id
end

#assign_attributes(attrs) ⇒ Hash

Parameters:

  • attrs (Hash)

Returns:

  • (Hash)


121
122
123
124
125
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 121

def assign_attributes(attrs)
  attrs.each do |attr, value|
    public_send("#{attr}=", value)
  end
end

#dupPgEventstore::Subscription

Dup the current object without assigned connection



140
141
142
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 140

def dup
  Subscription.new(**Utils.deep_dup(options_hash))
end

#eql?(other) ⇒ Boolean

Parameters:

  • other (Object)

Returns:

  • (Boolean)


157
158
159
160
161
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 157

def eql?(other)
  return false unless other.is_a?(Subscription)

  hash == other.hash
end

#hashInteger

Returns:

  • (Integer)


151
152
153
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 151

def hash
  id.hash
end

#lock!(lock_id, force: false) ⇒ PgEventstore::Subscription

Locks the Subscription by the given lock id

Parameters:

  • lock_id (Integer)

    SubscriptionsSet#id

  • force (Boolean) (defaults to: false)

Returns:



131
132
133
134
135
136
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 131

def lock!(lock_id, force: false)
  self.id = subscription_queries.find_or_create_by(set: set, name: name)[:id]
  self.locked_by = subscription_queries.lock!(id, lock_id, force: force)
  reset_runtime_attributes
  self
end

#reloadPgEventstore::Subscription



145
146
147
148
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 145

def reload
  assign_attributes(subscription_queries.find!(id))
  self
end

#update(attrs) ⇒ Hash

Parameters:

  • attrs (Hash)

Returns:

  • (Hash)


115
116
117
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 115

def update(attrs)
  assign_attributes(subscription_queries.update(id, attrs: attrs, locked_by: locked_by))
end