Class: Turbo::Replay::Repo::Redis
- Defined in:
- lib/turbo/replay/repo/redis.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
Instance Method Summary collapse
- #get_all_messages(broadcasting:) ⇒ Object
- #get_current_sequence_number(broadcasting:) ⇒ Object
-
#initialize(client:) ⇒ Redis
constructor
A new instance of Redis.
- #insert_message(broadcasting:, content:, retention:) ⇒ Object
Constructor Details
#initialize(client:) ⇒ Redis
Returns a new instance of Redis.
6 7 8 |
# File 'lib/turbo/replay/repo/redis.rb', line 6 def initialize(client:) @client = client end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
4 5 6 |
# File 'lib/turbo/replay/repo/redis.rb', line 4 def client @client end |
Instance Method Details
#get_all_messages(broadcasting:) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/turbo/replay/repo/redis.rb', line 17 def (broadcasting:) = FormatMessagesKey.call(broadcasting) @client.lrange(, 0, -1) .map(&SafeParseJson) .compact .reverse end |
#get_current_sequence_number(broadcasting:) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/turbo/replay/repo/redis.rb', line 10 def get_current_sequence_number(broadcasting:) counter_key = FormatCounterKey.call(broadcasting) @client.get(counter_key)&.to_i || 0 end |
#insert_message(broadcasting:, content:, retention:) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/turbo/replay/repo/redis.rb', line 27 def (broadcasting:, content:, retention:) counter_key = FormatCounterKey.call(broadcasting) = FormatMessagesKey.call(broadcasting) next_sequence_number = @client.incr(counter_key) content_with_sequence_number = {sequence_number: next_sequence_number, content: content} @client.lpush(, content_with_sequence_number.to_json) @client.ltrim(, 0, retention.size - 1) @client.expire(counter_key, retention.ttl) @client.expire(, retention.ttl) content_with_sequence_number end |