Class: Dbviewer::Database::CacheManager
- Inherits:
-
Object
- Object
- Dbviewer::Database::CacheManager
- Defined in:
- lib/dbviewer/database/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(cache_expiry = 300) ⇒ 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(cache_expiry = 300) ⇒ CacheManager
Initialize the cache manager
8 9 10 11 12 13 14 |
# File 'lib/dbviewer/database/cache_manager.rb', line 8 def initialize(cache_expiry = 300) @cache_expiry = cache_expiry @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
69 70 71 72 73 74 75 |
# File 'lib/dbviewer/database/cache_manager.rb', line 69 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
33 34 35 |
# File 'lib/dbviewer/database/cache_manager.rb', line 33 def get_columns(table_name) @table_columns_cache[table_name] end |
#get_metadata(table_name) ⇒ Hash?
Get table metadata from cache
47 48 49 |
# File 'lib/dbviewer/database/cache_manager.rb', line 47 def (table_name) @table_metadata_cache[table_name] end |
#get_model(table_name) ⇒ Class?
Get a model from cache or return nil
19 20 21 |
# File 'lib/dbviewer/database/cache_manager.rb', line 19 def get_model(table_name) @dynamic_models[table_name] end |
#reset_if_needed ⇒ Object
Reset caches if they’ve been around too long
59 60 61 62 63 64 65 66 |
# File 'lib/dbviewer/database/cache_manager.rb', line 59 def reset_if_needed 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
40 41 42 |
# File 'lib/dbviewer/database/cache_manager.rb', line 40 def store_columns(table_name, columns) @table_columns_cache[table_name] = columns end |
#store_metadata(table_name, metadata) ⇒ Object
Store table metadata in cache
54 55 56 |
# File 'lib/dbviewer/database/cache_manager.rb', line 54 def (table_name, ) @table_metadata_cache[table_name] = end |
#store_model(table_name, model) ⇒ Object
Store a model in the cache
26 27 28 |
# File 'lib/dbviewer/database/cache_manager.rb', line 26 def store_model(table_name, model) @dynamic_models[table_name] = model end |