Class: PartitionGardener::ChildColumnAlign
- Inherits:
-
Object
- Object
- PartitionGardener::ChildColumnAlign
- Defined in:
- lib/partition_gardener/child_column_align.rb
Defined Under Namespace
Classes: Column
Class Method Summary collapse
Instance Method Summary collapse
- #align!(parent_table, child_table) ⇒ Object
-
#initialize(connection: Connection.connection) ⇒ ChildColumnAlign
constructor
A new instance of ChildColumnAlign.
- #lagging_child_warnings(parent_table, candidate_table: nil) ⇒ Object
- #missing_ordinary_columns(parent_table, child_table) ⇒ Object
Constructor Details
#initialize(connection: Connection.connection) ⇒ ChildColumnAlign
Returns a new instance of ChildColumnAlign.
16 17 18 |
# File 'lib/partition_gardener/child_column_align.rb', line 16 def initialize(connection: Connection.connection) @connection = connection end |
Class Method Details
.lagging_child_warnings(parent_table, connection: Connection.connection, candidate_table: nil) ⇒ Object
12 13 14 |
# File 'lib/partition_gardener/child_column_align.rb', line 12 def self.lagging_child_warnings(parent_table, connection: Connection.connection, candidate_table: nil) new(connection: connection).lagging_child_warnings(parent_table, candidate_table: candidate_table) end |
Instance Method Details
#align!(parent_table, child_table) ⇒ Object
20 21 22 23 |
# File 'lib/partition_gardener/child_column_align.rb', line 20 def align!(parent_table, child_table) missing = missing_ordinary_columns(parent_table, child_table) add_columns!(child_table, missing) if missing.any? end |
#lagging_child_warnings(parent_table, candidate_table: nil) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/partition_gardener/child_column_align.rb', line 25 def lagging_child_warnings(parent_table, candidate_table: nil) child_tables = unattached_child_tables(parent_table) child_tables.select!(&candidate_table) if candidate_table columns_by_table = ordinary_columns_by_table([parent_table, *child_tables]) parent_columns = columns_by_table.fetch(parent_table, []) child_tables.filter_map do |child_table| missing = missing_columns(parent_columns, columns_by_table.fetch(child_table, [])) next if missing.empty? missing_columns_warning(child_table, parent_table, missing) end end |
#missing_ordinary_columns(parent_table, child_table) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/partition_gardener/child_column_align.rb', line 39 def missing_ordinary_columns(parent_table, child_table) columns_by_table = ordinary_columns_by_table([parent_table, child_table]) missing_columns( columns_by_table.fetch(parent_table, []), columns_by_table.fetch(child_table, []) ) end |