Class: Wal::Replicator::Table

Inherits:
Object
  • Object
show all
Defined in:
lib/wal/replicator.rb

Instance Method Summary collapse

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_nameObject



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