Class: Dbviewer::Database::DynamicModelFactory

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

Overview

DynamicModelFactory creates and manages ActiveRecord models for database tables

Instance Method Summary collapse

Constructor Details

#initialize(connection, cache_manager) ⇒ DynamicModelFactory

Initialize with a connection and cache manager

Parameters:

  • connection (ActiveRecord::ConnectionAdapters::AbstractAdapter)

    Database connection

  • cache_manager (Dbviewer::Database::CacheManager)

    Cache manager instance



8
9
10
11
# File 'lib/dbviewer/database/dynamic_model_factory.rb', line 8

def initialize(connection, cache_manager)
  @connection = connection
  @cache_manager = cache_manager
end

Instance Method Details

#get_model_for(table_name) ⇒ Class

Get or create an ActiveRecord model for a table

Parameters:

  • table_name (String)

    Name of the table

Returns:

  • (Class)

    ActiveRecord model class for the table



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

def get_model_for(table_name)
  cached_model = @cache_manager.get_model(table_name)
  return cached_model if cached_model

  model = create_model_for(table_name)
  @cache_manager.store_model(table_name, model)
  model
end