Class: Pgoutput::Client::SlotStatus

Inherits:
SlotStatusData show all
Defined in:
lib/pgoutput/client/slot_status.rb,
sig/pgoutput/client/slot_status.rbs

Overview

Typed replication-slot catalog snapshot.

Instance Attribute Summary

Attributes inherited from SlotStatusData

#active, #active_pid, #catalog_xmin, #confirmed_flush_lsn, #conflicting, #database, #inactive_since, #invalidation_reason, #plugin, #restart_lsn, #retained_wal_bytes, #safe_wal_size, #slot_name, #slot_type, #wal_status

Class Method Summary collapse

Methods inherited from SlotStatusData

new

Class Method Details

.from_catalog(attributes) ⇒ SlotStatus

Build a snapshot from a pg_replication_slots JSON object.

Parameters:

  • attributes (Hash{String, Symbol=>Object})

    catalog attributes

Returns:



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/pgoutput/client/slot_status.rb', line 39

def self.from_catalog(attributes)
  value = ->(key) { attributes.fetch(key) { attributes[key.to_sym] } }

  new(
    slot_name: value.call("slot_name"), plugin: value.call("plugin"),
    slot_type: value.call("slot_type"), database: value.call("database"),
    active: value.call("active") == true, active_pid: value.call("active_pid"),
    catalog_xmin: value.call("catalog_xmin"), restart_lsn: value.call("restart_lsn"),
    confirmed_flush_lsn: value.call("confirmed_flush_lsn"),
    retained_wal_bytes: value.call("retained_wal_bytes"),
    wal_status: value.call("wal_status"), safe_wal_size: value.call("safe_wal_size"),
    inactive_since: value.call("inactive_since"), conflicting: value.call("conflicting"),
    invalidation_reason: value.call("invalidation_reason")
  )
end