Class: Chatbox::MemcachedStore
- Inherits:
-
Object
- Object
- Chatbox::MemcachedStore
- Defined in:
- lib/chatbox/memcached_store.rb
Defined Under Namespace
Classes: Record
Instance Method Summary collapse
- #add_message(attrs) ⇒ Object
- #find_all_messages_by_from_id(id) ⇒ Object
- #find_all_messages_by_to_id(id) ⇒ Object
- #find_message(id) ⇒ Object
-
#initialize(namespace: nil) ⇒ MemcachedStore
constructor
A new instance of MemcachedStore.
- #mark_message_read!(id) ⇒ Object
- #mark_message_unread!(id) ⇒ Object
Constructor Details
#initialize(namespace: nil) ⇒ MemcachedStore
Returns a new instance of MemcachedStore.
6 7 8 |
# File 'lib/chatbox/memcached_store.rb', line 6 def initialize(namespace: nil) @dalli = Dalli::Client.new nil, namespace: namespace end |
Instance Method Details
#add_message(attrs) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/chatbox/memcached_store.rb', line 12 def (attrs) @dalli.set "messages/#{attrs['id']}", JSON.generate( 'from_id' => attrs['from_id'], 'to_id' => attrs['to_id'], 'body' => attrs['body'], ) from_list = JSON.parse(@dalli.get("from/#{attrs['from_id']}") || '[]') from_list << {'from_id' => attrs['from_id'], 'message_id' => attrs['id']} @dalli.set "from/#{attrs['from_id']}", JSON.generate(from_list) to_list = JSON.parse(@dalli.get("to/#{attrs['to_id']}") || '[]') to_list << {'to_id' => attrs['to_id'], 'message_id' => attrs['id']} @dalli.set "to/#{attrs['to_id']}", JSON.generate(to_list) end |
#find_all_messages_by_from_id(id) ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/chatbox/memcached_store.rb', line 60 def (id) if json = @dalli.get("from/#{id}") JSON.parse(json).map do |attrs| attrs['message_id'] end else [] end end |
#find_all_messages_by_to_id(id) ⇒ Object
50 51 52 53 54 55 56 57 58 |
# File 'lib/chatbox/memcached_store.rb', line 50 def (id) if json = @dalli.get("to/#{id}") JSON.parse(json).map do |attrs| attrs['message_id'] end else [] end end |
#find_message(id) ⇒ Object
44 45 46 47 48 |
# File 'lib/chatbox/memcached_store.rb', line 44 def (id) if json = @dalli.get("messages/#{id}") Record.new id, JSON.parse(json) end end |
#mark_message_read!(id) ⇒ Object
30 31 32 33 34 |
# File 'lib/chatbox/memcached_store.rb', line 30 def (id) attrs = JSON.parse @dalli.get("messages/#{id}") attrs['read'] = true @dalli.set "messages/#{id}", JSON.generate(attrs) end |
#mark_message_unread!(id) ⇒ Object
36 37 38 39 40 |
# File 'lib/chatbox/memcached_store.rb', line 36 def (id) attrs = JSON.parse @dalli.get("messages/#{id}") attrs['read'] = false @dalli.set "messages/#{id}", JSON.generate(attrs) end |