Class: EventSystem::Storage::MemoryStore
- Defined in:
- lib/event_system/storage/memory_store.rb
Overview
In-memory event storage implementation Perfect for testing, development, or short-lived applications
Instance Attribute Summary collapse
-
#current_session ⇒ String
readonly
Get the current session ID.
Instance Method Summary collapse
-
#clear! ⇒ void
Clear all events from memory.
-
#create_session(session_id = nil) ⇒ String
Create a new session.
-
#initialize(session_id = nil) ⇒ MemoryStore
constructor
Initialize a new memory-based event store.
-
#list_sessions ⇒ Array<String>
List available sessions.
-
#load_session(session_id = nil) ⇒ Array<EventSystem::Event>
Load all events from a session.
-
#query(options = {}) ⇒ Array<EventSystem::Event>
Query for events based on options.
-
#size ⇒ Integer
Get total number of events stored.
-
#stats ⇒ Hash
Get storage statistics.
-
#store(event) ⇒ void
Store an event in memory.
-
#switch_session(session_id) ⇒ void
Switch to a different session.
Methods inherited from Base
Constructor Details
#initialize(session_id = nil) ⇒ MemoryStore
Initialize a new memory-based event store
14 15 16 17 18 |
# File 'lib/event_system/storage/memory_store.rb', line 14 def initialize(session_id = nil) @events = [] @current_session = session_id || Time.now.strftime("%Y%m%d_%H%M%S") @sessions = { @current_session => [] } end |
Instance Attribute Details
#current_session ⇒ String (readonly)
Get the current session ID
86 87 88 |
# File 'lib/event_system/storage/memory_store.rb', line 86 def current_session @current_session end |
Instance Method Details
#clear! ⇒ void
This method returns an undefined value.
Clear all events from memory
110 111 112 113 114 115 |
# File 'lib/event_system/storage/memory_store.rb', line 110 def clear! @events.clear @sessions.clear @current_session = Time.now.strftime("%Y%m%d_%H%M%S") @sessions[@current_session] = [] end |
#create_session(session_id = nil) ⇒ String
Create a new session
101 102 103 104 105 106 |
# File 'lib/event_system/storage/memory_store.rb', line 101 def create_session(session_id = nil) session_id ||= Time.now.strftime("%Y%m%d_%H%M%S") @sessions[session_id] = [] @current_session = session_id session_id end |
#list_sessions ⇒ Array<String>
List available sessions
80 81 82 |
# File 'lib/event_system/storage/memory_store.rb', line 80 def list_sessions @sessions.keys.sort end |
#load_session(session_id = nil) ⇒ Array<EventSystem::Event>
Load all events from a session
73 74 75 76 |
# File 'lib/event_system/storage/memory_store.rb', line 73 def load_session(session_id = nil) session_id ||= @current_session @sessions[session_id] || [] end |
#query(options = {}) ⇒ Array<EventSystem::Event>
Query for events based on options
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/event_system/storage/memory_store.rb', line 36 def query( = {}) # Use session-specific events by default, or global events if no session specified if [:session_id] events = @sessions[[:session_id]] || [] else # For backward compatibility, use global events when no session specified events = @events.dup end # Filter by type if [:type] events = events.select { |e| e.type == [:type] } end # Filter by time range if [:start_time] events = events.select { |e| e. >= [:start_time] } end if [:end_time] events = events.select { |e| e. <= [:end_time] } end # Sort by timestamp (oldest first) events = events.sort_by(&:timestamp) # Limit results if [:limit] events = events.last([:limit]) end events end |
#size ⇒ Integer
Get total number of events stored
119 120 121 |
# File 'lib/event_system/storage/memory_store.rb', line 119 def size @events.length end |
#stats ⇒ Hash
Get storage statistics
125 126 127 128 129 130 131 |
# File 'lib/event_system/storage/memory_store.rb', line 125 def stats super.merge( total_events: @events.length, sessions: @sessions.keys.length, current_session_events: @sessions[@current_session]&.length || 0 ) end |
#store(event) ⇒ void
This method returns an undefined value.
Store an event in memory
23 24 25 26 |
# File 'lib/event_system/storage/memory_store.rb', line 23 def store(event) @events << event @sessions[@current_session] << event end |
#switch_session(session_id) ⇒ void
This method returns an undefined value.
Switch to a different session
93 94 95 96 |
# File 'lib/event_system/storage/memory_store.rb', line 93 def switch_session(session_id) @current_session = session_id @sessions[session_id] ||= [] end |