def log_replication_outcome(diff, outcome, details = nil)
table = diff.changes[:left].table
key = diff.changes[:left].key
if key.size == 1
key = key.values[0]
else
key_parts = session.left.primary_key_names(table).map do |column_name|
%Q("#{column_name}"=>#{key[column_name].to_s.inspect})
end
key = key_parts.join(', ')
end
rep_outcome, rep_details = fit_description_columns(outcome, details)
diff_dump = diff.to_yaml[0...ReplicationInitializer::DIFF_DUMP_SIZE]
session.left.insert_record "#{options[:rep_prefix]}_logged_events", {
:activity => 'replication',
:change_table => table,
:diff_type => diff.type.to_s,
:change_key => key,
:left_change_type => (diff.changes[:left] ? diff.changes[:left].type.to_s : nil),
:right_change_type => (diff.changes[:right] ? diff.changes[:right].type.to_s : nil),
:description => rep_outcome,
:long_description => rep_details,
:event_time => Time.now,
:diff_dump => diff_dump
}
end