Class: Messaging::Adapters::Postgres::Store
- Inherits:
-
Object
- Object
- Messaging::Adapters::Postgres::Store
- Defined in:
- lib/messaging/adapters/postgres/store.rb
Overview
Message store adapter using Postgres and ActiveRecord. Prefer accessing the message store through Messaging.message_store instead of using it directly.
Instance Attribute Summary collapse
-
#streams ⇒ Streams
readonly
All the streams in the store.
Instance Method Summary collapse
-
#call(message) ⇒ Messaging::Message
Writes the message to Postgres Skips messages that hasn't defined a stream name We do this to begin with so PG is opt-in per message.
-
#categories ⇒ Categories
All the stream categories in the store.
-
#category(name) ⇒ Category
Get a specific category by name.
-
#initialize ⇒ Store
constructor
private
Should not be used directly.
-
#messages ⇒ SerializedMessage
Access to all messages.
-
#messages_in_streams(*streams) ⇒ ActiveRecord::Relation
Access to all messages in the given streams.
-
#stream(name) ⇒ Stream
Get a specific stream by name.
Constructor Details
#initialize ⇒ Store
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Should not be used directly. Access the store though Messaging.message_store or Messaging::Adapters::Store
28 29 30 |
# File 'lib/messaging/adapters/postgres/store.rb', line 28 def initialize @streams = Streams.new end |
Instance Attribute Details
#streams ⇒ Streams (readonly)
Returns all the streams in the store.
23 24 25 |
# File 'lib/messaging/adapters/postgres/store.rb', line 23 def streams @streams end |
Instance Method Details
#call(message) ⇒ Messaging::Message
Writes the message to Postgres Skips messages that hasn't defined a stream name We do this to begin with so PG is opt-in per message
82 83 84 85 86 |
# File 'lib/messaging/adapters/postgres/store.rb', line 82 def call() return unless .stream_name SerializedMessage.create!(message: ). end |
#categories ⇒ Categories
Returns all the stream categories in the store.
41 42 43 |
# File 'lib/messaging/adapters/postgres/store.rb', line 41 def categories Categories.new end |
#category(name) ⇒ Category
Get a specific category by name
48 49 50 |
# File 'lib/messaging/adapters/postgres/store.rb', line 48 def category(name) categories[name] end |
#messages ⇒ SerializedMessage
Access to all messages. Use with caution in production as there are probably a lot of messages so queries could take a long time or timeout.
62 63 64 |
# File 'lib/messaging/adapters/postgres/store.rb', line 62 def SerializedMessage end |
#messages_in_streams(*streams) ⇒ ActiveRecord::Relation
Access to all messages in the given streams
71 72 73 |
# File 'lib/messaging/adapters/postgres/store.rb', line 71 def (*streams) SerializedMessage.where(stream: streams.flatten.map(&:to_s)).order(:id) end |
#stream(name) ⇒ Stream
Get a specific stream by name
35 36 37 |
# File 'lib/messaging/adapters/postgres/store.rb', line 35 def stream(name) streams[name] end |