Class: MailDude::Stores::MemoryStore
- Defined in:
- lib/mail_dude/stores/memory_store.rb
Constant Summary
Constants inherited from Base
Instance Method Summary collapse
- #clear ⇒ Object
- #delete(id) ⇒ Object
- #find(id) ⇒ Object
-
#initialize ⇒ MemoryStore
constructor
A new instance of MemoryStore.
- #list(page: 1, per_page: MailDude.configuration.default_per_page, query: nil) ⇒ Object
- #prune(max_messages: MailDude.configuration.max_messages, retention_period: MailDude.configuration.retention_period) ⇒ Object
- #write(mail) ⇒ Object
Constructor Details
#initialize ⇒ MemoryStore
Returns a new instance of MemoryStore.
6 7 8 9 |
# File 'lib/mail_dude/stores/memory_store.rb', line 6 def initialize @records = {} @mutex = Mutex.new end |
Instance Method Details
#clear ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/mail_dude/stores/memory_store.rb', line 31 def clear mutex.synchronize do count = records.length records.clear count end end |
#delete(id) ⇒ Object
26 27 28 29 |
# File 'lib/mail_dude/stores/memory_store.rb', line 26 def delete(id) valid_id = validate_id!(id) mutex.synchronize { !records.delete(valid_id).nil? } end |
#find(id) ⇒ Object
21 22 23 24 |
# File 'lib/mail_dude/stores/memory_store.rb', line 21 def find(id) valid_id = validate_id!(id) mutex.synchronize { records.fetch(valid_id) { raise MessageNotFoundError, 'Message not found' } } end |
#list(page: 1, per_page: MailDude.configuration.default_per_page, query: nil) ⇒ Object
17 18 19 |
# File 'lib/mail_dude/stores/memory_store.rb', line 17 def list(page: 1, per_page: MailDude.configuration.default_per_page, query: nil) mutex.synchronize { page_for(records.values, page: page, per_page: per_page, query: query) } end |
#prune(max_messages: MailDude.configuration.max_messages, retention_period: MailDude.configuration.retention_period) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/mail_dude/stores/memory_store.rb', line 39 def prune(max_messages: MailDude.configuration., retention_period: MailDude.configuration.retention_period) mutex.synchronize do ids = prune_ids(records.values, max_messages: , retention_period: retention_period) ids.each { |id| records.delete(id) } ids.length end end |
#write(mail) ⇒ Object
11 12 13 14 15 |
# File 'lib/mail_dude/stores/memory_store.rb', line 11 def write(mail) record = build_record(mail) mutex.synchronize { records[record.id] = record } record end |