Class: Dbviewer::CacheManager

Inherits:
Object
  • Object
show all
Defined in:
lib/dbviewer/cache_manager.rb

Overview

CacheManager handles caching concerns for the DatabaseManager It provides an abstraction layer for managing caches efficiently

Instance Method Summary collapse

Constructor Details

#initialize(config = nil) ⇒ CacheManager

Initialize the cache manager

Parameters:



7
8
9
10
11
12
13
# File 'lib/dbviewer/cache_manager.rb', line 7

def initialize(config = nil)
  @config = config || Dbviewer.configuration
  @dynamic_models = {}
  @table_columns_cache = {}
  @table_metadata_cache = {}
  @cache_last_reset = Time.now
end

Instance Method Details

#clear_allObject

Clear all caches - useful when schema changes are detected



70
71
72
73
74
75
76
# File 'lib/dbviewer/cache_manager.rb', line 70

def clear_all
  @dynamic_models = {}
  @table_columns_cache = {}
  @table_metadata_cache = {}
  @cache_last_reset = Time.now
  Rails.logger.debug("[DBViewer] All caches cleared")
end

#get_columns(table_name) ⇒ Array<Hash>?

Get column information from cache

Parameters:

  • table_name (String)

    Name of the table

Returns:

  • (Array<Hash>, nil)

    The cached column information or nil if not found



32
33
34
# File 'lib/dbviewer/cache_manager.rb', line 32

def get_columns(table_name)
  @table_columns_cache[table_name]
end

#get_metadata(table_name) ⇒ Hash?

Get table metadata from cache

Parameters:

  • table_name (String)

    Name of the table

Returns:

  • (Hash, nil)

    The cached metadata or nil if not found



46
47
48
# File 'lib/dbviewer/cache_manager.rb', line 46

def (table_name)
  @table_metadata_cache[table_name]
end

#get_model(table_name) ⇒ Class?

Get a model from cache or return nil

Parameters:

  • table_name (String)

    Name of the table

Returns:

  • (Class, nil)

    The cached model or nil if not found



18
19
20
# File 'lib/dbviewer/cache_manager.rb', line 18

def get_model(table_name)
  @dynamic_models[table_name]
end

#reset_if_neededObject

Reset caches if they’ve been around too long



58
59
60
61
62
63
64
65
66
67
# File 'lib/dbviewer/cache_manager.rb', line 58

def reset_if_needed
  cache_expiry = @config.cache_expiry || 300

  if Time.now - @cache_last_reset > cache_expiry
    @table_columns_cache = {}
    @table_metadata_cache = {}
    @cache_last_reset = Time.now
    Rails.logger.debug("[DBViewer] Cache reset due to expiry after #{cache_expiry} seconds")
  end
end

#store_columns(table_name, columns) ⇒ Object

Store column information in cache

Parameters:

  • table_name (String)

    Name of the table

  • columns (Array<Hash>)

    Column information



39
40
41
# File 'lib/dbviewer/cache_manager.rb', line 39

def store_columns(table_name, columns)
  @table_columns_cache[table_name] = columns
end

#store_metadata(table_name, metadata) ⇒ Object

Store table metadata in cache

Parameters:

  • table_name (String)

    Name of the table

  • metadata (Hash)

    Table metadata



53
54
55
# File 'lib/dbviewer/cache_manager.rb', line 53

def (table_name, )
  @table_metadata_cache[table_name] = 
end

#store_model(table_name, model) ⇒ Object

Store a model in the cache

Parameters:

  • table_name (String)

    Name of the table

  • model (Class)

    ActiveRecord model class



25
26
27
# File 'lib/dbviewer/cache_manager.rb', line 25

def store_model(table_name, model)
  @dynamic_models[table_name] = model
end