class PgDice::Configuration
Configuration
class which holds all configurable values
Attributes
approved_tables[W]
batch_size[W]
config_file[RW]
config_file_loader[W]
database_url[W]
dry_run[W]
logger[W]
logger_factory[W]
pg_connection[W]
Public Class Methods
new(existing_config = nil)
click to toggle source
# File lib/pgdice/configuration.rb, line 33 def initialize(existing_config = nil) DEFAULT_VALUES.each do |key, value| initialize_value(key, value, existing_config) end @approved_tables = PgDice::ApprovedTables.new(existing_config&.approved_tables(eager_load: true)&.tables) initialize_objects end
Public Instance Methods
approved_tables(eager_load: false)
click to toggle source
# File lib/pgdice/configuration.rb, line 60 def approved_tables(eager_load: false) return @approved_tables if eager_load unless @approved_tables.respond_to?(:empty?) raise PgDice::InvalidConfigurationError, 'approved_tables must be an instance of PgDice::ApprovedTables!' end if !config_file_loader.file_loaded? && config_file.present? config_file_loader.load_file @approved_tables end @approved_tables end
batch_size()
click to toggle source
# File lib/pgdice/configuration.rb, line 82 def batch_size return @batch_size.to_i if @batch_size.to_i >= 0 raise PgDice::InvalidConfigurationError, 'batch_size must be a non-negative Integer!' end
config_file_loader()
click to toggle source
# File lib/pgdice/configuration.rb, line 94 def config_file_loader @config_file_loader ||= ConfigurationFileLoader.new(self) end
database_connection()
click to toggle source
# File lib/pgdice/configuration.rb, line 114 def database_connection @database_connection_factory.call end
database_url()
click to toggle source
# File lib/pgdice/configuration.rb, line 54 def database_url return @database_url unless @database_url.nil? raise PgDice::InvalidConfigurationError, 'database_url must be present!' end
deep_clone()
click to toggle source
# File lib/pgdice/configuration.rb, line 118 def deep_clone PgDice::Configuration.new(self) end
dry_run()
click to toggle source
# File lib/pgdice/configuration.rb, line 88 def dry_run return @dry_run if [true, false].include?(@dry_run) raise PgDice::InvalidConfigurationError, 'dry_run must be either true or false!' end
logger()
click to toggle source
# File lib/pgdice/configuration.rb, line 98 def logger @logger ||= logger_factory.call end
logger_factory()
click to toggle source
# File lib/pgdice/configuration.rb, line 48 def logger_factory return @logger_factory if @logger_factory.respond_to?(:call) raise PgDice::InvalidConfigurationError, 'logger_factory must be present!' end
partition_helper()
click to toggle source
# File lib/pgdice/configuration.rb, line 106 def partition_helper @partition_helper_factory.call end
partition_manager()
click to toggle source
# File lib/pgdice/configuration.rb, line 102 def partition_manager @partition_manager_factory.call end
pg_connection()
click to toggle source
Lazily initialized
# File lib/pgdice/configuration.rb, line 75 def pg_connection @pg_connection ||= PG::Connection.new(database_url) return @pg_connection if @pg_connection.respond_to?(:exec) raise PgDice::InvalidConfigurationError, 'pg_connection must be present!' end
validate!()
click to toggle source
# File lib/pgdice/configuration.rb, line 41 def validate! logger_factory database_url batch_size approved_tables end
validation()
click to toggle source
# File lib/pgdice/configuration.rb, line 110 def validation @validation_factory.call end
Private Instance Methods
initialize_objects()
click to toggle source
# File lib/pgdice/configuration.rb, line 128 def initialize_objects @partition_manager_factory = PgDice::PartitionManagerFactory.new(self) @partition_helper_factory = PgDice::PartitionHelperFactory.new(self) @validation_factory = PgDice::ValidationFactory.new(self) @database_connection_factory = PgDice::DatabaseConnectionFactory.new(self) end
initialize_value(variable_name, default_value, existing_configuration)
click to toggle source
# File lib/pgdice/configuration.rb, line 124 def initialize_value(variable_name, default_value, existing_configuration) instance_variable_set("@#{variable_name}", existing_configuration&.send(variable_name)&.clone || default_value) end