Class: Dbviewer::Storage::InMemoryStorage

Inherits:
Base
  • Object
show all
Defined in:
lib/dbviewer/storage/in_memory_storage.rb

Overview

InMemoryStorage implements QueryStorage for storing queries in memory

Instance Method Summary collapse

Constructor Details

#initializeInMemoryStorage

Returns a new instance of InMemoryStorage.



5
6
7
8
# File 'lib/dbviewer/storage/in_memory_storage.rb', line 5

def initialize
  @queries = []
  @mutex = Mutex.new
end

Instance Method Details

#add(query) ⇒ Object

Add a new query to the collection



16
17
18
19
20
21
22
23
# File 'lib/dbviewer/storage/in_memory_storage.rb', line 16

def add(query)
  @mutex.synchronize do
    @queries << query
    # Trim if we have too many queries
    max_queries = Dbviewer.configuration.max_memory_queries || 1000
    @queries.shift if @queries.size > max_queries
  end
end

#allObject

Get all queries



11
12
13
# File 'lib/dbviewer/storage/in_memory_storage.rb', line 11

def all
  @mutex.synchronize { @queries.dup }
end

#clearObject

Clear all stored queries



26
27
28
# File 'lib/dbviewer/storage/in_memory_storage.rb', line 26

def clear
  @mutex.synchronize { @queries.clear }
end

#filter(limit: 100, table_filter: nil, request_id: nil, min_duration: nil) ⇒ Object

Get recent queries, optionally filtered



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/dbviewer/storage/in_memory_storage.rb', line 31

def filter(limit: 100, table_filter: nil, request_id: nil, min_duration: nil)
  result = all

  # Apply filters if provided
  result = filter_by_table(result, table_filter) if table_filter.present?
  result = filter_by_request_id(result, request_id) if request_id.present?
  result = filter_by_duration(result, min_duration) if min_duration.present?

  # Return most recent queries first, limited to requested amount
  result.reverse.first(limit)
end