Class: Wal::Replicator::Table
- Inherits:
-
Object
- Object
- Wal::Replicator::Table
- Defined in:
- lib/wal/replicator.rb
Instance Method Summary collapse
- #decode_row(values, existing_data = {}) ⇒ Object
- #full_table_name ⇒ Object
- #primary_key(decoded_row) ⇒ Object
Instance Method Details
#decode_row(values, existing_data = {}) ⇒ Object
415 416 417 418 419 420 |
# File 'lib/wal/replicator.rb', line 415 def decode_row(values, existing_data = {}) values .zip(columns) .map { |tuple, col| [col.name, tuple.toast? ? existing_data[col.name] : col.decode(tuple.data)] } .to_h end |
#full_table_name ⇒ Object
388 389 390 391 392 393 394 395 |
# File 'lib/wal/replicator.rb', line 388 def full_table_name case schema in "public" name else "#{schema}.#{name}" end end |
#primary_key(decoded_row) ⇒ Object
397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 |
# File 'lib/wal/replicator.rb', line 397 def primary_key(decoded_row) return nil if primary_key_columns.empty? values = primary_key_columns.filter_map do |col_name| value = decoded_row[col_name] case value when Integer, String value else nil end end return nil if values.size != primary_key_columns.size values.size == 1 ? values.first : values end |