Class: Bemi::Changeset

Inherits:
ApplicationRecord show all
Defined in:
app/models/bemi/changeset.rb

Constant Summary collapse

ACTION_DELETE =
'delete'
ACTION_UPDATE =
'update'

Instance Method Summary collapse

Instance Method Details

#diffObject



7
8
9
10
11
# File 'app/models/bemi/changeset.rb', line 7

def diff
  values_after.each_with_object({}) do |(k, v), memo|
    memo[k] = [values_before[k], v] if values_before[k] != v
  end
end

#pretty_printObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/models/bemi/changeset.rb', line 13

def pretty_print
  formatted_diff =
    case action
    when ACTION_DELETE
      values_before
    when ACTION_UPDATE
      diff
    else
      values_after
    end

  formatted_context = <<-EOF
- context:
  #{context.data.map { |k, v| "- #{k}: #{v.inspect}" }.join("\n    ")}
EOF

  puts <<-EOF
Bemi::Changeset
- id: #{id.inspect}
- table: #{table.inspect}
- external_id: #{external_id.inspect}
- action: #{action.inspect}
- committed_at: #{committed_at.inspect}
- change:
  #{formatted_diff.map { |k, v| "- #{k}: #{v.inspect}" }.join("\n    ")}
#{context ? formatted_context : ''}
EOF
end