Class: Dbviewer::CacheManager
- Inherits:
-
Object
- Object
- Dbviewer::CacheManager
- 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
-
#clear_all ⇒ Object
Clear all caches - useful when schema changes are detected.
-
#get_columns(table_name) ⇒ Array<Hash>?
Get column information from cache.
-
#get_metadata(table_name) ⇒ Hash?
Get table metadata from cache.
-
#get_model(table_name) ⇒ Class?
Get a model from cache or return nil.
-
#initialize(config = nil) ⇒ CacheManager
constructor
Initialize the cache manager.
-
#reset_if_needed ⇒ Object
Reset caches if they’ve been around too long.
-
#store_columns(table_name, columns) ⇒ Object
Store column information in cache.
-
#store_metadata(table_name, metadata) ⇒ Object
Store table metadata in cache.
-
#store_model(table_name, model) ⇒ Object
Store a model in the cache.
Constructor Details
#initialize(config = nil) ⇒ CacheManager
Initialize the cache manager
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_all ⇒ Object
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
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
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
18 19 20 |
# File 'lib/dbviewer/cache_manager.rb', line 18 def get_model(table_name) @dynamic_models[table_name] end |
#reset_if_needed ⇒ Object
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
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
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
25 26 27 |
# File 'lib/dbviewer/cache_manager.rb', line 25 def store_model(table_name, model) @dynamic_models[table_name] = model end |